From 872d70363d29b2a469ad78edc4428bd009363409 Mon Sep 17 00:00:00 2001 From: Marco Voelz Date: Fri, 25 Jun 2021 16:48:05 +0200 Subject: [PATCH] Enh/stable worker hash (#4237) * Exclude cri.name `docker` from worker hash calculation Worker pools with `CRI==nil` use `docker` as their container runtime. Changing to an explicit configuration of `docker` should not trigger a node rollout. Therefore, we need to keep the Worker hash stable by excluding the `cri.name` property from hash calculation in this case. Co-authored-by: Max Becker * Merge two if-blocks into single 'and' condition Co-authored-by: Max Becker --- extensions/pkg/controller/worker/machines.go | 3 ++- extensions/pkg/controller/worker/machines_test.go | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/extensions/pkg/controller/worker/machines.go b/extensions/pkg/controller/worker/machines.go index 267fc0700aed..2fe5c13b92cb 100644 --- a/extensions/pkg/controller/worker/machines.go +++ b/extensions/pkg/controller/worker/machines.go @@ -22,6 +22,7 @@ import ( extensionscontroller "github.com/gardener/gardener/extensions/pkg/controller" "github.com/gardener/gardener/extensions/pkg/util" + gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" "github.com/gardener/gardener/pkg/utils" @@ -145,7 +146,7 @@ func WorkerPoolHash(pool extensionsv1alpha1.WorkerPool, cluster *extensionscontr for _, w := range cluster.Shoot.Spec.Provider.Workers { if pool.Name == w.Name { - if w.CRI != nil { + if w.CRI != nil && w.CRI.Name != gardencorev1beta1.CRINameDocker { data = append(data, string(w.CRI.Name)) } } diff --git a/extensions/pkg/controller/worker/machines_test.go b/extensions/pkg/controller/worker/machines_test.go index 47ab6d6e54d9..e71869ab20e3 100644 --- a/extensions/pkg/controller/worker/machines_test.go +++ b/extensions/pkg/controller/worker/machines_test.go @@ -184,6 +184,20 @@ var _ = Describe("Machines", func() { }, }) }) + + It("when changing CRI configuration from `nil` to `docker`", func() { + v, err = WorkerPoolHash(*p, &extensionscontroller.Cluster{ + Shoot: &gardencorev1beta1.Shoot{ + Spec: gardencorev1beta1.ShootSpec{ + Kubernetes: gardencorev1beta1.Kubernetes{ + Version: "1.2.4", + }, + Provider: gardencorev1beta1.Provider{Workers: []gardencorev1beta1.Worker{ + {Name: "test-worker", CRI: &gardencorev1beta1.CRI{Name: gardencorev1beta1.CRINameDocker}}}}, + }, + }, + }) + }) }) Context("hash value should change", func() {