You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Helm部署Keycloak:配置外部LDAP替代默认PostgreSQL及排错

Keycloak Helm Chart配置LDAP替代默认PostgreSQL的方案

报错内容翻译

WARNING: Kubernetes配置文件可被组读取,存在安全风险。位置:/home/kube-user/.kube/config
WARNING: Kubernetes配置文件可被全局读取,存在安全风险。位置:/home/kube-user/.kube/config
Pulled: registry-1.docker.io/bitnamicharts/keycloak:16.1.1
Digest: sha256:efaa12a0e3fb0e8fe32243c67cc8e24bf1854282d10c76c6d02ce0b5f0f1f02e
Error: INSTALLATION FAILED: execution error at (keycloak/templates/NOTES.txt:93:4):
VALUES VALIDATION:
keycloak: database
你禁用了PostgreSQL子Chart,但未指定外部PostgreSQL主机。
要么启用PostgreSQL子Chart(--set postgresql.enabled=true),
要么设置外部数据库主机(--set externalDatabase.host=FOO)
并设置外部数据库密码(--set externalDatabase.password=BAR)
或者指定已存在的密钥(--set externalDatabase.existingSecret=BAR)

可行性说明

LDAP是Keycloak的用户存储扩展,不能替代Keycloak自身的核心元数据存储(比如用户会话、客户端配置、角色等)。Keycloak必须依赖关系型数据库(PostgreSQL、MySQL等)存储核心数据,LDAP仅作为同步/管理用户身份信息的额外数据源。所以你不能完全去掉数据库,必须先配置外部数据库,再额外添加LDAP用户存储。

具体操作步骤

1. 配置外部数据库

先准备好可用的PostgreSQL(或其他Keycloak支持的数据库),再通过Helm参数指定外部数据库信息:

helm install keycloak oci://registry-1.docker.io/bitnamicharts/keycloak \
  --set postgresql.enabled=false \
  --set externalDatabase.host=你的数据库主机地址 \
  --set externalDatabase.port=5432 \
  --set externalDatabase.database=keycloak \
  --set externalDatabase.user=数据库用户名 \
  --set externalDatabase.password=数据库密码

更安全的方式是用已存在的K8s Secret存储密码:

# 创建存储数据库密码的Secret
kubectl create secret generic keycloak-db-secret --from-literal=password=你的数据库密码

# 安装时指定Secret
helm install keycloak oci://registry-1.docker.io/bitnamicharts/keycloak \
  --set postgresql.enabled=false \
  --set externalDatabase.host=你的数据库主机地址 \
  --set externalDatabase.port=5432 \
  --set externalDatabase.database=keycloak \
  --set externalDatabase.user=数据库用户名 \
  --set externalDatabase.existingSecret=keycloak-db-secret

2. 配置LDAP用户存储

方式一:通过控制台配置

  • 访问Keycloak管理控制台(默认路径/admin),登录管理员账号
  • 进入目标Realm,点击左侧菜单User Federation
  • 选择ldap,填写LDAP服务器连接信息(主机、端口、绑定DN、绑定密码等)
  • 配置用户映射规则,测试连接后保存

方式二:通过Helm预配置(批量部署场景)

编辑自定义values.yaml文件,添加LDAP配置:

keycloak:
  extraEnvVars:
    - name: KEYCLOAK_IMPORT
      value: "/opt/keycloak/data/import/ldap-config.json"
  extraVolumeMounts:
    - name: ldap-config
      mountPath: /opt/keycloak/data/import
  extraVolumes:
    - name: ldap-config
      configMap:
        name: keycloak-ldap-config

先创建包含LDAP导入配置的ConfigMap(配置文件为Keycloak Realm导出的JSON,包含LDAP用户存储配置),再执行Helm安装命令。

注意事项

  • 核心元数据必须存在关系型数据库中,LDAP仅用于用户身份管理,不要混淆两者作用
  • 确保外部数据库已提前创建对应库和用户,且Keycloak Pod能访问数据库端口
  • 生产环境优先用Secret存储敏感信息,避免明文配置

内容的提问来源于stack exchange,提问作者Tisighe Livinstone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:42:38