From cd1f082179a3fa9d5b2d1a60b25056e553dc8cf1 Mon Sep 17 00:00:00 2001 From: Dave Chen Date: Wed, 7 Dec 2022 17:20:18 +0800 Subject: [PATCH] kubeadm: backup the kubelet config file before writting the new one This addresses the TODO item so that the old kubelet config file could be recovered if something goes wrong. Signed-off-by: Dave Chen --- .../app/cmd/phases/upgrade/node/kubeletconfig.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go b/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go index b2652dac2da..0a572a90a72 100644 --- a/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go +++ b/cmd/kubeadm/app/cmd/phases/upgrade/node/kubeletconfig.go @@ -71,8 +71,17 @@ func runKubeletConfigPhase() func(c workflow.RunData) error { return err } - // TODO: Checkpoint the current configuration first so that if something goes wrong it can be recovered - + // Create a copy of the kubelet config file in the /etc/kubernetes/tmp/ folder. + backupDir, err := constants.CreateTempDirForKubeadm(constants.KubernetesDir, "kubeadm-kubelet-config") + if err != nil { + return err + } + src := filepath.Join(kubeletDir, constants.KubeletConfigurationFileName) + dest := filepath.Join(backupDir, constants.KubeletConfigurationFileName) + fmt.Printf("[upgrade] backing up kubelet config file to %s\n", dest) + if err := os.Rename(src, dest); err != nil { + return errors.Wrap(err, "error backing up the kubelet config file") + } // Store the kubelet component configuration. if err = kubeletphase.WriteConfigToDisk(&cfg.ClusterConfiguration, kubeletDir, data.PatchesDir(), data.OutputWriter()); err != nil { return err