{{- if or (not .Values.secrets.JWT_SECRET) (eq .Values.secrets.JWT_SECRET "change-me-to-a-long-random-secret") }} {{- fail "secrets.JWT_SECRET must be overridden to a strong, unique value (e.g. `openssl rand -base64 48`)" }} {{- end }} {{- if and .Values.seedJob.enabled (not .Values.secrets.SEED_ADMIN_PASSWORD) }} {{- fail "secrets.SEED_ADMIN_PASSWORD is required when seedJob.enabled=true" }} {{- end }} apiVersion: v1 kind: Secret metadata: name: {{ include "backend.secretName" . }} labels: {{- include "backend.labels" . | nindent 4 }} annotations: # Hook pre-install/pre-upgrade : le Job de migration (hook lui aussi) tourne # AVANT la création des ressources normales du chart et lit DATABASE_URL # depuis ce Secret. Sans ce hook, le Job démarrerait sans Secret. # Conséquence : `helm uninstall` ne supprime pas ce Secret. "helm.sh/hook": pre-install,pre-upgrade "helm.sh/hook-weight": "-10" "helm.sh/hook-delete-policy": before-hook-creation type: Opaque stringData: {{- range $k, $v := .Values.secrets }} {{ $k }}: {{ $v | quote }} {{- end }} # Assemblées ici (plutôt que passées telles quelles) pour que # database.*/redis.* restent des champs structurés côté values.yaml, à # l'image de postgresql.auth/redis.auth des charts ../postgresql, ../redis # -- alors que backend/internal/platform/config ne sait lire qu'une seule # chaîne de connexion. DATABASE_URL: {{ printf "postgres://%s:%s@%s:%v/%s?sslmode=%s" (.Values.database.user | urlquery) (.Values.secrets.DB_PASSWORD | urlquery) .Values.database.host .Values.database.port .Values.database.name .Values.database.sslmode | quote }} REDIS_URL: {{ printf "redis://:%s@%s:%v/%v" (.Values.secrets.REDIS_PASSWORD | urlquery) .Values.redis.host .Values.redis.port .Values.redis.db | quote }}