Skip to content

Commit 21b32f6

Browse files
committed
change dependency source for nodeset and supervisord cm
1 parent eb672ff commit 21b32f6

19 files changed

Lines changed: 399 additions & 13 deletions

helm/nodesets/templates/nodeset.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ spec:
265265
sssdLdapCAConfigMapRefName: {{ . | quote }}
266266
{{- end }}
267267

268-
{{- with (.configMapRefSupervisord | default "") }}
268+
{{- with (.configMapRefSupervisord | default $.Values.configMapRefSupervisord | default "") }}
269269
configMapRefSupervisord: {{ . | quote }}
270270
{{- end }}
271271

helm/nodesets/tests/basic_test.yaml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,63 @@ tests:
9797
path: kind
9898
value: NodeSet
9999

100+
- it: should use chart-level supervisord ConfigMap ref when NodeSet does not override it
101+
set:
102+
configMapRefSupervisord: custom-supervisord-config-4.0.2
103+
nodesets:
104+
- name: test-workers
105+
slurmd:
106+
image:
107+
repository: "test/slurm"
108+
resources:
109+
cpu: "1"
110+
memory: "1Gi"
111+
volumes:
112+
spool:
113+
emptyDir: {}
114+
jail:
115+
emptyDir: {}
116+
jailSubMounts: []
117+
munge:
118+
image:
119+
repository: "test/munge"
120+
resources:
121+
cpu: "100m"
122+
memory: "128Mi"
123+
asserts:
124+
- equal:
125+
path: spec.configMapRefSupervisord
126+
value: custom-supervisord-config-4.0.2
127+
128+
- it: should prefer NodeSet supervisord ConfigMap ref over chart-level default
129+
set:
130+
configMapRefSupervisord: custom-supervisord-config-4.0.2
131+
nodesets:
132+
- name: test-workers
133+
configMapRefSupervisord: per-nodeset-supervisord-config
134+
slurmd:
135+
image:
136+
repository: "test/slurm"
137+
resources:
138+
cpu: "1"
139+
memory: "1Gi"
140+
volumes:
141+
spool:
142+
emptyDir: {}
143+
jail:
144+
emptyDir: {}
145+
jailSubMounts: []
146+
munge:
147+
image:
148+
repository: "test/munge"
149+
resources:
150+
cpu: "100m"
151+
memory: "128Mi"
152+
asserts:
153+
- equal:
154+
path: spec.configMapRefSupervisord
155+
value: per-nodeset-supervisord-config
156+
100157
- it: should include common labels
101158
set:
102159
nodesets:

helm/nodesets/values.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
nameOverride: ""
77
fullnameOverride: ""
88
clusterName: ""
9+
# Default custom SupervisorD config ConfigMap for NodeSets.
10+
# Individual NodeSets can override this with nodesets[*].configMapRefSupervisord.
11+
configMapRefSupervisord: ""
912
# Priority Classes configuration
1013
# Define priority classes that can be used by NodeSets
1114
priorityClasses:

helm/soperator-custom-configmaps/templates/_helpers.tpl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ Create chart name and version as used by the chart label.
1212
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
1313
{{- end }}
1414

15+
{{/*
16+
Create a ConfigMap name with a chart-version suffix.
17+
*/}}
18+
{{- define "soperator-custom-configmaps.versionedName" -}}
19+
{{- $name := index . 0 -}}
20+
{{- $version := index . 1 -}}
21+
{{- printf "%s-%s" $name $version | lower | replace "+" "-" | replace "_" "-" | trunc 253 | trimSuffix "-" }}
22+
{{- end }}
23+
1524
{{/*
1625
Common labels
1726
*/}}
@@ -24,6 +33,15 @@ app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
2433
app.kubernetes.io/managed-by: {{ .Release.Service }}
2534
{{- end }}
2635

