diff --git a/lib/resourcemerge/core.go b/lib/resourcemerge/core.go index 2a74b7701..943a27881 100644 --- a/lib/resourcemerge/core.go +++ b/lib/resourcemerge/core.go @@ -62,7 +62,8 @@ func ensurePodSpec(modified *bool, existing *corev1.PodSpec, required corev1.Pod } func ensureContainers(modified *bool, existing *[]corev1.Container, required []corev1.Container) { - for i, existingContainer := range *existing { + for i := len(*existing) - 1; i >= 0; i-- { + existingContainer := &(*existing)[i] var existingCurr *corev1.Container for _, requiredContainer := range required { if existingContainer.Name == requiredContainer.Name { diff --git a/lib/resourcemerge/core_test.go b/lib/resourcemerge/core_test.go index 6cdb74079..a8b72d3cf 100644 --- a/lib/resourcemerge/core_test.go +++ b/lib/resourcemerge/core_test.go @@ -336,6 +336,27 @@ func TestEnsurePodSpec(t *testing.T) { }, }, }, + { + name: "remove a container", + existing: corev1.PodSpec{ + Containers: []corev1.Container{ + corev1.Container{Name: "test-A"}, + corev1.Container{Name: "test-B"}, + }, + }, + input: corev1.PodSpec{ + Containers: []corev1.Container{ + corev1.Container{Name: "test-B"}, + }, + }, + + expectedModified: true, + expected: corev1.PodSpec{ + Containers: []corev1.Container{ + corev1.Container{Name: "test-B"}, + }, + }, + }, } for _, test := range tests {