From 85fb6b01f8d75af2970d78ba8253838aa63bc380 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Mon, 6 Jun 2022 17:57:39 +0300 Subject: [PATCH] kubeadm: apply patches to the kubelet config before writing it to disk In phases/kubelet/WriteConfigToDisk() create a patch manager for the root patches directory and apply the user patches with a target "kubeletconfiguration". --- cmd/kubeadm/app/phases/kubelet/config.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/cmd/kubeadm/app/phases/kubelet/config.go b/cmd/kubeadm/app/phases/kubelet/config.go index 5ec7dcb3c3a..c01e9081b66 100644 --- a/cmd/kubeadm/app/phases/kubelet/config.go +++ b/cmd/kubeadm/app/phases/kubelet/config.go @@ -29,12 +29,14 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/version" clientset "k8s.io/client-go/kubernetes" + kubeletconfig "k8s.io/kubelet/config/v1beta1" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" "k8s.io/kubernetes/cmd/kubeadm/app/componentconfigs" kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" "k8s.io/kubernetes/cmd/kubeadm/app/features" "k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient" + "k8s.io/kubernetes/cmd/kubeadm/app/util/patches" ) // WriteConfigToDisk writes the kubelet config object down to a file @@ -54,6 +56,25 @@ func WriteConfigToDisk(cfg *kubeadmapi.ClusterConfiguration, kubeletDir, patches return err } + // Apply patches to the KubeletConfiguration + if len(patchesDir) != 0 { + target := "kubeletconfiguration" + knownTargets := []string{target} + patchManager, err := patches.GetPatchManagerForPath(patchesDir, knownTargets, output) + if err != nil { + return err + } + patchTarget := &patches.PatchTarget{ + Name: target, + StrategicMergePatchObject: kubeletconfig.KubeletConfiguration{}, + Data: kubeletBytes, + } + if err := patchManager.ApplyPatchesToTarget(patchTarget); err != nil { + return err + } + kubeletBytes = patchTarget.Data + } + return writeConfigBytesToDisk(kubeletBytes, kubeletDir) }