36+
{{/*
37+
Stable labels for legacy kept resources. These intentionally exclude chart/app
38+
version labels so chart upgrades do not keep patching the old ConfigMap.
39+
*/}}
40+
{{- define "soperator-custom-configmaps.stableLabels" -}}
41+
{{ include "soperator-custom-configmaps.selectorLabels" . }}
42+
app.kubernetes.io/managed-by: {{ .Release.Service }}
43+
{{- end }}
44+
2745
{{/*
2846
Selector labels
2947
*/}}
Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,60 @@
11
{{- if .Values.configMaps.supervisord.enabled }}
2+
{{- $baseName := .Values.configMaps.supervisord.name }}
3+
{{- $versionedName := include "soperator-custom-configmaps.versionedName" (list $baseName .Chart.Version) }}
4+
{{- $keepLegacy := true }}
5+
{{- if hasKey .Values.configMaps.supervisord "keepLegacy" }}
6+
{{- $keepLegacy = .Values.configMaps.supervisord.keepLegacy }}
7+
{{- end }}
28
apiVersion: v1
39
kind: ConfigMap
410
metadata:
5-
name: {{ .Values.configMaps.supervisord.name }}
11+
name: {{ $versionedName }}
612
namespace: {{ .Values.namespace }}
13+
annotations:
14+
helm.sh/resource-policy: keep
15+
slurm.nebius.ai/dependency-version: name
716
labels:
817
{{- include "soperator-custom-configmaps.labels" . | nindent 4 }}
18+
data:
19+
{{- range .Values.configMaps.supervisord.files }}
20+
{{ . }}: |
21+
{{ tpl ($.Files.Get (printf "config-files/%s" .)) $ | indent 4 }}
22+
{{- end }}
23+
{{- if and $keepLegacy (ne $baseName $versionedName) }}
24+
{{- $legacyConfigMap := lookup "v1" "ConfigMap" .Values.namespace $baseName }}
25+
{{- $legacyLabels := include "soperator-custom-configmaps.stableLabels" . | fromYaml }}
26+
{{- $legacyAnnotations := dict "helm.sh/resource-policy" "keep" }}
27+
{{- if $legacyConfigMap }}
28+
{{- with $legacyConfigMap.metadata.labels }}
29+
{{- $legacyLabels = deepCopy . }}
30+
{{- end }}
31+
{{- with $legacyConfigMap.metadata.annotations }}
32+
{{- $legacyAnnotations = mergeOverwrite (deepCopy .) $legacyAnnotations }}
33+
{{- end }}
34+
{{- end }}
35+
---
36+
apiVersion: v1
37+
kind: ConfigMap
38+
metadata:
39+
name: {{ $baseName }}
40+
namespace: {{ .Values.namespace }}
41+
annotations:
42+
{{- toYaml $legacyAnnotations | nindent 4 }}
43+
labels:
44+
{{- toYaml $legacyLabels | nindent 4 }}
45+
{{- if and $legacyConfigMap $legacyConfigMap.data }}
46+
data:
47+
{{- toYaml $legacyConfigMap.data | nindent 2 }}
48+
{{- else }}
949
data:
1050
{{- range .Values.configMaps.supervisord.files }}
1151
{{ . }}: |
1252
{{ tpl ($.Files.Get (printf "config-files/%s" .)) $ | indent 4 }}
1353
{{- end }}
1454
{{- end }}
55+
{{- if and $legacyConfigMap $legacyConfigMap.binaryData }}
56+
binaryData:
57+
{{- toYaml $legacyConfigMap.binaryData | nindent 2 }}
58+
{{- end }}
59+
{{- end }}
60+
{{- end }}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
suite: test supervisord configmap
2+
templates:
3+
- templates/configmap-supervisord.yaml
4+
tests:
5+
- it: should render versioned and legacy supervisord ConfigMaps
6+
asserts:
7+
- hasDocuments:
8+
count: 2
9+
- equal:
10+
path: metadata.name
11+
value: custom-supervisord-config-4.0.2
12+
documentIndex: 0
13+
- equal:
14+
path: metadata.annotations["helm.sh/resource-policy"]
15+
value: keep
16+
documentIndex: 0
17+
- equal:
18+
path: metadata.annotations["slurm.nebius.ai/dependency-version"]
19+
value: name
20+
documentIndex: 0
21+
- equal:
22+
path: metadata.name
23+
value: custom-supervisord-config
24+
documentIndex: 1
25+
- equal:
26+
path: metadata.annotations["helm.sh/resource-policy"]
27+
value: keep
28+
documentIndex: 1
29+
30+
- it: should skip legacy supervisord ConfigMap when disabled
31+
set:
32+
configMaps.supervisord.keepLegacy: false
33+
asserts:
34+
- hasDocuments:
35+
count: 1
36+
- equal:
37+
path: metadata.name
38+
value: custom-supervisord-config-4.0.2

helm/soperator-custom-configmaps/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ configMaps:
1010
supervisord:
1111
enabled: true
1212
name: custom-supervisord-config
13+
keepLegacy: true
1314
files:
1415
- supervisord.conf
1516
motd:

helm/soperator-fluxcd/templates/_helpers.tpl

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,48 @@ Create chart name and version as used by the chart label.
2121
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
2222
{{- end }}
2323

