Skip to content

Commit b7d3058

Browse files
committed
Fix selector.matchLabels to not include version label
selector.matchLabels should use cfg.matchLabels without the version label, since Kubernetes selectors can't be updated and should remain stable. Previously selector.matchLabels was using labels which included the version through cfg.labels, causing the selector to change when version changes. Fixed by: - Using cfg.matchLabels directly for selectors - Adding component-specific labels explicitly in selector.matchLabels - Not including cfg.labels (which contains version) in selectors
1 parent 5ee7809 commit b7d3058

9 files changed

Lines changed: 60 additions & 21 deletions

File tree

kubenix/builder.nix

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,9 @@ in
8787
labels = cfg.labels // {
8888
"app.kubernetes.io/component" = "builder";
8989
};
90-
matchLabels = cfg.matchLabels // labels;
90+
matchLabels = cfg.matchLabels // {
91+
"app.kubernetes.io/component" = "builder";
92+
};
9193
in
9294
lib.mkIf (cfg.enable && cfg.builders.enable) {
9395
nix-csi.builders.nixConfig.settings.sandbox = cfg.builders.privilegedSandboxedBuilds;
@@ -205,7 +207,11 @@ in
205207
metadata.labels = v2.labels;
206208
spec = {
207209
replicas = v.replicas;
208-
selector.matchLabels = cfg.matchLabels // v2.labels;
210+
selector.matchLabels = cfg.matchLabels // {
211+
"app.kubernetes.io/component" = "builder";
212+
"kubernetes.io/arch" = v.arch;
213+
"nix.csi/deployment" = n;
214+
};
209215
template = podTemplate v2;
210216
};
211217
}
@@ -298,7 +304,11 @@ in
298304
{
299305
metadata.labels = v2.labels;
300306
spec = {
301-
selector.matchLabels = cfg.matchLabels // v2.labels;
307+
selector.matchLabels = cfg.matchLabels // {
308+
"app.kubernetes.io/component" = "builder";
309+
"kubernetes.io/arch" = v.arch;
310+
"nix.csi/daemonset" = n;
311+
};
302312
template = lib.recursiveUpdate (podTemplate v2) {
303313
spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms = [
304314
{

kubenix/cache.nix

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ in
3838
labels = cfg.labels // {
3939
"app.kubernetes.io/component" = "cache";
4040
};
41-
matchLabels = cfg.matchLabels // labels;
41+
matchLabels = cfg.matchLabels // {
42+
"app.kubernetes.io/component" = "cache";
43+
};
4244
in
4345
lib.mkIf (cfg.enable && cfg.cache.enable) {
4446
kubernetes.resources.${cfg.namespace} = {

kubenix/ci/default.nix

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
config,
55
curPkgs,
66
lib,
7-
mkNCSI,
87
subPath,
98
inputs,
109
...
@@ -60,8 +59,14 @@ in
6059
};
6160
};
6261
kubernetes.resources.${cfg.namespace} = {
63-
ConfigMap.inputs.data = inputs;
64-
Job.flake-hello = mkNCSI {
62+
ConfigMap.inputs = {
63+
metadata.labels = cfg.labels;
64+
data = inputs;
65+
};
66+
Job.flake-hello = {
67+
metadata.labels = cfg.labels // {
68+
"app.kubernetes.io/component" = "ci-test";
69+
};
6570
spec = {
6671
template = {
6772
spec = {
@@ -77,7 +82,10 @@ in
7782
};
7883
};
7984
};
80-
Job.expr-hello = mkNCSI {
85+
Job.expr-hello = {
86+
metadata.labels = cfg.labels // {
87+
"app.kubernetes.io/component" = "ci-test";
88+
};
8189
spec = {
8290
template = {
8391
spec = {
@@ -117,7 +125,10 @@ in
117125
};
118126
};
119127
};
120-
Job.path-hello = mkNCSI {
128+
Job.path-hello = {
129+
metadata.labels = cfg.labels // {
130+
"app.kubernetes.io/component" = "ci-test";
131+
};
121132
spec = {
122133
template = {
123134
spec = {
@@ -134,7 +145,10 @@ in
134145
};
135146
};
136147
};
137-
Job.commandpath-hello = mkNCSI {
148+
Job.commandpath-hello = {
149+
metadata.labels = cfg.labels // {
150+
"app.kubernetes.io/component" = "ci-test";
151+
};
138152
spec = {
139153
template = {
140154
spec = {
@@ -152,7 +166,10 @@ in
152166
};
153167
};
154168
};
155-
Job.env-ssl = mkNCSI {
169+
Job.env-ssl = {
170+
metadata.labels = cfg.labels // {
171+
"app.kubernetes.io/component" = "ci-test";
172+
};
156173
spec = {
157174
template = {
158175
spec = {
@@ -229,7 +246,10 @@ in
229246
};
230247
};
231248
# Test failure scenarios for event reporting
232-
Job.invalid-storepath-hello = mkNCSI {
249+
Job.invalid-storepath-hello = {
250+
metadata.labels = cfg.labels // {
251+
"app.kubernetes.io/component" = "ci-test";
252+
};
233253
spec = {
234254
template = {
235255
spec = {
@@ -246,7 +266,10 @@ in
246266
};
247267
};
248268
};
249-
Job.invalid-flake-hello = mkNCSI {
269+
Job.invalid-flake-hello = {
270+
metadata.labels = cfg.labels // {
271+
"app.kubernetes.io/component" = "ci-test";
272+
};
250273
spec = {
251274
template = {
252275
spec = {
@@ -262,7 +285,10 @@ in
262285
};
263286
};
264287
};
265-
Job.invalid-expr-hello = mkNCSI {
288+
Job.invalid-expr-hello = {
289+
metadata.labels = cfg.labels // {
290+
"app.kubernetes.io/component" = "ci-test";
291+
};
266292
spec = {
267293
template = {
268294
spec = {

kubenix/config.nix

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
{
44
config,
55
lib,
6-
mkNCSI,
76
x86Pkgs,
87
armPkgs,
98
...

kubenix/csidriver.nix

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
{
44
config,
55
lib,
6-
mkNCSI,
76
...
87
}:
98
let

kubenix/daemonset.nix

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ in
2727
labels = cfg.labels // {
2828
"app.kubernetes.io/component" = "node";
2929
};
30-
matchLabels = cfg.matchLabels // labels;
30+
matchLabels = cfg.matchLabels // {
31+
"app.kubernetes.io/component" = "node";
32+
};
3133
in
3234
lib.mkIf cfg.enable {
3335
kubernetes.resources.${cfg.namespace} = {
@@ -38,7 +40,7 @@ in
3840
type = "RollingUpdate";
3941
rollingUpdate.maxUnavailable = 1;
4042
};
41-
selector.matchLabels = labels;
43+
selector.matchLabels = matchLabels;
4244
template = {
4345
metadata.labels = labels;
4446
metadata.annotations = {

kubenix/namespace.nix

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
{
44
config,
55
lib,
6-
mkNCSI,
76
...
87
}:
98
let

kubenix/rbac.nix

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
{
44
config,
55
lib,
6-
mkNCSI,
76
...
87
}:
98
let

kubenix/undeploy.nix

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,13 @@ in
2626
labels = cfg.labels // {
2727
"app.kubernetes.io/component" = "cleanup";
2828
};
29+
matchLabels = cfg.matchLabels // {
30+
"app.kubernetes.io/component" = "cleanup";
31+
};
2932
in
3033
{
3134
metadata.labels = labels;
32-
spec.selector.matchLabels = cfg.matchLabels // labels;
35+
spec.selector.matchLabels = matchLabels;
3336
spec.template = {
3437
metadata.labels = labels;
3538
spec = {

0 commit comments

Comments
 (0)