配置数据库
Keycloak 需要关系数据库来持久化存储 realms、用户、客户端、会话和事件。本指南介绍生产部署中的数据库配置。
支持的数据库
Alauda Application Services Identity Management E1 已针对以下数据库进行测试并提供支持:
上游 Keycloak 26.x 在引擎层面还支持 MySQL/MariaDB、Microsoft SQL Server 和 Oracle。但是,Alauda Application Services Identity Management E1 仅针对 PostgreSQL 完成验证并提供支持。使用其他数据库供应商的产品须自行承担风险,且可能无法获得支持。
Alauda Application Services Identity Management E1 支持的 PostgreSQL 版本范围在各版本的 release notes 中定义。不要假设上游 Keycloak 支持的所有 PostgreSQL 版本也都已针对 Alauda Build 完成验证。在部署或升级数据库之前,请务必查看 release notes 和兼容性矩阵。
在 Keycloak CR 中配置数据库
数据库连接配置在 spec.db CR 的 Keycloak 部分:
配置参考
创建数据库 Secret
生产环境最佳实践
连接池大小
默认最大连接池大小 100 适用于大多数部署。请根据以下因素进行调整:
- Keycloak 从节点数量(每个从节点维护自己的连接池)
- 预期的并发用户负载
- 数据库服务器的连接限制
对于包含 3 个从节点的 HA 部署,最大连接总数 = poolMaxSize * replicas(例如,100 * 3 = 300)。
数据库高可用性
对于生产环境部署,数据库应具备高可用性:
- 使用支持自动故障转移的托管数据库服务,或
- 部署 PostgreSQL HA 集群(例如,使用 CloudNativePG 或 Zalando Postgres Operator 等 PostgreSQL Operator)。
- 将连接字符串配置为指向主节点/写入端点。
备份和恢复
Keycloak 将所有配置、用户数据和凭据存储在数据库中。可靠的备份策略至关重要。具体的备份流程取决于您的数据库基础设施,不在本指南的范围内。请确保您的数据库备份解决方案:
- 定期执行自动备份(至少每天一次)
- 支持时间点恢复
- 定期通过恢复演练进行测试
- 将备份存储在与数据库分离的位置
数据库 schema 迁移
升级到新版本时,Keycloak 会在启动时自动应用数据库 schema 迁移。不需要手动执行迁移步骤。但是:
- 升级 Keycloak 前始终备份数据库。
- Schema 迁移是单向的,无法回滚。
- 首先在非生产环境中测试升级。