24+
{{/*
25+
Create a Kubernetes resource name with a version suffix.
26+
*/}}
27+
{{- define "soperator-fluxcd.versionedName" -}}
28+
{{- $name := index . 0 -}}
29+
{{- $version := index . 1 -}}
30+
{{- printf "%s-%s" $name $version | lower | replace "+" "-" | replace "_" "-" | trunc 253 | trimSuffix "-" }}
31+
{{- end }}
32+
33+
{{/*
34+
Base name for the custom supervisord ConfigMap created by the custom-configmaps chart.
35+
*/}}
36+
{{- define "soperator-fluxcd.customSupervisordConfigMapBaseName" -}}
37+
{{- $name := .Values.customConfigmaps.supervisordConfigMapName | default "custom-supervisord-config" -}}
38+
{{- with .Values.customConfigmaps.values -}}
39+
{{- with .configMaps -}}
40+
{{- with .supervisord -}}
41+
{{- with .name -}}
42+
{{- $name = . -}}
43+
{{- end -}}
44+
{{- end -}}
45+
{{- end -}}
46+
{{- end -}}
47+
{{- with .Values.customConfigmaps.overrideValues -}}
48+
{{- with .configMaps -}}
49+
{{- with .supervisord -}}
50+
{{- with .name -}}
51+
{{- $name = . -}}
52+
{{- end -}}
53+
{{- end -}}
54+
{{- end -}}
55+
{{- end -}}
56+
{{- $name -}}
57+
{{- end }}
58+
59+
{{/*
60+
Versioned name for the custom supervisord ConfigMap.
61+
*/}}
62+
{{- define "soperator-fluxcd.customSupervisordConfigMapName" -}}
63+
{{- include "soperator-fluxcd.versionedName" (list (include "soperator-fluxcd.customSupervisordConfigMapBaseName" .) .Values.customConfigmaps.version) -}}
64+
{{- end }}
65+
2466
{{/*
2567
Common labels
2668
*/}}

helm/soperator-fluxcd/templates/nodesets.yaml

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ spec:
2424
{{- if .Values.slurmCluster.enabled }}
2525
- name: {{ include "soperator-fluxcd.fullname" . }}-slurm-cluster
2626
{{- end }}
27+
{{- if .Values.customConfigmaps.enabled }}
28+
- name: {{ include "soperator-fluxcd.fullname" . }}-custom-configmaps
29+
{{- end }}
2730

2831
install:
2932
{{- toYaml .Values.nodesets.install | nindent 4 }}
@@ -33,15 +36,21 @@ spec:
3336
targetNamespace: {{ .Values.nodesets.namespace }}
3437
upgrade:
3538
{{- toYaml .Values.nodesets.upgrade | nindent 4 }}
36-
values:
37-
clusterName: {{ .Values.nodesets.clusterName | quote }}
39+
{{- $nodesetsValues := dict "clusterName" .Values.nodesets.clusterName }}
40+
{{- if .Values.customConfigmaps.enabled }}
41+
{{- $_ := set $nodesetsValues "configMapRefSupervisord" (include "soperator-fluxcd.customSupervisordConfigMapName" .) }}
42+
{{- end }}
3843
{{- if .Values.nodesets.overrideValues }}
39-
{{- toYaml .Values.nodesets.overrideValues | nindent 4 }}
44+
{{- with .Values.nodesets.overrideValues }}
45+
{{- $nodesetsValues = mergeOverwrite $nodesetsValues (deepCopy .) }}
46+
{{- end }}
4047
{{- else }}
41-
{{- if .Values.nodesets.values }}
42-
{{- toYaml .Values.nodesets.values | nindent 4 }}
43-
{{- end }}
48+
{{- with .Values.nodesets.values }}
49+
{{- $nodesetsValues = mergeOverwrite $nodesetsValues (deepCopy .) }}
50+
{{- end }}
4451
{{- end }}
52+
values:
53+
{{- toYaml $nodesetsValues | nindent 4 }}
4554
valuesFrom:
4655
- kind: ConfigMap
4756
name: terraform-nodesets

helm/soperator-fluxcd/templates/soperator-custom-configmaps.yaml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ spec:
2020
version: {{ .Values.customConfigmaps.version }}
2121
dependsOn:
2222
- name: {{ include "soperator-fluxcd.fullname" . }}-ns
23+
{{- if .Values.soperator.enabled }}
24+
- name: {{ include "soperator-fluxcd.fullname" . }}-soperator
25+
{{- end }}
2326
install:
2427
{{- toYaml .Values.customConfigmaps.install | nindent 4 }}
2528
upgrade:
@@ -28,10 +31,18 @@ spec:
2831
timeout: {{ .Values.customConfigmaps.timeout }}
2932
releaseName: {{ .Values.customConfigmaps.releaseName }}
3033
targetNamespace: {{ .Values.customConfigmaps.namespace }}
31-
values:
34+
{{- $customConfigmapsValues := dict "configMaps" (dict "supervisord" (dict "name" (include "soperator-fluxcd.customSupervisordConfigMapBaseName" .))) }}
3235
{{- if .Values.customConfigmaps.overrideValues }}
33-
{{- toYaml .Values.customConfigmaps.overrideValues | nindent 4 }}
36+
{{- with .Values.customConfigmaps.overrideValues }}
37+
{{- $customConfigmapsValues = mergeOverwrite $customConfigmapsValues (deepCopy .) }}
38+
{{- end }}
39+
{{- else }}
40+
{{- with .Values.customConfigmaps.values }}
41+
{{- $customConfigmapsValues = mergeOverwrite $customConfigmapsValues (deepCopy .) }}
3442
{{- end }}
43+
{{- end }}
44+
values:
45+
{{- toYaml $customConfigmapsValues | nindent 4 }}
3546
valuesFrom:
3647
- kind: ConfigMap
3748
name: custom-configmaps

0 commit comments

Comments
 (0)