You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/07/17 21:44:31 UTC
(superset) branch master updated: feat(helm): support additive extra init containers (#42114)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new c84a154b524 feat(helm): support additive extra init containers (#42114)
c84a154b524 is described below
commit c84a154b524839fa1d216a2c563d0889d1e40a4e
Author: Philip Leong <20...@gmail.com>
AuthorDate: Sat Jul 18 05:44:24 2026 +0800
feat(helm): support additive extra init containers (#42114)
---
helm/superset/Chart.yaml | 2 +-
helm/superset/README.md | 7 +-
helm/superset/templates/deployment-beat.yaml | 8 +-
helm/superset/templates/deployment-flower.yaml | 8 +-
helm/superset/templates/deployment-worker.yaml | 8 +-
helm/superset/templates/deployment.yaml | 8 +-
helm/superset/templates/init-job.yaml | 8 +-
helm/superset/tests/init_containers_test.yaml | 168 +++++++++++++++++++++++++
helm/superset/values.yaml | 10 ++
9 files changed, 220 insertions(+), 7 deletions(-)
diff --git a/helm/superset/Chart.yaml b/helm/superset/Chart.yaml
index cc4ecb5ef97..8e22f068333 100644
--- a/helm/superset/Chart.yaml
+++ b/helm/superset/Chart.yaml
@@ -29,7 +29,7 @@ maintainers:
- name: craig-rueda
email: craig@craigrueda.com
url: https://github.com/craig-rueda
-version: 0.20.0 # See [README](https://github.com/apache/superset/blob/master/helm/superset/README.md#versioning) for version details.
+version: 0.21.0 # See [README](https://github.com/apache/superset/blob/master/helm/superset/README.md#versioning) for version details.
dependencies:
- name: postgresql
version: 16.7.27
diff --git a/helm/superset/README.md b/helm/superset/README.md
index bad5501ec32..aca9c10073d 100644
--- a/helm/superset/README.md
+++ b/helm/superset/README.md
@@ -23,7 +23,7 @@ NOTE: This file is generated by helm-docs: https://github.com/norwoodj/helm-docs
# superset
-
+
Apache Superset is a modern, enterprise-ready business intelligence web application
@@ -149,6 +149,7 @@ Alternatively, perform a fresh install. This is a one-time migration; subsequent
| init.createAdmin | bool | `true` | |
| init.enabled | bool | `true` | |
| init.extraContainers | list | `[]` | Launch additional containers into init job pod |
+| init.extraInitContainers | list | `[]` | Extra init containers appended after init job initContainers |
| init.initContainers | list | a container waiting for postgres | List of initContainers |
| init.initscript | string | unused; kept for backwards-compatibility only | DEPRECATED: this field is no longer used by the chart. The init script is rendered entirely from the internal `superset.initScript` template (which runs `superset db upgrade`, `superset init`, admin creation, and examples). Any customization placed here is silently ignored. See UPGRADING.md. |
| init.jobAnnotations."helm.sh/hook" | string | `"post-install,post-upgrade"` | |
@@ -186,6 +187,7 @@ Alternatively, perform a fresh install. This is a one-time migration; subsequent
| supersetCeleryBeat.deploymentAnnotations | object | `{}` | Annotations to be added to supersetCeleryBeat deployment |
| supersetCeleryBeat.enabled | bool | `false` | This is only required if you intend to use alerts and reports |
| supersetCeleryBeat.extraContainers | list | `[]` | Launch additional containers into supersetCeleryBeat pods |
+| supersetCeleryBeat.extraInitContainers | list | `[]` | Extra init containers appended after supersetCeleryBeat initContainers |
| supersetCeleryBeat.forceReload | bool | `false` | If true, forces deployment to reload on each upgrade |
| supersetCeleryBeat.initContainers | list | a container waiting for postgres | List of init containers |
| supersetCeleryBeat.podAnnotations | object | `{}` | Annotations to be added to supersetCeleryBeat pods |
@@ -205,6 +207,7 @@ Alternatively, perform a fresh install. This is a one-time migration; subsequent
| supersetCeleryFlower.deploymentAnnotations | object | `{}` | Annotations to be added to supersetCeleryFlower deployment |
| supersetCeleryFlower.enabled | bool | `false` | Enables a Celery flower deployment (management UI to monitor celery jobs) WARNING: on superset 1.x, this requires a Superset image that has `flower<1.0.0` installed (which is NOT the case of the default images) flower>=1.0.0 requires Celery 5+ which Superset 1.5 does not support |
| supersetCeleryFlower.extraContainers | list | `[]` | Launch additional containers into supersetCeleryFlower pods |
+| supersetCeleryFlower.extraInitContainers | list | `[]` | Extra init containers appended after supersetCeleryFlower initContainers |
| supersetCeleryFlower.initContainers | list | a container waiting for postgres and redis | List of init containers |
| supersetCeleryFlower.livenessProbe.failureThreshold | int | `3` | |
| supersetCeleryFlower.livenessProbe.httpGet.path | string | `"/api/workers"` | |
@@ -256,6 +259,7 @@ Alternatively, perform a fresh install. This is a one-time migration; subsequent
| supersetNode.deploymentLabels | object | `{}` | Labels to be added to supersetNode deployment |
| supersetNode.env | object | `{}` | |
| supersetNode.extraContainers | list | `[]` | Launch additional containers into supersetNode pod |
+| supersetNode.extraInitContainers | list | `[]` | Extra init containers appended after supersetNode initContainers |
| supersetNode.forceReload | bool | `false` | If true, forces deployment to reload on each upgrade |
| supersetNode.initContainers | list | a container waiting for postgres | Init containers |
| supersetNode.lifecycle | object | `{}` | Container lifecycle hooks, e.g. a preStop sleep so the Service/Ingress stops routing to the pod before gunicorn receives SIGTERM |
@@ -355,6 +359,7 @@ Alternatively, perform a fresh install. This is a one-time migration; subsequent
| supersetWorker.deploymentAnnotations | object | `{}` | Annotations to be added to supersetWorker deployment |
| supersetWorker.deploymentLabels | object | `{}` | Labels to be added to supersetWorker deployment |
| supersetWorker.extraContainers | list | `[]` | Launch additional containers into supersetWorker pod |
+| supersetWorker.extraInitContainers | list | `[]` | Extra init containers appended after supersetWorker initContainers |
| supersetWorker.forceReload | bool | `false` | If true, forces deployment to reload on each upgrade |
| supersetWorker.healthCheck | object | `{"enabled":false,"livenessFile":"/tmp/celery_worker_alive","livenessHeartbeatInterval":10,"readinessFile":"/tmp/celery_worker_ready"}` | Celery worker file-based health check (worker writes readiness/liveness files via signals; point supersetWorker.readinessProbe/livenessProbe at these files to use them) |
| supersetWorker.healthCheck.enabled | bool | `false` | Enable the file-based Celery worker health check |
diff --git a/helm/superset/templates/deployment-beat.yaml b/helm/superset/templates/deployment-beat.yaml
index 53f6a5fb61e..054b0646498 100644
--- a/helm/superset/templates/deployment-beat.yaml
+++ b/helm/superset/templates/deployment-beat.yaml
@@ -75,8 +75,14 @@ spec:
{{- if .Values.supersetCeleryBeat.podSecurityContext }}
{{- toYaml .Values.supersetCeleryBeat.podSecurityContext | nindent 8 }}
{{- end }}
+ {{- if or .Values.supersetCeleryBeat.initContainers .Values.supersetCeleryBeat.extraInitContainers }}
+ initContainers:
{{- if .Values.supersetCeleryBeat.initContainers }}
- initContainers: {{- tpl (toYaml .Values.supersetCeleryBeat.initContainers) . | nindent 6 }}
+ {{- tpl (toYaml .Values.supersetCeleryBeat.initContainers) . | nindent 6 }}
+ {{- end }}
+ {{- if .Values.supersetCeleryBeat.extraInitContainers }}
+ {{- tpl (toYaml .Values.supersetCeleryBeat.extraInitContainers) . | nindent 6 }}
+ {{- end }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{- toYaml . | nindent 6 }}
diff --git a/helm/superset/templates/deployment-flower.yaml b/helm/superset/templates/deployment-flower.yaml
index 07bb5d7cbe4..9c705078ccd 100644
--- a/helm/superset/templates/deployment-flower.yaml
+++ b/helm/superset/templates/deployment-flower.yaml
@@ -61,8 +61,14 @@ spec:
{{- if .Values.supersetCeleryFlower.podSecurityContext }}
{{- toYaml .Values.supersetCeleryFlower.podSecurityContext | nindent 8 }}
{{- end }}
+ {{- if or .Values.supersetCeleryFlower.initContainers .Values.supersetCeleryFlower.extraInitContainers }}
+ initContainers:
{{- if .Values.supersetCeleryFlower.initContainers }}
- initContainers: {{- tpl (toYaml .Values.supersetCeleryFlower.initContainers) . | nindent 6 }}
+ {{- tpl (toYaml .Values.supersetCeleryFlower.initContainers) . | nindent 6 }}
+ {{- end }}
+ {{- if .Values.supersetCeleryFlower.extraInitContainers }}
+ {{- tpl (toYaml .Values.supersetCeleryFlower.extraInitContainers) . | nindent 6 }}
+ {{- end }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{- toYaml . | nindent 6 }}
diff --git a/helm/superset/templates/deployment-worker.yaml b/helm/superset/templates/deployment-worker.yaml
index 6c37d3e4e46..a2dd1a22176 100644
--- a/helm/superset/templates/deployment-worker.yaml
+++ b/helm/superset/templates/deployment-worker.yaml
@@ -81,8 +81,14 @@ spec:
{{- if .Values.supersetWorker.podSecurityContext }}
{{- toYaml .Values.supersetWorker.podSecurityContext | nindent 8 }}
{{- end }}
+ {{- if or .Values.supersetWorker.initContainers .Values.supersetWorker.extraInitContainers }}
+ initContainers:
{{- if .Values.supersetWorker.initContainers }}
- initContainers: {{- tpl (toYaml .Values.supersetWorker.initContainers) . | nindent 6 }}
+ {{- tpl (toYaml .Values.supersetWorker.initContainers) . | nindent 6 }}
+ {{- end }}
+ {{- if .Values.supersetWorker.extraInitContainers }}
+ {{- tpl (toYaml .Values.supersetWorker.extraInitContainers) . | nindent 6 }}
+ {{- end }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{- toYaml . | nindent 6 }}
diff --git a/helm/superset/templates/deployment.yaml b/helm/superset/templates/deployment.yaml
index 229ed8a36f4..390e12a8b7e 100644
--- a/helm/superset/templates/deployment.yaml
+++ b/helm/superset/templates/deployment.yaml
@@ -83,8 +83,14 @@ spec:
{{- if .Values.supersetNode.podSecurityContext }}
{{- toYaml .Values.supersetNode.podSecurityContext | nindent 8 }}
{{- end }}
+ {{- if or .Values.supersetNode.initContainers .Values.supersetNode.extraInitContainers }}
+ initContainers:
{{- if .Values.supersetNode.initContainers }}
- initContainers: {{- tpl (toYaml .Values.supersetNode.initContainers) . | nindent 6 }}
+ {{- tpl (toYaml .Values.supersetNode.initContainers) . | nindent 6 }}
+ {{- end }}
+ {{- if .Values.supersetNode.extraInitContainers }}
+ {{- tpl (toYaml .Values.supersetNode.extraInitContainers) . | nindent 6 }}
+ {{- end }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{- toYaml . | nindent 6 }}
diff --git a/helm/superset/templates/init-job.yaml b/helm/superset/templates/init-job.yaml
index 24b119f434f..72aab88c7a0 100644
--- a/helm/superset/templates/init-job.yaml
+++ b/helm/superset/templates/init-job.yaml
@@ -56,8 +56,14 @@ spec:
{{- if .Values.init.podSecurityContext }}
{{- toYaml .Values.init.podSecurityContext | nindent 8 }}
{{- end }}
+ {{- if or .Values.init.initContainers .Values.init.extraInitContainers }}
+ initContainers:
{{- if .Values.init.initContainers }}
- initContainers: {{- tpl (toYaml .Values.init.initContainers) . | nindent 6 }}
+ {{- tpl (toYaml .Values.init.initContainers) . | nindent 6 }}
+ {{- end }}
+ {{- if .Values.init.extraInitContainers }}
+ {{- tpl (toYaml .Values.init.extraInitContainers) . | nindent 6 }}
+ {{- end }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{- toYaml . | nindent 6 }}
diff --git a/helm/superset/tests/init_containers_test.yaml b/helm/superset/tests/init_containers_test.yaml
new file mode 100644
index 00000000000..58ec3535cf9
--- /dev/null
+++ b/helm/superset/tests/init_containers_test.yaml
@@ -0,0 +1,168 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+suite: init containers + extraInitContainers
+templates:
+ - deployment.yaml
+ - deployment-worker.yaml
+ - deployment-beat.yaml
+ - deployment-flower.yaml
+ - init-job.yaml
+tests:
+ - it: renders only the default wait-for container by default
+ template: deployment.yaml
+ asserts:
+ - lengthEqual:
+ path: spec.template.spec.initContainers
+ count: 1
+ - equal:
+ path: spec.template.spec.initContainers[0].name
+ value: wait-for-postgres
+
+ - it: appends extraInitContainers after the default initContainers
+ template: deployment.yaml
+ set:
+ supersetNode.extraInitContainers:
+ - name: prepare-assets
+ image: busybox
+ command: ["sh", "-c", "echo preparing"]
+ asserts:
+ - lengthEqual:
+ path: spec.template.spec.initContainers
+ count: 2
+ - equal:
+ path: spec.template.spec.initContainers[0].name
+ value: wait-for-postgres
+ - equal:
+ path: spec.template.spec.initContainers[1].name
+ value: prepare-assets
+
+ - it: templates values inside extraInitContainers
+ template: deployment.yaml
+ set:
+ image.repository: example/superset
+ supersetNode.extraInitContainers:
+ - name: prepare-assets
+ image: "{{ .Values.image.repository }}:test"
+ asserts:
+ - equal:
+ path: spec.template.spec.initContainers[1].image
+ value: example/superset:test
+
+ - it: keeps replace semantics for initContainers while appending extras
+ template: deployment.yaml
+ set:
+ supersetNode.initContainers:
+ - name: custom-wait
+ image: busybox
+ supersetNode.extraInitContainers:
+ - name: prepare-assets
+ image: busybox
+ asserts:
+ - lengthEqual:
+ path: spec.template.spec.initContainers
+ count: 2
+ - equal:
+ path: spec.template.spec.initContainers[0].name
+ value: custom-wait
+ - equal:
+ path: spec.template.spec.initContainers[1].name
+ value: prepare-assets
+
+ - it: renders only extras when initContainers is cleared
+ template: deployment.yaml
+ set:
+ supersetNode.initContainers: []
+ supersetNode.extraInitContainers:
+ - name: prepare-assets
+ image: busybox
+ asserts:
+ - lengthEqual:
+ path: spec.template.spec.initContainers
+ count: 1
+ - equal:
+ path: spec.template.spec.initContainers[0].name
+ value: prepare-assets
+
+ - it: appends worker extraInitContainers after wait-for-postgres-redis
+ template: deployment-worker.yaml
+ set:
+ supersetWorker.extraInitContainers:
+ - name: prepare-assets
+ image: busybox
+ asserts:
+ - lengthEqual:
+ path: spec.template.spec.initContainers
+ count: 2
+ - equal:
+ path: spec.template.spec.initContainers[0].name
+ value: wait-for-postgres-redis
+ - equal:
+ path: spec.template.spec.initContainers[1].name
+ value: prepare-assets
+
+ - it: appends beat extraInitContainers after wait-for-postgres-redis
+ template: deployment-beat.yaml
+ set:
+ supersetCeleryBeat.enabled: true
+ supersetCeleryBeat.extraInitContainers:
+ - name: prepare-assets
+ image: busybox
+ asserts:
+ - lengthEqual:
+ path: spec.template.spec.initContainers
+ count: 2
+ - equal:
+ path: spec.template.spec.initContainers[0].name
+ value: wait-for-postgres-redis
+ - equal:
+ path: spec.template.spec.initContainers[1].name
+ value: prepare-assets
+
+ - it: appends flower extraInitContainers after wait-for-postgres-redis
+ template: deployment-flower.yaml
+ set:
+ supersetCeleryFlower.enabled: true
+ supersetCeleryFlower.extraInitContainers:
+ - name: prepare-assets
+ image: busybox
+ asserts:
+ - lengthEqual:
+ path: spec.template.spec.initContainers
+ count: 2
+ - equal:
+ path: spec.template.spec.initContainers[0].name
+ value: wait-for-postgres-redis
+ - equal:
+ path: spec.template.spec.initContainers[1].name
+ value: prepare-assets
+
+ - it: appends init job extraInitContainers after wait-for-postgres
+ template: init-job.yaml
+ set:
+ init.extraInitContainers:
+ - name: prepare-assets
+ image: busybox
+ asserts:
+ - lengthEqual:
+ path: spec.template.spec.initContainers
+ count: 2
+ - equal:
+ path: spec.template.spec.initContainers[0].name
+ value: wait-for-postgres
+ - equal:
+ path: spec.template.spec.initContainers[1].name
+ value: prepare-assets
diff --git a/helm/superset/values.yaml b/helm/superset/values.yaml
index 82763486751..785a71e85b4 100644
--- a/helm/superset/values.yaml
+++ b/helm/superset/values.yaml
@@ -415,6 +415,8 @@ supersetNode:
cpu: "250m"
memory: "128Mi"
+ # -- Extra init containers appended after supersetNode initContainers
+ extraInitContainers: []
# -- Launch additional containers into supersetNode pod
extraContainers: []
# -- Annotations to be added to supersetNode deployment
@@ -542,6 +544,8 @@ supersetWorker:
requests:
cpu: "250m"
memory: "128Mi"
+ # -- Extra init containers appended after supersetWorker initContainers
+ extraInitContainers: []
# -- Launch additional containers into supersetWorker pod
extraContainers: []
# -- Annotations to be added to supersetWorker deployment
@@ -663,6 +667,8 @@ supersetCeleryBeat:
requests:
cpu: "250m"
memory: "128Mi"
+ # -- Extra init containers appended after supersetCeleryBeat initContainers
+ extraInitContainers: []
# -- Launch additional containers into supersetCeleryBeat pods
extraContainers: []
# -- Annotations to be added to supersetCeleryBeat deployment
@@ -780,6 +786,8 @@ supersetCeleryFlower:
requests:
cpu: "250m"
memory: "128Mi"
+ # -- Extra init containers appended after supersetCeleryFlower initContainers
+ extraInitContainers: []
# -- Launch additional containers into supersetCeleryFlower pods
extraContainers: []
# -- Annotations to be added to supersetCeleryFlower deployment
@@ -967,6 +975,8 @@ init:
requests:
cpu: "250m"
memory: "128Mi"
+ # -- Extra init containers appended after init job initContainers
+ extraInitContainers: []
# -- DEPRECATED: this field is no longer used by the chart.
# The init script is rendered entirely from the internal `superset.initScript` template
# (which runs `superset db upgrade`, `superset init`, admin creation, and examples).