Skip to content

Commit c83d498

Browse files
ChenYi015turboFei
authored andcommitted
[CELEBORN-1528][HELM] Use volume claim template to support various storage backend
### What changes were proposed in this pull request? - Add support for configuring volumeClaimTemplates by adding new values `master.volumeClaimTemplates` and `worker.volumeClaimTemplates`. ### Why are the changes needed? Use volume claim template to support various storage backend. ### Does this PR introduce _any_ user-facing change? Yes. New Helm values `master.volumeClaimTemplates` and `worker.volumeClaimTemplates` are added. ### How was this patch tested? ```bash helm unittest charts/celeborn --file "tests/**/*_test.yaml" --strict --debug ``` Closes #3277 from ChenYi015/helm/volume-claim-templates. Authored-by: Yi Chen <[email protected]> Signed-off-by: Wang, Fei <[email protected]>
1 parent 612464c commit c83d498

File tree

6 files changed

+220
-63
lines changed

6 files changed

+220
-63
lines changed

charts/celeborn/ci/values.yaml

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,6 @@ image:
2828
# -- Image pull policy
2929
pullPolicy: IfNotPresent
3030

31-
service:
32-
# -- Specifies service type
33-
type: ClusterIP
34-
# -- Specifies service port
35-
port: 9097
36-
37-
cluster:
38-
# -- Specifies Kubernetes cluster name
39-
name: cluster
40-
4131
celeborn:
4232
celeborn.metrics.enabled: false
4333
celeborn.worker.storage.dirs: /mnt/disk1:disktype=SSD:capacity=1Gi,/mnt/disk2:disktype=SSD:capacity=1Gi
@@ -134,26 +124,10 @@ worker:
134124
podMonitor:
135125
# -- Specifies whether to enable creating pod monitors for Celeborn pods
136126
enable: false
137-
# -- Specifies pod metrics endpoint
138-
podMetricsEndpoint:
139-
# Specifies scheme
140-
scheme: http
141-
# Specifies scrape interval
142-
interval: 5s
143-
# Specifies port name
144-
portName: metrics
145127

146128
serviceAccount:
147129
# -- Specifies whether to create a service account for Celeborn
148130
create: false
149-
# -- Specifies the name of the service account
150-
name: default
151131

152132
rbac:
153133
create: false
154-
roleName: default
155-
roleBindingName: default
156-
rules:
157-
- apiGroups: [""]
158-
resources: ["pods"]
159-
verbs: ["create", "list", "delete"]

charts/celeborn/templates/master/statefulset.yaml

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,14 @@ metadata:
2323
{{- include "celeborn.master.labels" . | nindent 4 }}
2424
spec:
2525
replicas: {{ .Values.master.replicas }}
26-
serviceName: {{ include "celeborn.master.service.name" . }}
2726
selector:
2827
matchLabels:
2928
{{- include "celeborn.master.selectorLabels" . | nindent 6 }}
29+
{{- with .Values.master.volumeClaimTemplates }}
30+
volumeClaimTemplates:
31+
{{- toYaml . | nindent 2 }}
32+
{{- end }}
33+
serviceName: {{ include "celeborn.master.service.name" . }}
3034
template:
3135
metadata:
3236
labels:
@@ -37,7 +41,18 @@ spec:
3741
{{- toYaml . | nindent 8 }}
3842
{{- end }}
3943
spec:
40-
serviceAccountName: {{ include "celeborn.serviceAccountName" . }}
44+
{{- /* Add an init container to chown mount paths of Celeborn master volumes if necessary. */}}
45+
{{- $paths := list }}
46+
{{- range $volumeMount := .Values.master.volumeMounts }}
47+
{{- range $volume := $.Values.master.volumes }}
48+
{{- if eq $volume.name $volumeMount.name }}
49+
{{- if or $volume.hostPath $volume.emptyDir }}
50+
{{- $paths = append $paths $volumeMount.mountPath }}
51+
{{- end }}
52+
{{- end }}
53+
{{- end }}
54+
{{- end }}
55+
{{- if $paths }}
4156
initContainers:
4257
- name: chown-celeborn-master-volume
4358
image: {{ include "celeborn.image" . }}
@@ -48,14 +63,8 @@ spec:
4863
- chown
4964
- -R
5065
- {{ .Values.master.podSecurityContext.runAsUser | default 10006 }}:{{ .Values.master.podSecurityContext.runAsGroup | default 10006 }}
51-
{{- range $volumeMount := .Values.master.volumeMounts }}
52-
{{- range $volume := $.Values.master.volumes }}
53-
{{- if eq $volume.name $volumeMount.name }}
54-
{{- if or $volume.hostPath $volume.emptyDir }}
55-
- {{ $volumeMount.mountPath }}
56-
{{- end }}
57-
{{- end }}
58-
{{- end }}
66+
{{- range $path := $paths }}
67+
- {{ $path }}
5968
{{- end }}
6069
{{- with .Values.master.volumeMounts }}
6170
volumeMounts:
@@ -67,6 +76,7 @@ spec:
6776
{{- end }}
6877
securityContext:
6978
runAsUser: 0
79+
{{- end }}
7080
containers:
7181
- name: {{ .Chart.Name }}
7282
image: {{ include "celeborn.image" . }}
@@ -161,8 +171,10 @@ spec:
161171
{{- with .Values.master.hostNetwork }}
162172
hostNetwork: {{ . }}
163173
{{- end }}
174+
serviceAccountName: {{ include "celeborn.serviceAccountName" . }}
164175
{{- with .Values.master.podSecurityContext }}
165176
securityContext:
166177
{{- toYaml . | nindent 8 }}
167178
{{- end }}
168179
terminationGracePeriodSeconds: 30
180+

charts/celeborn/templates/worker/statefulset.yaml

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,14 @@ metadata:
2323
{{- include "celeborn.worker.labels" . | nindent 4 }}
2424
spec:
2525
replicas: {{ .Values.worker.replicas }}
26-
serviceName: {{ include "celeborn.worker.service.name" . }}
2726
selector:
2827
matchLabels:
2928
{{- include "celeborn.worker.selectorLabels" . | nindent 6 }}
29+
{{- with .Values.worker.volumeClaimTemplates }}
30+
volumeClaimTemplates:
31+
{{- toYaml . | nindent 2 }}
32+
{{- end }}
33+
serviceName: {{ include "celeborn.worker.service.name" . }}
3034
template:
3135
metadata:
3236
labels:
@@ -37,7 +41,18 @@ spec:
3741
{{- toYaml . | nindent 8 }}
3842
{{- end }}
3943
spec:
40-
serviceAccountName: {{ include "celeborn.serviceAccountName" . }}
44+
{{- /* Add an init container to chown mount paths of Celeborn workers volume if necessary. */}}
45+
{{- $paths := list }}
46+
{{- range $volumeMount := .Values.worker.volumeMounts }}
47+
{{- range $volume := $.Values.worker.volumes }}
48+
{{- if eq $volume.name $volumeMount.name }}
49+
{{- if or $volume.hostPath $volume.emptyDir }}
50+
{{- $paths = append $paths $volumeMount.mountPath }}
51+
{{- end }}
52+
{{- end }}
53+
{{- end }}
54+
{{- end }}
55+
{{- if $paths }}
4156
initContainers:
4257
- name: chown-celeborn-worker-volume
4358
image: {{ include "celeborn.image" . }}
@@ -48,14 +63,8 @@ spec:
4863
- chown
4964
- -R
5065
- {{ .Values.worker.podSecurityContext.runAsUser | default 10006 }}:{{ .Values.worker.podSecurityContext.runAsGroup | default 10006 }}
51-
{{- range $volumeMount := .Values.worker.volumeMounts }}
52-
{{- range $volume := $.Values.worker.volumes }}
53-
{{- if eq $volume.name $volumeMount.name }}
54-
{{- if or $volume.hostPath $volume.emptyDir }}
55-
- {{ $volumeMount.mountPath }}
56-
{{- end }}
57-
{{- end }}
58-
{{- end }}
66+
{{- range $path := $paths }}
67+
- {{ $path }}
5968
{{- end }}
6069
{{- with .Values.worker.volumeMounts }}
6170
volumeMounts:
@@ -67,6 +76,7 @@ spec:
6776
{{- end }}
6877
securityContext:
6978
runAsUser: 0
79+
{{- end }}
7080
containers:
7181
- name: {{ .Chart.Name }}
7282
image: {{ include "celeborn.image" . }}
@@ -160,6 +170,7 @@ spec:
160170
{{- with .Values.worker.hostNetwork }}
161171
hostNetwork: {{ . }}
162172
{{- end }}
173+
serviceAccountName: {{ include "celeborn.serviceAccountName" . }}
163174
{{- with .Values.worker.podSecurityContext }}
164175
securityContext:
165176
{{- toYaml . | nindent 8 }}

