diff --git a/internal/controller/component_customizer.go b/internal/controller/component_customizer.go index 6819b868e..2cb50858a 100644 --- a/internal/controller/component_customizer.go +++ b/internal/controller/component_customizer.go @@ -179,7 +179,14 @@ func customizeDeploymentSpec(dSpec operatorv1.DeploymentSpec, d *appsv1.Deployme // findManagerContainer finds manager container in the provider deployment. func findManagerContainer(dSpec *appsv1.DeploymentSpec) *corev1.Container { for ic := range dSpec.Template.Spec.Containers { - return &dSpec.Template.Spec.Containers[ic] + if dSpec.Template.Spec.Containers[ic].Name == managerContainerName { + return &dSpec.Template.Spec.Containers[ic] + } + } + + // This is for backward compatibility before fixing the issue https://github.com/kubernetes-sigs/cluster-api-operator/issues/787 + if len(dSpec.Template.Spec.Containers) > 0 { + return &dSpec.Template.Spec.Containers[0] } return nil diff --git a/internal/controller/component_customizer_test.go b/internal/controller/component_customizer_test.go index 2593098ad..a95f2b235 100644 --- a/internal/controller/component_customizer_test.go +++ b/internal/controller/component_customizer_test.go @@ -49,33 +49,39 @@ func TestCustomizeDeployment(t *testing.T) { Name: "manager", }, Spec: corev1.PodSpec{ - Containers: []corev1.Container{{ - Name: "manager", - Image: "registry.k8s.io/a-manager:1.6.2", - Env: []corev1.EnvVar{ - { - Name: "test1", - Value: "value1", - }, + Containers: []corev1.Container{ + { + Name: "kube-rbac-proxy", + Image: "registry.k8s.io/a-kube-rbac-proxy:v0.13.1", }, - Args: []string{"--webhook-port=2345"}, - LivenessProbe: &corev1.Probe{ - ProbeHandler: corev1.ProbeHandler{ - HTTPGet: &corev1.HTTPGetAction{ - Path: "/healthz", - Port: intstr.FromString("healthz"), + { + Name: "manager", + Image: "registry.k8s.io/a-manager:1.6.2", + Env: []corev1.EnvVar{ + { + Name: "test1", + Value: "value1", }, }, - }, - ReadinessProbe: &corev1.Probe{ - ProbeHandler: corev1.ProbeHandler{ - HTTPGet: &corev1.HTTPGetAction{ - Path: "/readyz", - Port: intstr.FromString("healthz"), + Args: []string{"--webhook-port=2345"}, + LivenessProbe: &corev1.Probe{ + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: "/healthz", + Port: intstr.FromString("healthz"), + }, + }, + }, + ReadinessProbe: &corev1.Probe{ + ProbeHandler: corev1.ProbeHandler{ + HTTPGet: &corev1.HTTPGetAction{ + Path: "/readyz", + Port: intstr.FromString("healthz"), + }, }, }, }, - }}, + }, }, }, }, @@ -278,6 +284,10 @@ func TestCustomizeDeployment(t *testing.T) { Template: corev1.PodTemplateSpec{ Spec: corev1.PodSpec{ Containers: []corev1.Container{ + { + Name: "kube-rbac-proxy", + Image: "registry.k8s.io/a-kube-rbac-proxy:v0.13.1", + }, { Name: "manager", Image: "quay.io/dev/mydns:v3.4.2", @@ -403,6 +413,10 @@ func TestCustomizeDeployment(t *testing.T) { }, }, Containers: []corev1.Container{ + { + Name: "kube-rbac-proxy", + Image: "registry.k8s.io/a-kube-rbac-proxy:v0.13.1", + }, { Name: "manager", Image: "quay.io/dev/mydns:v3.4.2", @@ -506,6 +520,10 @@ func TestCustomizeDeployment(t *testing.T) { }, Spec: corev1.PodSpec{ Containers: []corev1.Container{ + { + Name: "kube-rbac-proxy", + Image: "registry.k8s.io/a-kube-rbac-proxy:v0.13.1", + }, { Name: "manager", Image: "registry.k8s.io/a-manager:1.6.2",