Skip to content

Commit d406acb

Browse files
committed
operator: fix syncPodTemplate to handle env var removals
Signed-off-by: Ryan Koo <rbk65@cornell.edu>
1 parent 2b1edab commit d406acb

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

operator/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@ We structure this changelog in accordance with [Keep a Changelog](https://keepac
88

99
---
1010

11+
## Unreleased
12+
13+
### Changed
14+
15+
- Fixed syncPodTemplate not syncing env var removals when the desired env slice was a prefix of the current, causing rollout loops on config changes such as clearing `authNSecretName`.
16+
1117
## v2.15.0
1218

1319
### Changed

operator/pkg/controllers/cluster_controller_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,6 +1032,28 @@ var _ = Describe("AIStoreController", func() {
10321032
false,
10331033
false,
10341034
),
1035+
Entry("env var removed from slice",
1036+
&corev1.PodTemplateSpec{
1037+
Spec: corev1.PodSpec{
1038+
InitContainers: []corev1.Container{{Image: "test:latest"}},
1039+
Containers: []corev1.Container{{
1040+
Image: "test:latest",
1041+
Env: []corev1.EnvVar{{Name: "MY_NODE", Value: "node1"}, {Name: "MY_POD", Value: "pod1"}},
1042+
}},
1043+
},
1044+
},
1045+
&corev1.PodTemplateSpec{
1046+
Spec: corev1.PodSpec{
1047+
InitContainers: []corev1.Container{{Image: "test:latest"}},
1048+
Containers: []corev1.Container{{
1049+
Image: "test:latest",
1050+
Env: []corev1.EnvVar{{Name: "MY_NODE", Value: "node1"}, {Name: "MY_POD", Value: "pod1"}, {Name: "REMOVED_ENV", Value: "val"}},
1051+
}},
1052+
},
1053+
},
1054+
true,
1055+
true,
1056+
),
10351057
)
10361058
})
10371059
Describe("shouldUpdatePVCRetentionPolicy", func() {

operator/pkg/controllers/common.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,10 @@ func syncPodTemplate(desired, current *corev1.PodTemplateSpec) (updated bool) {
267267
{&desired.Spec.Containers[0], &current.Spec.Containers[0]},
268268
} {
269269
if equality.Semantic.DeepDerivative(*daemon.desiredContainer, *daemon.currentContainer) {
270-
continue
270+
// Account for env var removals with a deep equal check
271+
if equality.Semantic.DeepEqual(daemon.desiredContainer.Env, daemon.currentContainer.Env) {
272+
continue
273+
}
271274
}
272275
*daemon.currentContainer = *daemon.desiredContainer
273276
updated = true

0 commit comments

Comments
 (0)