charts/celeborn/tests/master/statefulset_test.yaml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,3 +376,55 @@ tests:
376376
- equal:
377377
path: spec.template.spec.securityContext.fsGroup
378378
value: 3000
379+
380+
- it: Should add volume claim templates if `master.volumeClaimTemplates` is set
381+
set:
382+
master:
383+
volumeClaimTemplates:
384+
- metadata:
385+
name: test-volume-claim-template-1
386+
spec:
387+
accessModes:
388+
- ReadWriteMany
389+
resources:
390+
request:
391+
storage: 100Gi
392+
limits:
393+
storage: 100Gi
394+
- metadata:
395+
name: test-volume-claim-template-2
396+
spec:
397+
accessModes:
398+
- ReadWriteOnce
399+
resources:
400+
request:
401+
storage: 200Gi
402+
limits:
403+
storage: 200Gi
404+
asserts:
405+
- contains:
406+
path: spec.volumeClaimTemplates
407+
content:
408+
metadata:
409+
name: test-volume-claim-template-1
410+
spec:
411+
accessModes:
412+
- ReadWriteMany
413+
resources:
414+
request:
415+
storage: 100Gi
416+
limits:
417+
storage: 100Gi
418+
- contains:
419+
path: spec.volumeClaimTemplates
420+
content:
421+
metadata:
422+
name: test-volume-claim-template-2
423+
spec:
424+
accessModes:
425+
- ReadWriteOnce
426+
resources:
427+
request:
428+
storage: 200Gi
429+
limits:
430+
storage: 200Gi

charts/celeborn/tests/worker/statefulset_test.yaml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,3 +375,55 @@ tests:
375375
- equal:
376376
path: spec.template.spec.securityContext.fsGroup
377377
value: 3000
378+
379+
- it: Should add volume claim templates if `worker.volumeClaimTemplates` is set
380+
set:
381+
worker:
382+
volumeClaimTemplates:
383+
- metadata:
384+
name: test-volume-claim-template-1
385+
spec:
386+
accessModes:
387+
- ReadWriteMany
388+
resources:
389+
request:
390+
storage: 100Gi
391+
limits:
392+
storage: 100Gi
393+
- metadata:
394+
name: test-volume-claim-template-2
395+
spec:
396+
accessModes:
397+
- ReadWriteOnce
398+
resources:
399+
request:
400+
storage: 200Gi
401+
limits:
402+
storage: 200Gi
403+
asserts:
404+
- contains:
405+
path: spec.volumeClaimTemplates
406+
content:
407+
metadata:
408+
name: test-volume-claim-template-1
409+
spec:
410+
accessModes:
411+
- ReadWriteMany
412+
resources:
413+
request:
414+
storage: 100Gi
415+
limits:
416+
storage: 100Gi
417+
- contains:
418+
path: spec.volumeClaimTemplates
419+
content:
420+
metadata:
421+
name: test-volume-claim-template-2
422+
spec:
423+
accessModes:
424+
- ReadWriteOnce
425+
resources:
426+
request:
427+
storage: 200Gi
428+
limits:
429+
storage: 200Gi

0 commit comments

Comments
 (0)