Browse Source
fix(helm): namespace app-specific global values under global.seaweedfs (#8700)
fix(helm): namespace app-specific global values under global.seaweedfs (#8700)
* fix(helm): namespace app-specific values under global.seaweedfs Move all app-specific values from the global namespace to global.seaweedfs.* to avoid polluting the shared .Values.global namespace when the chart is used as a subchart. Standard Helm conventions (global.imageRegistry, global.imagePullSecrets) remain at the global level as they are designed to be shared across subcharts. Fixes seaweedfs/seaweedfs#8699 BREAKING CHANGE: global values have been restructured. Users must update their values files to use the new paths: - global.registry → global.imageRegistry - global.repository → global.seaweedfs.image.repository - global.imageName → global.seaweedfs.image.name - global.<key> → global.seaweedfs.<key> (for all other app-specific values) * fix(ci): update helm CI tests to use new global.seaweedfs.* value paths Update all --set flags in helm_ci.yml to use the new namespaced global.seaweedfs.* paths matching the values.yaml restructuring. * fix(ci): install Claude Code via npm to avoid install.sh 403 The claude-code-action's built-in installer uses `curl https://claude.ai/install.sh | bash` which can fail with 403. Due to the pipe, bash exits 0 on empty input, masking the curl failure and leaving the `claude` binary missing. Work around this by installing Claude Code via npm before invoking the action, and passing the executable path via path_to_claude_code_executable. * revert: remove claude-code-review.yml changes from this PR The claude-code-action OIDC token exchange validates that the workflow file matches the version on the default branch. Modifying it in a PR causes the review job to fail with "Workflow validation failed". The Claude Code install fix will need to be applied directly to master or in a separate PR. * fix: update stale references to old global.* value paths - admin-statefulset.yaml: fix fail message to reference global.seaweedfs.masterServer - values.yaml: fix comment to reference image.name instead of imageName - helm_ci.yml: fix diagnostic message to reference global.seaweedfs.enableSecurity * feat(helm): add backward-compat shim for old global.* value paths Add _compat.tpl with a seaweedfs.compat helper that detects old-style global.* keys (e.g. global.enableSecurity, global.registry) and merges them into the new global.seaweedfs.* namespace. Since the old keys no longer have defaults in values.yaml, their presence means the user explicitly provided them. The helper uses in-place mutation via `set` so all templates see the merged values. This ensures existing deployments using old value paths continue to work without changes after upgrading. * fix: update stale comment references in values.yaml Update comments referencing global.enableSecurity and global.masterServer to the new global.seaweedfs.* paths. --------- Co-authored-by: Copilot <copilot@github.com>fix/lock-table-shared-lock-precedence
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
37 changed files with 288 additions and 190 deletions
-
20.github/workflows/helm_ci.yml
-
5k8s/charts/seaweedfs/templates/admin/admin-servicemonitor.yaml
-
21k8s/charts/seaweedfs/templates/admin/admin-statefulset.yaml
-
27k8s/charts/seaweedfs/templates/all-in-one/all-in-one-deployment.yaml
-
5k8s/charts/seaweedfs/templates/all-in-one/all-in-one-servicemonitor.yaml
-
5k8s/charts/seaweedfs/templates/cert/admin-cert.yaml
-
5k8s/charts/seaweedfs/templates/cert/ca-cert.yaml
-
5k8s/charts/seaweedfs/templates/cert/cert-caissuer.yaml
-
5k8s/charts/seaweedfs/templates/cert/cert-issuer.yaml
-
5k8s/charts/seaweedfs/templates/cert/client-cert.yaml
-
5k8s/charts/seaweedfs/templates/cert/filer-cert.yaml
-
5k8s/charts/seaweedfs/templates/cert/master-cert.yaml
-
5k8s/charts/seaweedfs/templates/cert/volume-cert.yaml
-
5k8s/charts/seaweedfs/templates/cert/worker-cert.yaml
-
3k8s/charts/seaweedfs/templates/cosi/cosi-cluster-role.yaml
-
15k8s/charts/seaweedfs/templates/cosi/cosi-deployment.yaml
-
5k8s/charts/seaweedfs/templates/cosi/cosi-service-account.yaml
-
5k8s/charts/seaweedfs/templates/filer/filer-servicemonitor.yaml
-
21k8s/charts/seaweedfs/templates/filer/filer-statefulset.yaml
-
5k8s/charts/seaweedfs/templates/master/master-servicemonitor.yaml
-
25k8s/charts/seaweedfs/templates/master/master-statefulset.yaml
-
15k8s/charts/seaweedfs/templates/s3/s3-deployment.yaml
-
5k8s/charts/seaweedfs/templates/s3/s3-servicemonitor.yaml
-
15k8s/charts/seaweedfs/templates/sftp/sftp-deployment.yaml
-
5k8s/charts/seaweedfs/templates/sftp/sftp-servicemonitor.yaml
-
59k8s/charts/seaweedfs/templates/shared/_compat.tpl
-
12k8s/charts/seaweedfs/templates/shared/_helpers.tpl
-
3k8s/charts/seaweedfs/templates/shared/cluster-role.yaml
-
7k8s/charts/seaweedfs/templates/shared/post-install-bucket-hook.yaml
-
3k8s/charts/seaweedfs/templates/shared/seaweedfs-grafana-dashboard.yaml
-
11k8s/charts/seaweedfs/templates/shared/security-configmap.yaml
-
5k8s/charts/seaweedfs/templates/shared/service-account.yaml
-
5k8s/charts/seaweedfs/templates/volume/volume-servicemonitor.yaml
-
15k8s/charts/seaweedfs/templates/volume/volume-statefulset.yaml
-
13k8s/charts/seaweedfs/templates/worker/worker-deployment.yaml
-
5k8s/charts/seaweedfs/templates/worker/worker-servicemonitor.yaml
-
98k8s/charts/seaweedfs/values.yaml
@ -1,13 +1,14 @@ |
|||
{{- include "seaweedfs.compat" . -}} |
|||
{{- if .Values.cosi.enabled }} |
|||
apiVersion: v1 |
|||
kind: ServiceAccount |
|||
metadata: |
|||
name: {{ .Values.global.serviceAccountName }}-objectstorage-provisioner |
|||
name: {{ .Values.global.seaweedfs.serviceAccountName }}-objectstorage-provisioner |
|||
namespace: {{ .Release.Namespace }} |
|||
labels: |
|||
app.kubernetes.io/name: {{ template "seaweedfs.name" . }} |
|||
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} |
|||
app.kubernetes.io/managed-by: {{ .Release.Service }} |
|||
app.kubernetes.io/instance: {{ .Release.Name }} |
|||
automountServiceAccountToken: {{ .Values.global.automountServiceAccountToken }} |
|||
automountServiceAccountToken: {{ .Values.global.seaweedfs.automountServiceAccountToken }} |
|||
{{- end }} |
|||
@ -0,0 +1,59 @@ |
|||
{{/* |
|||
Backward-compatibility shim for the global.* → global.seaweedfs.* migration. |
|||
|
|||
When the chart is used as a subchart, .Values.global is shared with sibling |
|||
charts. To avoid namespace pollution, app-specific values were moved under |
|||
global.seaweedfs.* (and global.registry was renamed to global.imageRegistry). |
|||
|
|||
If a user still passes the OLD key paths (e.g. --set global.enableSecurity=true), |
|||
those keys will no longer have defaults in values.yaml, so their mere presence in |
|||
.Values.global means the user explicitly provided them. This helper merges them |
|||
into global.seaweedfs.* so the rest of the templates see a single, canonical |
|||
location. |
|||
|
|||
The helper mutates .Values.global.seaweedfs in-place via `set` and produces no |
|||
output. It is idempotent (safe to call more than once in the same render). |
|||
|
|||
Usage: {{- include "seaweedfs.compat" . -}} |
|||
*/}} |
|||
{{- define "seaweedfs.compat" -}} |
|||
{{- $g := .Values.global -}} |
|||
{{- $sw := $g.seaweedfs | default dict -}} |
|||
|
|||
{{/* --- image-related renames --- */}} |
|||
{{- if hasKey $g "registry" -}} |
|||
{{- $_ := set $g "imageRegistry" (default $g.imageRegistry $g.registry) -}} |
|||
{{- end -}} |
|||
{{- if hasKey $g "repository" -}} |
|||
{{- $img := $sw.image | default dict -}} |
|||
{{- $_ := set $img "repository" (default $img.repository $g.repository) -}} |
|||
{{- $_ := set $sw "image" $img -}} |
|||
{{- end -}} |
|||
{{- if hasKey $g "imageName" -}} |
|||
{{- $img := $sw.image | default dict -}} |
|||
{{- $_ := set $img "name" (default $img.name $g.imageName) -}} |
|||
{{- $_ := set $sw "image" $img -}} |
|||
{{- end -}} |
|||
|
|||
{{/* --- scalar keys that moved 1:1 under global.seaweedfs --- */}} |
|||
{{- range $key := list "createClusterRole" "imagePullPolicy" "restartPolicy" "loggingLevel" "enableSecurity" "masterServer" "serviceAccountName" "automountServiceAccountToken" "enableReplication" "replicationPlacement" -}} |
|||
{{- if hasKey $g $key -}} |
|||
{{- $_ := set $sw $key (index $g $key) -}} |
|||
{{- end -}} |
|||
{{- end -}} |
|||
|
|||
{{/* --- nested dict keys: deep-merge so partial overrides work --- */}} |
|||
{{- range $key := list "securityConfig" "certificates" "monitoring" "serviceAccountAnnotations" "extraEnvironmentVars" -}} |
|||
{{- if hasKey $g $key -}} |
|||
{{- $old := index $g $key | default dict -}} |
|||
{{- $new := index $sw $key | default dict -}} |
|||
{{- if and (kindIs "map" $old) (kindIs "map" $new) -}} |
|||
{{- $_ := set $sw $key (merge $old $new) -}} |
|||
{{- else -}} |
|||
{{- $_ := set $sw $key $old -}} |
|||
{{- end -}} |
|||
{{- end -}} |
|||
{{- end -}} |
|||
|
|||
{{- $_ := set $g "seaweedfs" $sw -}} |
|||
{{- end -}} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue