Skip to content

Commit 41204df

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 41204df

4 files changed

Lines changed: 24 additions & 7 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/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/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)