使用 Aurora DB、Infinispan 和 Keycloak 的跨站点部署
在两个 ROSA 集群之间部署一个 Keycloak,使用 Infinispan(启用跨站点)和一个共享的 Aurora DB。
这些步骤会创建 Aurora DB(如果尚不存在),并配置 AWS VPC 和 AWS 路由表,以允许 ROSA 集群访问 Aurora DB 实例。
Infinispan 和 Keycloak 都部署在同一命名空间中。
安装步骤
-
从 https://github.com/keycloak/keycloak-benchmark/ 检出 Git 仓库。
-
按照 AWS Route 53 作为 ROSA 的负载均衡器 中所述,创建一个 Route53 条目。
-
切换到
provision/rosa-cross-dc
文件夹。 -
在文件夹中的
.env
文件中提供 必需的变量。 -
运行
task
命令以在两个 OpenShift 集群上配置所有容器(查看下面必需的变量)。
可用任务
有两个可用任务,一个用于部署,另一个用于取消部署,如下所示
task: Available tasks for this project:
* default: Deploys Infinispan, Aurora DB and Keycloak in a Cross-Site deployment using ROSA clusters
* undeploy: Undeploy Infinispan and Keycloak in a Cross-Site deployment using ROSA clusters
undeploy 任务不会删除 Aurora DB,需要手动删除。查看 provision/aws/rds 目录中的脚本。 |
必需的变量
变量 | 详细信息 |
---|---|
AURORA_CLUSTER |
Aurora 数据库的唯一名称。 |
AURORA_REGION |
部署 Aurora DB 的 AWS 区域。 |
ROSA_CLUSTER_NAME_1 |
一个 ROSA 集群的名称。 |
ROSA_CLUSTER_NAME_2 |
另一个 ROSA 集群的名称。 |
KC_CLIENT_URL |
由 AWS Route 53 作为 ROSA 的负载均衡器 提供的 URL |
KC_HEALTH_URL_CLUSTER_1 |
由 AWS Route 53 作为 ROSA 的负载均衡器 提供的 URL |
KC_HEALTH_URL_CLUSTER_2 |
由 AWS Route 53 作为 ROSA 的负载均衡器 提供的 URL |
自定义 Aurora DB、Keycloak 或 Infinispan 部署。
此安装脚本支持原始部署脚本定义的大多数变量。
对于 Aurora DB 变量,请查看 Aurora 安装 页面。
对于 Infinispan 部署,请查看 Infinispan 安装 页面。
对于 Keycloak 部署,请查看 Keycloak 自定义 页面。请注意,并非所有变量都受支持。例如,KC_ISPN_NAMESPACE
无法更改,因为它由此安装脚本自动计算。
自定义 Keycloak 源代码
此设置默认从 nightly build 部署 Keycloak。要为特定的 Keycloak 源代码创建部署,可以指定 git 仓库和分支。这将替换 Keycloak 和 Keycloak operator 的部署。指定以下变量以使用自定义源代码
变量 | 详细信息 |
---|---|
KC_REPOSITORY |
从中克隆 Keycloak 源代码的 Git 仓库。示例:https://github.com/keycloak/keycloak.git 注意:SSH 仓库可能在 Github Actions 中不起作用,因为可能未配置 SSH 密钥。 |
KC_BRANCH |
要使用的 |
使用 AWS JDBC 驱动程序
AWS 提供了一个 JDBC 驱动程序包装器,它与我们在设置中使用的 Aurora PostgreSQL 兼容。当使用兼容数据库时,此驱动程序提供了一些附加功能。默认情况下,跨站点部署中启用了此包装器。
要禁用 AWS JDBC 驱动程序,请将 KC_USE_AWS_JDBC_WRAPPER
变量设置为 false
。
要指定 AWS JDBC 驱动程序的版本,请将 KC_AWS_JDBC_WRAPPER_URL
变量设置为相应 jar 文件的 URL。
警告 / 已知问题
-
我们知道,有时在 ROSA 集群创建期间,会创建一些孤立的 DHCP 选项集。我们可以使用 bash 脚本监控和清理它们,有关详细信息,请参阅 如何从 ROSA 集群创建中清理孤立的 DHCP 选项。