使用 Amazon 区域 Aurora PostgreSQL 存储
Amazon 区域 Aurora PostgreSQL 实例可以用作 Keycloak 在单站点或多站点配置中的基础数据库。目前,这仅在 ROSA 上的 Keycloak 部署中受支持。
部署 Aurora 集群
可以通过执行 ./provision/aws/rds/aurora_create.sh
并使用以下环境变量来将 Aurora 集群部署到您选择的 AWS 区域
AURORA_CLUSTER= # The name of the Aurora cluster
AURORA_REGION= # The AWS region hosting the Aurora cluster
AURORA_INSTANCES= # The number of Aurora db instances to create in the AURORA_REGION, defaults to 1
这将创建 Aurora 集群所需的 VPC、子网和路由,以及该集群的 $AURORA_INSTANCES
个 Aurora 实例。要创建多 AZ 数据库,请创建两个实例。该脚本目前不支持为创建的实例创建超过两个 AZ,所有额外的实例将分布在脚本支持的两个 AZ 中。该脚本将等待直到集群和所有实例都可用。如果集群已存在,则会显示一条指示此情况的消息,并且脚本将以退出代码 1 失败。
指定的 |
将 ROSA 集群连接到 Aurora 集群
为了遵循安全最佳实践,Aurora 集群不会通过互联网公开暴露。相反,我们需要在 ROSA 集群 VPC 和 Aurora 集群 VPC 之间建立 对等连接。
要配置这种连接,请运行 ./provision/aws/rds/aurora_create_peering_connection.sh
并使用以下环境变量
AURORA_CLUSTER= # The name of the Aurora cluster
AURORA_REGION= # The AWS region hosting the Aurora cluster
CLUSTER_NAME= # The name of the ROSA cluster to establish the peering connectin with
AWS_REGION= # The AWS region hosting the ROSA cluster
此项目中的脚本确保所有 Aurora 和 ROSA 集群都配置了不重叠的机器 CIDR。
启用 Aurora PostgreSQL 存储
使用以下设置配置 Aurora 存储
KC_DATABASE=aurora-postgres
KC_DATABASE_URL=aws.example.route.com
KC_DATABASE_URL
应该是 Aurora 写入实例的公开端点。这可以通过执行 ./provision/aws/rds/aurora_endpoint.sh
脚本并使用以下环境变量来获取
AURORA_CLUSTER= # The name of the Aurora cluster instance
AURORA_REGION= # The AWS region hosting the Aurora cluster
有关所有配置选项的列表,请参阅 自定义部署。
调试 Aurora PostgreSQL
Aurora DB 集群只能被已建立对等连接的 ROSA 集群访问,因此所有调试连接也必须来自这些集群。连接 psql
到集群的一个简单方法是执行以下操作
kubectl run -i --tty --rm debug --image=postgres:15 --restart=Never -n <namespace> -- psql -h <....rds.amazonaws.com> -d keycloak -U keycloak
这将在 Keycloak 部署命名空间中创建一个 Pod,并建立与 Aurora 集群的连接。首次连接时将出现密码提示,您应该使用密钥 keycloak-db-secret
中定义的密码。退出 Pod shell 后,Pod 将被删除。
要删除数据库的内容,请运行以下命令。然后重新启动所有数据中心中的所有 Keycloak 节点。
DROP SCHEMA public CASCADE; CREATE SCHEMA public;
将 ROSA 集群与单个 Aurora 集群断开连接
要删除 ROSA 集群和特定 Aurora 集群之间的对等连接,请执行 ./provision/aws/rds/aurora_delete_peering_connection.sh
并使用以下环境变量
AURORA_CLUSTER= # The name of the Aurora cluster instance
AURORA_REGION= # The AWS region hosting the Aurora cluster
CLUSTER_NAME= # The name of the ROSA cluster to remove the peering connection from
AWS_REGION= # The AWS region hosting the ROSA cluster
将 ROSA 集群与所有 Aurora 集群断开连接
要删除给定区域中 ROSA 和 Aurora VPC 之间的所有对等连接,请执行 ./provision/aws/rds/aurora_delete_peering_connection.sh
并使用以下环境变量
AURORA_REGION= # The AWS region hosting the Aurora clusters
CLUSTER_NAME= # The name of the ROSA cluster to remove the peering connection from
AWS_REGION= # The AWS region hosting the ROSA cluster