This is an automated email from the ASF dual-hosted git repository.

nicholasjiang pushed a commit to branch branch-0.6
in repository https://gitbox.apache.org/repos/asf/celeborn.git


The following commit(s) were added to refs/heads/branch-0.6 by this push:
     new ec72126ca [CELEBORN-2214] Add extraInitContainers for worker in helm
ec72126ca is described below

commit ec72126caf50b94220c9cf24c2d57bbcb2308d46
Author: Ping Zhang <[email protected]>
AuthorDate: Thu Dec 11 10:55:47 2025 +0800

    [CELEBORN-2214] Add extraInitContainers for worker in helm
    
    ### What changes were proposed in this pull request?
    
    Allow users to define more initContainers in the worker statefulset
    
    ### Why are the changes needed?
    
    This feature lets users define additional initContainers—for example, to 
wait for underlying NVMe disks to become ready.
    On AKS LSv3 nodes, the local NVMe devices require setup steps (in our case, 
a DaemonSet mounts them under /mnt). By supporting extraInitContainers, we can 
delay starting the Celeborn workers until the NVMe disks are fully mounted.
    
    ### Does this PR resolve a correctness bug?
    
    No
    
    ### Does this PR introduce _any_ user-facing change?
    
    No
    
    ### How was this patch tested?
    
    helm tests:
    
    ```
    ❯ helm unittest . --file "tests/**/*_test.yaml" --strict --debug
    
    ### Chart [ celeborn ] .
    
     PASS  Test Celeborn configmap  tests/configmap_test.yaml
     PASS  Test Celeborn role       tests/role_test.yaml
     PASS  Test Celeborn rolebinding        tests/rolebinding_test.yaml
     PASS  Test Celeborn service account    tests/serviceaccount_test.yaml
     PASS  Test Celeborn master pod monitor tests/master/podmonitor_test.yaml
     PASS  Test Celeborn master priority class      
tests/master/priorityclass_test.yaml
     PASS  Test Celeborn master service     tests/master/service_test.yaml
     PASS  Test Celeborn master statefulset tests/master/statefulset_test.yaml
     PASS  Test Celeborn worker pod monitor tests/worker/podmonitor_test.yaml
     PASS  Test Celeborn worker priority class      
tests/worker/priorityclass_test.yaml
     PASS  Test Celeborn worker service     tests/worker/service_test.yaml
     PASS  Test Celeborn worker statefulset tests/worker/statefulset_test.yaml
    
    Charts:      1 passed, 1 total
    Test Suites: 12 passed, 12 total
    Tests:       77 passed, 77 total
    Snapshot:    0 passed, 0 total
    Time:        125.416ms
    ```
    
    Closes #3550 from pingzh/dev/pingz-worker.extraInitContainers-CELEBORN-2214.
    
    Lead-authored-by: Ping Zhang <[email protected]>
    Co-authored-by: Ping Zhang <[email protected]>
    Signed-off-by: SteNicholas <[email protected]>
    (cherry picked from commit 22336992ac4828a5957dff7f414a74993422d047)
    Signed-off-by: SteNicholas <[email protected]>
---
 charts/celeborn/templates/worker/statefulset.yaml  |  9 +++++--
 charts/celeborn/tests/worker/statefulset_test.yaml | 30 ++++++++++++++++++++++
 charts/celeborn/values.yaml                        |  3 +++
 3 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/charts/celeborn/templates/worker/statefulset.yaml 
b/charts/celeborn/templates/worker/statefulset.yaml
index 0b2d7d9b9..e9d6a2da7 100644
--- a/charts/celeborn/templates/worker/statefulset.yaml
+++ b/charts/celeborn/templates/worker/statefulset.yaml
@@ -53,8 +53,13 @@ spec:
       {{- end }}
       {{- end }}
       {{- end }}
-      {{- if $paths }}
+      {{- if or .Values.worker.extraInitContainers $paths }}
       initContainers:
+      {{- end }}
+      {{- with .Values.worker.extraInitContainers }}
+      {{- toYaml . | nindent 6 }}
+      {{- end }}
+      {{- if $paths }}
       - name: chown-celeborn-worker-volume
         image: {{ include "celeborn.image" . }}
         {{- with .Values.image.pullPolicy }}
@@ -77,7 +82,7 @@ spec:
         {{- end }}
         securityContext:
           runAsUser: 0
-        {{- end }}
+      {{- end }}
       containers:
       - name: {{ .Chart.Name }}
         image: {{ include "celeborn.image" . }}
diff --git a/charts/celeborn/tests/worker/statefulset_test.yaml 
b/charts/celeborn/tests/worker/statefulset_test.yaml
index e232335dc..ca7dc97f2 100644
--- a/charts/celeborn/tests/worker/statefulset_test.yaml
+++ b/charts/celeborn/tests/worker/statefulset_test.yaml
@@ -444,3 +444,33 @@ tests:
                   storage: 200Gi
                 limits:
                   storage: 200Gi
+
+  - it: Should add extra init containers when `worker.extraInitContainers` is 
set
+    template: worker/statefulset.yaml
+    set:
+      worker:
+        volumeMounts: []
+        extraInitContainers:
+          - name: custom-init
+            image: busybox:1.36
+            command:
+              - sh
+              - -c
+              - echo "hello celeborn"
+    asserts:
+      - equal:
+          path: spec.template.spec.initContainers[0].name
+          value: custom-init
+      - equal:
+          path: spec.template.spec.initContainers[0].command[2]
+          value: echo "hello celeborn"
+
+  - it: Should not have initContainers when no volumes and extraInitContainers
+    template: worker/statefulset.yaml
+    set:
+      worker:
+        volumeMounts: []
+        extraInitContainers: []
+    asserts:
+      - notExists:
+          path: spec.template.spec.initContainers
diff --git a/charts/celeborn/values.yaml b/charts/celeborn/values.yaml
index ca57650d5..963742a6c 100644
--- a/charts/celeborn/values.yaml
+++ b/charts/celeborn/values.yaml
@@ -280,6 +280,9 @@ worker:
     # runAsGroup: 10006
     # fsGroup: 10006
 
+  # Add additional init containers into workers (templated).
+  extraInitContainers: []
+
   # --Volumes for Celeborn worker pods.
   volumes:
   - name: disk1

Reply via email to