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.existingSecret
clave 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.existingSecret
oauth.existingSecretPerPassword