fix(chart): support existingSecret and provide CLUSTER_KUBECONFIG_KEY to backend
Build and Deploy Platform / build-and-deploy (push) Failing after 50m25s
Build and Deploy Platform / build-and-deploy (push) Failing after 50m25s
Backend now fails production validation without CLUSTER_KUBECONFIG_KEY. Add cluster-kubeconfig-key to the chart secret and env, plus secrets.existingSecret so GitOps deployments can use a pre-created (sealed) Secret instead of the lookup/randAlphaNum template that churns under Argo CD's helm template rendering. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -46,8 +46,12 @@ app.kubernetes.io/instance: {{ .Release.Name }}
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- define "cloudhost-platform.secretName" -}}
|
{{- define "cloudhost-platform.secretName" -}}
|
||||||
|
{{- if .Values.secrets.existingSecret }}
|
||||||
|
{{- .Values.secrets.existingSecret }}
|
||||||
|
{{- else }}
|
||||||
{{- printf "%s-secrets" (include "cloudhost-platform.fullname" .) }}
|
{{- printf "%s-secrets" (include "cloudhost-platform.fullname" .) }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
{{- define "cloudhost-platform.tlsSecretName" -}}
|
{{- define "cloudhost-platform.tlsSecretName" -}}
|
||||||
{{- if .Values.ingress.tls.secretName }}
|
{{- if .Values.ingress.tls.secretName }}
|
||||||
|
|||||||
@@ -82,6 +82,11 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: {{ include "cloudhost-platform.secretName" . }}
|
name: {{ include "cloudhost-platform.secretName" . }}
|
||||||
key: jwt-refresh-secret
|
key: jwt-refresh-secret
|
||||||
|
- name: CLUSTER_KUBECONFIG_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "cloudhost-platform.secretName" . }}
|
||||||
|
key: cluster-kubeconfig-key
|
||||||
- name: FRONTEND_URL
|
- name: FRONTEND_URL
|
||||||
value: {{ include "cloudhost-platform.corsOrigins" . | quote }}
|
value: {{ include "cloudhost-platform.corsOrigins" . | quote }}
|
||||||
{{- range $key, $val := .Values.backend.env }}
|
{{- range $key, $val := .Values.backend.env }}
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
{{- if not .Values.secrets.existingSecret }}
|
||||||
|
{{/*
|
||||||
|
NOTE: lookup only works with `helm install/upgrade` (CLI). Argo CD renders with
|
||||||
|
`helm template` where lookup is always empty, so values would be regenerated on
|
||||||
|
every sync. For GitOps deployments set secrets.existingSecret and manage the
|
||||||
|
Secret out-of-band (e.g. SealedSecret in the gitops repo).
|
||||||
|
*/}}
|
||||||
{{- $existing := lookup "v1" "Secret" (include "cloudhost-platform.namespace" .) (include "cloudhost-platform.secretName" .) }}
|
{{- $existing := lookup "v1" "Secret" (include "cloudhost-platform.namespace" .) (include "cloudhost-platform.secretName" .) }}
|
||||||
{{- $pgPass := .Values.postgres.password }}
|
{{- $pgPass := .Values.postgres.password }}
|
||||||
{{- if not $pgPass }}
|
{{- if not $pgPass }}
|
||||||
@@ -11,6 +18,10 @@
|
|||||||
{{- if not $jwtRefresh }}
|
{{- if not $jwtRefresh }}
|
||||||
{{- if $existing }}{{- $jwtRefresh = index $existing.data "jwt-refresh-secret" | b64dec }}{{- else }}{{- $jwtRefresh = randAlphaNum 32 }}{{- end }}
|
{{- if $existing }}{{- $jwtRefresh = index $existing.data "jwt-refresh-secret" | b64dec }}{{- else }}{{- $jwtRefresh = randAlphaNum 32 }}{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- $kubeconfigKey := .Values.secrets.clusterKubeconfigKey }}
|
||||||
|
{{- if not $kubeconfigKey }}
|
||||||
|
{{- if and $existing (hasKey $existing.data "cluster-kubeconfig-key") }}{{- $kubeconfigKey = index $existing.data "cluster-kubeconfig-key" | b64dec }}{{- else }}{{- $kubeconfigKey = randAlphaNum 32 }}{{- end }}
|
||||||
|
{{- end }}
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Secret
|
kind: Secret
|
||||||
metadata:
|
metadata:
|
||||||
@@ -23,3 +34,5 @@ stringData:
|
|||||||
postgres-password: {{ $pgPass | quote }}
|
postgres-password: {{ $pgPass | quote }}
|
||||||
jwt-secret: {{ $jwt | quote }}
|
jwt-secret: {{ $jwt | quote }}
|
||||||
jwt-refresh-secret: {{ $jwtRefresh | quote }}
|
jwt-refresh-secret: {{ $jwtRefresh | quote }}
|
||||||
|
cluster-kubeconfig-key: {{ $kubeconfigKey | quote }}
|
||||||
|
{{- end }}
|
||||||
|
|||||||
@@ -77,8 +77,15 @@ frontend:
|
|||||||
|
|
||||||
# JWT secrets — set in production (values-production.example.yaml)
|
# JWT secrets — set in production (values-production.example.yaml)
|
||||||
secrets:
|
secrets:
|
||||||
|
# Use a pre-created Secret instead of chart-managed one. Required for GitOps
|
||||||
|
# (Argo CD renders with `helm template`, so lookup/randAlphaNum regenerate on
|
||||||
|
# every sync). Secret must contain keys: postgres-password, jwt-secret,
|
||||||
|
# jwt-refresh-secret, cluster-kubeconfig-key.
|
||||||
|
existingSecret: ""
|
||||||
jwtSecret: ""
|
jwtSecret: ""
|
||||||
jwtRefreshSecret: ""
|
jwtRefreshSecret: ""
|
||||||
|
# AES key for encrypting stored kubeconfigs (64 hex chars or any passphrase)
|
||||||
|
clusterKubeconfigKey: ""
|
||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
Reference in New Issue
Block a user