Instalación de Keycloak con helm en GKE con base de datos Cloud SQL (externa)

Instalación de Keycloak con helm en GKE con base de datos Cloud SQL (externa)

Estoy intentando instalar keycloak en el clúster GKE en GCP con una base de datos externa, es decir, CloudSQL postrges db. Quiero usar helm para instalarlo, entonces:

helm repo add bitnami https://charts.bitnami.com/bitnami

Descargué el archivo Values.yml del repositorio de bitnami y actualicé la sección "externalDatabase.externalSecret" de este archivo, ya que no quiero ingresar las credenciales en texto sin formato. En lugar de eso, creé Kubernetes Secret:

$ kubectl get secret keycloak-db-secret -o yaml
apiVersion: v1
data:
  POSTGRES_DATABASE: <value>
  POSTGRES_EXTERNAL_ADDRESS: <value>
  POSTGRES_EXTERNAL_PORT: <value>
  POSTGRES_PASSWORD: <value>
  POSTGRES_USERNAME: <value>
kind: Secret
metadata:
...

Y las modificaciones en Values.yml son (el resto del archivo no cambia):

postgresql:
  enabled: false
externalDatabase:
  existingSecret:
    name: keycloak-db-secret
    keyMapping:
      host: POSTGRES_EXTERNAL_ADDRESS
      port: POSTGRES_EXTERNAL_PORT
      user: POSTGRES_USERNAME
      password: POSTGRES_PASSWORD
      database: POSTGRES_DATABASE

cuando corro

helm install --debug my-keycloak bitnami/keycloak -f Values.yml

me sale un mensaje de error

install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /home/michal/.cache/helm/repository/keycloak-5.0.7.tgz

coalesce.go:203: warning: destination for existingSecret is a table. Ignoring non-table value
coalesce.go:203: warning: destination for existingSecret is a table. Ignoring non-table value
Error: YAML parse error on keycloak/templates/statefulset.yaml: error converting YAML to JSON: yaml: line 88: mapping values are not allowed in this context
helm.go:81: [debug] error converting YAML to JSON: yaml: line 88: mapping values are not allowed in this context
YAML parse error on keycloak/templates/statefulset.yaml
helm.sh/helm/v3/pkg/releaseutil.(*manifestFile).sort
        /home/circleci/helm.sh/helm/pkg/releaseutil/manifest_sorter.go:146
helm.sh/helm/v3/pkg/releaseutil.SortManifests
        /home/circleci/helm.sh/helm/pkg/releaseutil/manifest_sorter.go:106
helm.sh/helm/v3/pkg/action.(*Configuration).renderResources
        /home/circleci/helm.sh/helm/pkg/action/action.go:165
helm.sh/helm/v3/pkg/action.(*Install).Run
        /home/circleci/helm.sh/helm/pkg/action/install.go:240
main.runInstall
        /home/circleci/helm.sh/helm/cmd/helm/install.go:242
main.newInstallCmd.func2
        /home/circleci/helm.sh/helm/cmd/helm/install.go:120
github.com/spf13/cobra.(*Command).execute
        /go/pkg/mod/github.com/spf13/[email protected]/command.go:850
github.com/spf13/cobra.(*Command).ExecuteC
        /go/pkg/mod/github.com/spf13/[email protected]/command.go:958
github.com/spf13/cobra.(*Command).Execute
        /go/pkg/mod/github.com/spf13/[email protected]/command.go:895
main.main
        /home/circleci/helm.sh/helm/cmd/helm/helm.go:80
runtime.main
        /usr/local/go/src/runtime/proc.go:204
runtime.goexit
        /usr/local/go/src/runtime/asm_amd64.s:1374

Revisé templates/statefulset.yaml pero no pude encontrar nada que pudiera ser un problema (soy el principiante en el timón). La línea 88 se refiere al archivo yaml generado y no al archivo de plantilla, lo que dificulta la búsqueda de errores.

¿Qué me falta en mi configuración? ¿Cómo puedo depurarlo más? por favor ayuda

PD. La documentación para conectar Keycloak a una base de datos externa está aquí :(https://docs.bitnami.com/kubernetes/apps/keycloak/configuration/use-external-database/

Respuesta1

La externalDatabase.existingSecretclave sólo espera un nombre secreto.
La línea relevante esaquí.

p.ej

postgresql:
  enabled: false
externalDatabase:
  existingSecret: keycloak-db-secret
  host: pg.ns.svc.cluster.local
  port: 5432
  user: pg_username
  database: db_name

NOTA: El secreto debe tener una clave de "contraseña", para utilizar una versión totalmente personalizada, complete auth.existingSecretoauth.existingSecretPerPassword

información relacionada