Skip to content

Commit 654197d

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 654197d

File tree

4 files changed

+59
-30
lines changed

4 files changed

+59
-30
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: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -234,19 +234,27 @@ var _ = Describe("Generate Image registry patches", func() {
234234
"/bin/bash /etc/caren/install-kubelet-credential-providers.sh",
235235
),
236236
},
237+
{
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/"),
241+
},
237242
{
238243
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/",
244+
Path: "/spec/template/spec/kubeadmConfigSpec/initConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-config", //nolint:lll // Just a long line.
245+
ValueMatcher: gomega.Equal(
246+
"/etc/kubernetes/image-credential-provider-config.yaml",
243247
),
244248
},
249+
{
250+
Operation: "add",
251+
Path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-bin-dir", //nolint:lll // Just a long line.
252+
ValueMatcher: gomega.Equal("/etc/kubernetes/image-credential-provider/"),
253+
},
245254
{
246255
Operation: "add",
247-
Path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs",
248-
ValueMatcher: gomega.HaveKeyWithValue(
249-
"image-credential-provider-config",
256+
Path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-config", //nolint:lll // Just a long line.
257+
ValueMatcher: gomega.Equal(
250258
"/etc/kubernetes/image-credential-provider-config.yaml",
251259
),
252260
},
@@ -297,19 +305,27 @@ var _ = Describe("Generate Image registry patches", func() {
297305
"/bin/bash /etc/caren/install-kubelet-credential-providers.sh",
298306
),
299307
},
308+
{
309+
Operation: "add",
310+
Path: "/spec/template/spec/kubeadmConfigSpec/initConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-bin-dir", //nolint:lll // Just a long line.
311+
ValueMatcher: gomega.Equal("/etc/kubernetes/image-credential-provider/"),
312+
},
300313
{
301314
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/",
315+
Path: "/spec/template/spec/kubeadmConfigSpec/initConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-config", //nolint:lll // Just a long line.
316+
ValueMatcher: gomega.Equal(
317+
"/etc/kubernetes/image-credential-provider-config.yaml",
306318
),
307319
},
320+
{
321+
Operation: "add",
322+
Path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-bin-dir", //nolint:lll // Just a long line.
323+
ValueMatcher: gomega.Equal("/etc/kubernetes/image-credential-provider/"),
324+
},
308325
{
309326
Operation: "add",
310-
Path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs",
311-
ValueMatcher: gomega.HaveKeyWithValue(
312-
"image-credential-provider-config",
327+
Path: "/spec/template/spec/kubeadmConfigSpec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-config", //nolint:lll // Just a long line.
328+
ValueMatcher: gomega.Equal(
313329
"/etc/kubernetes/image-credential-provider-config.yaml",
314330
),
315331
},
@@ -362,12 +378,9 @@ var _ = Describe("Generate Image registry patches", func() {
362378
),
363379
},
364380
{
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-
),
381+
Operation: "add",
382+
Path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-bin-dir", //nolint:lll // Just a long line.
383+
ValueMatcher: gomega.Equal("/etc/kubernetes/image-credential-provider/"),
371384
},
372385
},
373386
},
@@ -424,12 +437,16 @@ var _ = Describe("Generate Image registry patches", func() {
424437
"/bin/bash /etc/caren/install-kubelet-credential-providers.sh",
425438
),
426439
},
440+
{
441+
Operation: "add",
442+
Path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-bin-dir", //nolint:lll // Just a long line.
443+
ValueMatcher: gomega.Equal("/etc/kubernetes/image-credential-provider/"),
444+
},
427445
{
428446
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/",
447+
Path: "/spec/template/spec/joinConfiguration/nodeRegistration/kubeletExtraArgs/image-credential-provider-config", //nolint:lll // Just a long line.
448+
ValueMatcher: gomega.Equal(
449+
"/etc/kubernetes/image-credential-provider-config.yaml",
433450
),
434451
},
435452
},

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)