Skip to content

Commit 46c8fea

Browse files
authored
Merge pull request #796 from dmvolod/issue-787
🐛 CAPI operator incorrectly finds the manager container if the number of containers is greater than one
2 parents 4eb0711 + f3061d9 commit 46c8fea

File tree

2 files changed

+47
-22
lines changed

2 files changed

+47
-22
lines changed

internal/controller/component_customizer.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,14 @@ func customizeDeploymentSpec(dSpec operatorv1.DeploymentSpec, d *appsv1.Deployme
179179
// findManagerContainer finds manager container in the provider deployment.
180180
func findManagerContainer(dSpec *appsv1.DeploymentSpec) *corev1.Container {
181181
for ic := range dSpec.Template.Spec.Containers {
182-
return &dSpec.Template.Spec.Containers[ic]
182+
if dSpec.Template.Spec.Containers[ic].Name == managerContainerName {
183+
return &dSpec.Template.Spec.Containers[ic]
184+
}
185+
}
186+
187+
// This is for backward compatibility before fixing the issue https://github.com/kubernetes-sigs/cluster-api-operator/issues/787
188+
if len(dSpec.Template.Spec.Containers) > 0 {
189+
return &dSpec.Template.Spec.Containers[0]
183190
}
184191

185192
return nil

internal/controller/component_customizer_test.go

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -49,33 +49,39 @@ func TestCustomizeDeployment(t *testing.T) {
4949
Name: "manager",
5050
},
5151
Spec: corev1.PodSpec{
52-
Containers: []corev1.Container{{
53-
Name: "manager",
54-
Image: "registry.k8s.io/a-manager:1.6.2",
55-
Env: []corev1.EnvVar{
56-
{
57-
Name: "test1",
58-
Value: "value1",
59-
},
52+
Containers: []corev1.Container{
53+
{
54+
Name: "kube-rbac-proxy",
55+
Image: "registry.k8s.io/a-kube-rbac-proxy:v0.13.1",
6056
},
61-
Args: []string{"--webhook-port=2345"},
62-
LivenessProbe: &corev1.Probe{
63-
ProbeHandler: corev1.ProbeHandler{
64-
HTTPGet: &corev1.HTTPGetAction{
65-
Path: "/healthz",
66-
Port: intstr.FromString("healthz"),
57+
{
58+
Name: "manager",
59+
Image: "registry.k8s.io/a-manager:1.6.2",
60+
Env: []corev1.EnvVar{
61+
{
62+
Name: "test1",
63+
Value: "value1",
6764
},
6865
},
69-
},
70-
ReadinessProbe: &corev1.Probe{
71-
ProbeHandler: corev1.ProbeHandler{
72-
HTTPGet: &corev1.HTTPGetAction{
73-
Path: "/readyz",
74-
Port: intstr.FromString("healthz"),
66+
Args: []string{"--webhook-port=2345"},
67+
LivenessProbe: &corev1.Probe{
68+
ProbeHandler: corev1.ProbeHandler{
69+
HTTPGet: &corev1.HTTPGetAction{
70+
Path: "/healthz",
71+
Port: intstr.FromString("healthz"),
72+
},
73+
},
74+
},
75+
ReadinessProbe: &corev1.Probe{
76+
ProbeHandler: corev1.ProbeHandler{
77+
HTTPGet: &corev1.HTTPGetAction{
78+
Path: "/readyz",
79+
Port: intstr.FromString("healthz"),
80+
},
7581
},
7682
},
7783
},
78-
}},
84+
},
7985
},
8086
},
8187
},
@@ -278,6 +284,10 @@ func TestCustomizeDeployment(t *testing.T) {
278284
Template: corev1.PodTemplateSpec{
279285
Spec: corev1.PodSpec{
280286
Containers: []corev1.Container{
287+
{
288+
Name: "kube-rbac-proxy",
289+
Image: "registry.k8s.io/a-kube-rbac-proxy:v0.13.1",
290+
},
281291
{
282292
Name: "manager",
283293
Image: "quay.io/dev/mydns:v3.4.2",
@@ -403,6 +413,10 @@ func TestCustomizeDeployment(t *testing.T) {
403413
},
404414
},
405415
Containers: []corev1.Container{
416+
{
417+
Name: "kube-rbac-proxy",
418+
Image: "registry.k8s.io/a-kube-rbac-proxy:v0.13.1",
419+
},
406420
{
407421
Name: "manager",
408422
Image: "quay.io/dev/mydns:v3.4.2",
@@ -506,6 +520,10 @@ func TestCustomizeDeployment(t *testing.T) {
506520
},
507521
Spec: corev1.PodSpec{
508522
Containers: []corev1.Container{
523+
{
524+
Name: "kube-rbac-proxy",
525+
Image: "registry.k8s.io/a-kube-rbac-proxy:v0.13.1",
526+
},
509527
{
510528
Name: "manager",
511529
Image: "registry.k8s.io/a-manager:1.6.2",

0 commit comments

Comments
 (0)