From f892b445b3670be2b17c999063f6ab59aefa54d7 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Fri, 15 May 2026 13:19:05 -0700 Subject: [PATCH] helm(admin): support secretExtraEnvironmentVars (refs #9511) (#9513) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * helm(admin): support secretExtraEnvironmentVars The admin statefulset only honored extraEnvironmentVars, forcing the OIDC client secret (and any other sensitive WEED_* value) to be inlined as plain text in values.yaml — not GitOps-friendly. The filer chart has had secretExtraEnvironmentVars for this exact case; mirror that pattern on admin so secrets can be projected via valueFrom.secretKeyRef. Surfaced by an enterprise OIDC deployment (issue #9511) where the only workaround was hardcoding WEED_ADMIN_OIDC_CLIENT_SECRET in values.yaml. * helm(admin): sort secretExtraEnvironmentVars keys for stable output Helm/Go template map iteration is non-deterministic, so the env entries could shuffle between renders and trigger spurious StatefulSet rollouts in GitOps tooling (ArgoCD/Flux). Sort the keys with sortAlpha, mirroring the extraEnvironmentVars block immediately above. Flagged by gemini-code-assist and coderabbitai on PR #9513. --- .../seaweedfs/templates/admin/admin-statefulset.yaml | 8 ++++++++ k8s/charts/seaweedfs/values.yaml | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/k8s/charts/seaweedfs/templates/admin/admin-statefulset.yaml b/k8s/charts/seaweedfs/templates/admin/admin-statefulset.yaml index 63955f796..d1c0dc73a 100644 --- a/k8s/charts/seaweedfs/templates/admin/admin-statefulset.yaml +++ b/k8s/charts/seaweedfs/templates/admin/admin-statefulset.yaml @@ -135,6 +135,14 @@ spec: {{ toYaml $value | nindent 16 | trim }} {{- end -}} {{- end }} + {{- $secretExtraEnvironmentVars := .Values.admin.secretExtraEnvironmentVars }} + {{- if $secretExtraEnvironmentVars }} + {{- range $key := keys $secretExtraEnvironmentVars | sortAlpha }} + {{- $value := index $secretExtraEnvironmentVars $key }} + - name: {{ $key }} + valueFrom: {{ toYaml $value | nindent 16 }} + {{- end }} + {{- end }} command: - "/bin/sh" - "-ec" diff --git a/k8s/charts/seaweedfs/values.yaml b/k8s/charts/seaweedfs/values.yaml index 4b76c408b..17a633222 100644 --- a/k8s/charts/seaweedfs/values.yaml +++ b/k8s/charts/seaweedfs/values.yaml @@ -1288,6 +1288,13 @@ admin: extraEnvironmentVars: {} + # secret env variables (e.g. for injecting OIDC client secret from a Kubernetes Secret) + secretExtraEnvironmentVars: {} + # WEED_ADMIN_OIDC_CLIENT_SECRET: + # secretKeyRef: + # name: seaweedfs-admin-oidc + # key: client_secret + # Health checks livenessProbe: enabled: true