如何利用操作员和外部数据库创建钥匙罩 [英] How to create keycloak with operator and external database
本文介绍了如何利用操作员和外部数据库创建钥匙罩的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我关注this,但它不起作用。
我创建了自定义密钥:
apiVersion: v1
kind: Secret
metadata:
name: keycloak-db-secret
data:
POSTGRES_DATABASE: ...
POSTGRES_EXTERNAL_ADDRESS: ...
POSTGRES_EXTERNAL_PORT: ...
POSTGRES_HOST: ...
POSTGRES_USERNAME: ...
POSTGRES_PASSWORD: ...
和带有外部数据库的密钥罩:
apiVersion: keycloak.org/v1alpha1
kind: Keycloak
metadata:
labels:
app: keycloak
name: keycloak
spec:
externalDatabase:
enabled: true
instances: 1
但是,当我检查日志时,KEYCLOAK无法连接到数据库。它是否仍在使用默认值:keycloak-postgresql.keycloak
不是在我的自定义密码中定义的值?为什么不使用我来自机密的价值?
更新
当我检查由操作员创建的钥匙斗篷Pod时,我可以看到:
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_PASSWORD
现在我知道为什么我无法连接到数据库了。它使用不同DB_ADDR。如何使用地址:my-app.postgres(另一个命名空间中的db)。
我不知道为什么密码中的postgres_host不起作用,Pod仍然使用默认服务名称
推荐答案
连接到您可以使用的另一个命名空间中的服务。
<servicename>.<namespace>.svc.cluster.local
假设您的Postgres部署和服务在测试命名空间中运行,将如下所示
postgres.test.svc.cluster.local
我还附上了postgres文件,您可以使用它,但在我的示例中,我在相同的命名空间密钥伪装和postgres中都进行了设置,因此工作起来很有魅力。
这篇关于如何利用操作员和外部数据库创建钥匙罩的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文