使用 Aurora DB、Infinispan 和 Keycloak 的跨站點部署
在兩個具有 Infinispan(啟用跨站點)和共用 Aurora DB 的 ROSA 叢集之間部署 Keycloak。
如果 Aurora DB 尚不存在,此步驟會建立 Aurora DB,並設定 AWS VPC 和 AWS Route Tables,以允許 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 來源
依預設,此設定會從每日建置部署 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 提供與我們設定中使用的 Aurora PostgreSQL 相容的 JDBC 驅動程式包裝器。使用相容的資料庫時,此驅動程式提供一些額外功能。此包裝器在跨站點部署中預設為啟用。
若要停用 AWS JDBC 驅動程式,請將 KC_USE_AWS_JDBC_WRAPPER
變數設定為 false
。
若要指定 AWS JDBC 驅動程式的版本,請將 KC_AWS_JDBC_WRAPPER_URL
變數設定為對應 jar 檔案的 URL。
警告/已知問題
-
我們知道,有時在建立 ROSA 叢集期間,會建立一些孤立的 DHCP 選項集。我們可以使用 Bash 腳本監控和清除它們,如需更多相關資訊,請參閱如何從 ROSA 叢集建立中清除孤立的 DHCP 選項。