Ich versuche, Keycloak auf einem GKE-Cluster in GCP mit einer externen Datenbank zu installieren, also CloudSQL Postrges DB. Ich möchte Helm zur Installation verwenden, also:
helm repo add bitnami https://charts.bitnami.com/bitnami
Ich habe die Datei Values.yml aus dem Bitnami-Repository heruntergeladen und den Abschnitt „externalDatabase.externalSecret“ dieser Datei aktualisiert, da ich die Anmeldeinformationen nicht im Klartext eingeben möchte. Stattdessen habe ich ein Kubernetes-Geheimnis erstellt:
$ 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:
...
Und die Änderungen in Values.yml sind (der Rest der Datei wird nicht geändert):
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
Wenn ich laufe
helm install --debug my-keycloak bitnami/keycloak -f Values.yml
Ich erhalte eine Fehlermeldung
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
Ich habe templates/statefulset.yaml überprüft, konnte aber nichts finden, was ein Problem darstellen könnte (ich bin ein Helm-Anfänger). Zeile 88 bezieht sich auf die generierte YAML-Datei und nicht auf die Vorlagendatei, was die Fehlersuche erschwert.
Was fehlt in meiner Konfiguration? Wie kann ich es weiter debuggen? Bitte helfen Sie
PS. Die Dokumentation zum Verbinden von Keycloak mit einer externen Datenbank finden Sie hier :(https://docs.bitnami.com/kubernetes/apps/keycloak/configuration/use-external-database/
Antwort1
Der externalDatabase.existingSecret
Schlüssel erwartet lediglich einen geheimen Namen.
Die entsprechende Zeile lautetHier.
z.B
postgresql:
enabled: false
externalDatabase:
existingSecret: keycloak-db-secret
host: pg.ns.svc.cluster.local
port: 5432
user: pg_username
database: db_name
HINWEIS: Das Geheimnis muss den Schlüssel „Passwort“ haben, um eine vollständig angepasste Version zu verwenden, füllen Sie entweder
auth.existingSecret
oderauth.existingSecretPerPassword