Skip to content

Commit d1adbee

Browse files
committed
fix: Retain existing join and init kubeadm config when adding taints
Previously a dodgy piece of logic overwrote the whole of the join and init kubeadm config when adding taints due to an incorrect `!=` which should have been `==`.
1 parent 6a2fe32 commit d1adbee

File tree

4 files changed

+32
-35
lines changed

4 files changed

+32
-35
lines changed

common/pkg/testutils/capitest/request/items.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,11 @@ func NewKubeadmConfigTemplateRequest(
6969
Spec: bootstrapv1.KubeadmConfigSpec{
7070
PostKubeadmCommands: []string{"initial-post-kubeadm"},
7171
JoinConfiguration: &bootstrapv1.JoinConfiguration{
72-
NodeRegistration: bootstrapv1.NodeRegistrationOptions{},
72+
NodeRegistration: bootstrapv1.NodeRegistrationOptions{
73+
KubeletExtraArgs: map[string]string{
74+
"cloud-provider": "external",
75+
},
76+
},
7377
},
7478
},
7579
},
@@ -112,10 +116,18 @@ func (b *KubeadmControlPlaneTemplateRequestItemBuilder) NewRequest(
112116
Spec: controlplanev1.KubeadmControlPlaneTemplateResourceSpec{
113117
KubeadmConfigSpec: bootstrapv1.KubeadmConfigSpec{
114118
InitConfiguration: &bootstrapv1.InitConfiguration{
115-
NodeRegistration: bootstrapv1.NodeRegistrationOptions{},
119+
NodeRegistration: bootstrapv1.NodeRegistrationOptions{
120+
KubeletExtraArgs: map[string]string{
121+
"cloud-provider": "external",
122+
},
123+
},
116124
},
117125
JoinConfiguration: &bootstrapv1.JoinConfiguration{
118-
NodeRegistration: bootstrapv1.NodeRegistrationOptions{},
126+
NodeRegistration: bootstrapv1.NodeRegistrationOptions{
127+
KubeletExtraArgs: map[string]string{
128+
"cloud-provider": "external",
129+
},
130+
},
119131
},
120132
Files: b.files,
121133
},

pkg/handlers/generic/mutation/imageregistries/credentials/inject_test.go

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -235,18 +235,14 @@ var _ = Describe("Generate Image registry patches", func() {
235235
),
236236
},
237237
{
238-
Operation: "add",
239-
Path: "/spec/template/spec/kubeadmConfigSpec/initConfiguration/nodeRegistration/kubeletExtraArgs",
240-
ValueMatcher: gomega.HaveKeyWithValue(
241-
"image-credential-provider-bin-dir",
242-
"/etc/kubernetes/image-credential-provider/",
243-
),
238+
Operation: "add",
239+
Path: "/spec/template/spec/kubeadmConfigSpec/initConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-bin-dir", //nolint:lll // Just a long line.
240+
ValueMatcher: gomega.Equal("/etc/kubernetes/image-credential-provider/"),
244241
},
245242
{
246243
Operation: "add",
247-
Path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs",
248-
ValueMatcher: gomega.HaveKeyWithValue(
249-
"image-credential-provider-config",
244+
Path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-config", //nolint:lll // Just a long line.
245+
ValueMatcher: gomega.Equal(
250246
"/etc/kubernetes/image-credential-provider-config.yaml",
251247
),
252248
},
@@ -298,18 +294,14 @@ var _ = Describe("Generate Image registry patches", func() {
298294
),
299295
},
300296
{
301-
Operation: "add",
302-
Path: "/spec/template/spec/kubeadmConfigSpec/initConfiguration/nodeRegistration/kubeletExtraArgs",
303-
ValueMatcher: gomega.HaveKeyWithValue(
304-
"image-credential-provider-bin-dir",
305-
"/etc/kubernetes/image-credential-provider/",
306-
),
297+
Operation: "add",
298+
Path: "/spec/template/spec/kubeadmConfigSpec/initConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-bin-dir", //nolint:lll // Just a long line.
299+
ValueMatcher: gomega.Equal("/etc/kubernetes/image-credential-provider/"),
307300
},
308301
{
309302
Operation: "add",
310-
Path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs",
311-
ValueMatcher: gomega.HaveKeyWithValue(
312-
"image-credential-provider-config",
303+
Path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-config", //nolint:lll // Just a long line.
304+
ValueMatcher: gomega.Equal(
313305
"/etc/kubernetes/image-credential-provider-config.yaml",
314306
),
315307
},
@@ -362,12 +354,9 @@ var _ = Describe("Generate Image registry patches", func() {
362354
),
363355
},
364356
{
365-
Operation: "add",
366-
Path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs",
367-
ValueMatcher: gomega.HaveKeyWithValue(
368-
"image-credential-provider-bin-dir",
369-
"/etc/kubernetes/image-credential-provider/",
370-
),
357+
Operation: "add",
358+
Path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-bin-dir", //nolint:lll // Just a long line.
359+
ValueMatcher: gomega.Equal("/etc/kubernetes/image-credential-provider/"),
371360
},
372361
},
373362
},
@@ -426,11 +415,7 @@ var _ = Describe("Generate Image registry patches", func() {
426415
},
427416
{
428417
Operation: "add",
429-
Path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs",
430-
ValueMatcher: gomega.HaveKeyWithValue(
431-
"image-credential-provider-bin-dir",
432-
"/etc/kubernetes/image-credential-provider/",
433-
),
418+
Path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-bin-dir", //nolint:lll // Just a long line.
434419
},
435420
},
436421
},

pkg/handlers/generic/mutation/taints/inject_controlplane.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,10 @@ func (h *taintsControlPlanePatchHandler) Mutate(
8585
"patchedObjectKind", obj.GetObjectKind().GroupVersionKind().String(),
8686
"patchedObjectName", ctrlclient.ObjectKeyFromObject(obj),
8787
).Info("adding taints to worker node kubeadm config template")
88-
if obj.Spec.Template.Spec.KubeadmConfigSpec.InitConfiguration != nil {
88+
if obj.Spec.Template.Spec.KubeadmConfigSpec.InitConfiguration == nil {
8989
obj.Spec.Template.Spec.KubeadmConfigSpec.InitConfiguration = &bootstrapv1.InitConfiguration{}
9090
}
91-
if obj.Spec.Template.Spec.KubeadmConfigSpec.JoinConfiguration != nil {
91+
if obj.Spec.Template.Spec.KubeadmConfigSpec.JoinConfiguration == nil {
9292
obj.Spec.Template.Spec.KubeadmConfigSpec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
9393
}
9494
obj.Spec.Template.Spec.KubeadmConfigSpec.InitConfiguration.NodeRegistration.Taints = toCoreTaints(

pkg/handlers/generic/mutation/taints/inject_worker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func (h *taintsWorkerPatchHandler) Mutate(
8787
"patchedObjectKind", obj.GetObjectKind().GroupVersionKind().String(),
8888
"patchedObjectName", ctrlclient.ObjectKeyFromObject(obj),
8989
).Info("adding taints to worker node kubeadm config template")
90-
if obj.Spec.Template.Spec.JoinConfiguration != nil {
90+
if obj.Spec.Template.Spec.JoinConfiguration == nil {
9191
obj.Spec.Template.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
9292
}
9393
obj.Spec.Template.Spec.JoinConfiguration.NodeRegistration.Taints = toCoreTaints(

0 commit comments

Comments
 (0)