From 5e4e3b2fb032c9b6c0fdaaa0ccc01e9a8708f307 Mon Sep 17 00:00:00 2001 From: Iago Lopez Galeiras Date: Mon, 28 Jun 2021 16:53:07 +0200 Subject: [PATCH] cluster/apply: honor --upgrade-kubelets It was being ignored and kubelets were being upgraded no matter what. --- cli/cmd/cluster/apply.go | 2 +- cli/cmd/cluster/certificate-rotator.go | 4 +++- cli/cmd/cluster/cluster.go | 7 ++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/cli/cmd/cluster/apply.go b/cli/cmd/cluster/apply.go index bc74e9b7b..6099292a0 100644 --- a/cli/cmd/cluster/apply.go +++ b/cli/cmd/cluster/apply.go @@ -130,7 +130,7 @@ func Apply(contextLogger *log.Entry, options ApplyOptions) error { if exists && !options.SkipControlPlaneUpdate && !c.platform.Meta().Managed { fmt.Printf("\nEnsuring that cluster controlplane is up to date.\n") - if err := c.upgradeControlPlane(contextLogger, kubeconfig); err != nil { + if err := c.upgradeControlPlane(contextLogger, kubeconfig, options.UpgradeKubelets); err != nil { return fmt.Errorf("running controlplane upgrade: %v", err) } } diff --git a/cli/cmd/cluster/certificate-rotator.go b/cli/cmd/cluster/certificate-rotator.go index af3f35c28..4ca448080 100644 --- a/cli/cmd/cluster/certificate-rotator.go +++ b/cli/cmd/cluster/certificate-rotator.go @@ -99,7 +99,9 @@ func rotateControlPlaneCerts(contextLogger *log.Entry, cc clusterConfig) error { contextLogger.Log(log.InfoLevel, "Applying a controlplane update with the new CA") - if err := c.upgradeControlPlane(contextLogger, kubeconfig); err != nil { + upgradeKubelets := true + + if err := c.upgradeControlPlane(contextLogger, kubeconfig, upgradeKubelets); err != nil { return fmt.Errorf("running controlplane upgrade: %v", err) } diff --git a/cli/cmd/cluster/cluster.go b/cli/cmd/cluster/cluster.go index fea2c9eb5..76e5fa9b5 100644 --- a/cli/cmd/cluster/cluster.go +++ b/cli/cmd/cluster/cluster.go @@ -117,7 +117,7 @@ func (cc clusterConfig) initialize(contextLogger *log.Entry) (*cluster, error) { // upgradeControlPlane unpacks the controlplane charts for a given platform // into user assets on disk. -func (c *cluster) upgradeControlPlane(contextLogger *log.Entry, kubeconfig []byte) error { +func (c *cluster) upgradeControlPlane(contextLogger *log.Entry, kubeconfig []byte, upgradeKubelets bool) error { cu := controlplaneUpdater{ kubeconfig: kubeconfig, assetDir: c.assetDir, @@ -130,6 +130,11 @@ func (c *cluster) upgradeControlPlane(contextLogger *log.Entry, kubeconfig []byt } for _, cpChart := range c.platform.Meta().ControlplaneCharts { + // Skip kubelet if the user doesn't want to upgrade it. + if cpChart.Name == platform.KubeletChartName && !upgradeKubelets { + continue + } + if err := cu.upgradeComponent(cpChart.Name, cpChart.Namespace); err != nil { return fmt.Errorf("upgrading controlplane component %q: %w", cpChart.Name, err) }