Sigo esto pero no funciona.
Creé un secreto personalizado:
apiVersion: v1 kind: Secret metadata: name: keycloak-db-secret data: POSTGRES_DATABASE: ... POSTGRES_EXTERNAL_ADDRESS: ... POSTGRES_EXTERNAL_PORT: ... POSTGRES_HOST: ... POSTGRES_USERNAME: ... POSTGRES_PASSWORD: ...y keycloak con base de datos externa:
apiVersion: keycloak.org/v1alpha1 kind: Keycloak metadata: labels: app: keycloak name: keycloak spec: externalDatabase: enabled: true instances: 1 pero cuando reviso el registro, keycloak no puede conectarse a db. Todavía está usando el valor predeterminado: keycloak-postgresql.keycloak no tiene valor definido en mi secreto personalizado? ¿Por qué no está usando mi valor de los secretos?
ACTUALIZAR
cuando compruebo keycloak pod que fue creado por el operador puedo ver:
env: - name: DB_VENDOR value: POSTGRES - name: DB_SCHEMA value: public - name: DB_ADDR value: keycloak-postgresql.keycloak - name: DB_PORT value: '5432' - name: DB_DATABASE value: keycloak - name: DB_USER valueFrom: secretKeyRef: name: keycloak-db-secret key: POSTGRES_USERNAME - name: DB_PASSWORD valueFrom: secretKeyRef: name: keycloak-db-secret key: POSTGRES_PASSWORDasí que ahora sé por qué no puedo conectarme a db. Utiliza diferentes DB_ADDR. Cómo puedo usar la dirección: my-app.postgres (db en otro espacio de nombres).
No sé por qué POSTGRES_HOST en secreto no funciona y el módulo aún usa el nombre de servicio predeterminado
Para conectarse con el servicio en otro espacio de nombres que puede usar.
<servicename>.<namespace>.svc.cluster.localsuponga que su implementación y servicio de Postgres se ejecutan en el espacio de nombres de prueba , será como
postgres.test.svc.cluster.localesto es lo que estoy usando: https://github.com/harsh4870/Keycloack-postgres-kubernetes-deployment/blob/main/keycload-deployment.yaml
También adjunté el archivo de Postgres, puede usarlo; sin embargo, en mi caso, configuré ambos en el mismo espacio de nombres keycloak y Postgres , por lo que funciona a la perfección.
keycloak-postgresql.keycloak este es otro servicio creado por Keycloak Operator, que se utiliza para conectarse al servicio de Postgresql.
Puede comprobar su punto final.
$ kubectl get endpoints keycloak-postgresql -n keycloak NAME ENDPOINTS AGE keycloak-postgresql {postgresql's service ip}:5432 4m31sSin embargo, la razón por la que falla se debe al selector de este servicio:
selector: app: keycloak component: databaseEntonces, si su DB Pod tiene una etiqueta diferente, el selector no funcionará. Informé este problema a la comunidad. Si me responden, intentaré corregir este error enviando un parche.
Estoy usando Azure PostgreSQL para eso y funciona correctamente. En la configuración de pod, también usa keycloak-postgresql.keycloak como DB_ADDR, pero esto apunta a mi servicio interno creado por el operador basado en keycloak-db-secret .