Cloud SQL(외부) 데이터베이스가 있는 GKE에 helm을 사용하여 Keycloak 설치

Cloud SQL(외부) 데이터베이스가 있는 GKE에 helm을 사용하여 Keycloak 설치

외부 데이터베이스(예: CloudSQL postrges db)를 사용하여 GCP의 GKE 클러스터에 keycloak을 설치하려고 합니다. Helm을 사용하여 설치하고 싶습니다.

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

bitnami repo에서 Values.yml 파일을 다운로드했으며 일반 텍스트로 자격 증명을 입력하고 싶지 않기 때문에 이 파일의 "externalDatabase.externalSecret" 섹션을 업데이트했습니다. 대신 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:
...

Values.yml의 수정 사항은 다음과 같습니다(파일의 나머지 부분은 변경되지 않음).

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

내가 달릴 때

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

오류 메시지가 나타납니다.

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

template/statefulset.yaml을 확인했지만 문제가 될 수 있는 항목을 찾을 수 없습니다(저는 조타 초보자입니다). 88행은 버그 사냥을 더 어렵게 만드는 템플릿 파일이 아니라 생성된 yaml 파일을 나타냅니다.

내 구성에서 무엇이 빠졌나요? 어떻게 더 디버깅할 수 있나요? 도와주세요

추신. Keycloak을 외부 데이터베이스에 연결하기 위한 문서는 여기에 있습니다 :(https://docs.bitnami.com/kubernetes/apps/keycloak/configuration/use-external-database/

답변1

externalDatabase.existingSecret에는 비밀 이름만 필요합니다.
관련 라인은여기.

예를 들어

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

참고: 완전히 사용자 정의된 버전을 사용하려면 비밀에 "password" 키가 있어야 합니다 auth.existingSecret.auth.existingSecretPerPassword

관련 정보