在 OpenShift 上安裝 Keycloak

在 OpenShift 上部署 Keycloak,其設定與 minikube 環境類似。

雖然 minikube 是此設定的主要目標,但這會追蹤如何在 OpenShift 環境中使用它的進度,請參閱支援的功能

需要具有 cluster-admin 角色的 OpenShift 存取權,才能夠安裝自訂資源定義。

OpenShift 不得從網際網路存取,因為此設定會開啟節點埠和 URL,這些埠和 URL 並未受到良好的密碼和傳輸加密保護。

先決條件

使用 oc cluster-info 驗證設定是否正常運作。

支援的功能

目前,已知下列功能在 OpenShift 上無法運作

sqlpad

容器需要 root 使用者。

監控

OpenShift 僅提供 Grafana、OpenTelemetry 和 Jaeger 進行監控。尚未實作 Graphite。

Cryostat 取決於是否已安裝 Cryostat Operator,這也是 在 AWS 上安裝 OpenShift提供的安裝腳本的預設值。

在 OpenShift 上安裝 Keycloak

  1. https://github.com/keycloak/keycloak-benchmark/簽出 Git 儲存庫。

  2. 變更至資料夾 provision/openshift

  3. 執行 task 命令以在 OpenShift 上佈建所有容器。

若要設定部署,請參閱自訂部署以了解詳細資訊。

從 Operator Hub 安裝 Keycloak

預設情況下,會直接透過 keycloak-k8s-resources 安裝運算子。

若要使用 *Operator Lifecycle Manager* 從 *Operator Hub* 安裝運算子,請設定

KC_OPERATOR_OLM=true

此外,還可以自訂下列參數

KC_OPERATOR_CATALOG_SOURCE_NS

OLM 目錄來源的命名空間。預設為 openshift-marketplace

KC_OPERATOR_CATALOG_SOURCE

OLM 目錄來源。預設為 community-operators

KC_OPERATOR_NAME

目錄來源中 Keycloak Operator 的名稱。預設為 keycloak-operator

KC_OPERATOR_CHANNEL

OLM 訂閱通道。如果未設定,將使用所選運算子的預設通道。

KC_OPERATOR_VERSION

Keycloak Operator 版本。如果未設定,將使用所選通道的目前版本。

請注意,用於 OLM 訂閱的實際 *叢集服務版本* 依慣例設定為

${KC_OPERATOR_NAME}.v${KC_OPERATOR_VERSION}

驗證安裝

執行下列指令碼以檢查所有服務是否正在執行,並接收可用 URL 的清單

./isup.sh

安裝 Grafana 監控

若要安裝具有預先設定儀表板的 Grafana,請執行下列步驟

  1. 執行 task monitoring 命令

驗證安裝

然後,可以在以下位置存取 Grafana 儀表板

https://grafana.apps.<domain name>
這是所有使用 OpenShift 叢集的使用者共用的資源。雖然下一節說明如何在不同的命名空間中安裝多個 Keycloak,但這不適用於 Grafana 執行個體。

OpenShift 記錄

預設會啟用 OpenShift 記錄。所有應用程式和基礎結構 Pod 記錄都會儲存在 openshift-logging 命名空間中非複寫的 ElasticSearch 執行個體中。

可以在 Kibana UI 中查詢記錄,可透過 OpenShift UI 中的 **應用程式啟動器** 應用程式啟動器 → **記錄** 來存取

application launcher logs

此外,當查看 Pod 的記錄時,請使用 **在 Kibana 中顯示** 連結,以搜尋此特定 Pod 的記錄

show in kibana

初次登入 Kibana 時,請使用時間戳記欄位 @timestamp 建立索引模式 *,以便能夠查詢記錄。請參閱 OpenShift 文件以取得更多詳細資訊。

與其他使用者共用一個 OpenShift 叢集

下列選項對於自訂 Keycloak 部署是必要的,使其可供一個 OpenShift 叢集內的多個使用者同時使用。

KC_NAMESPACE_PREFIX

允許自訂命名空間名稱。產生的命名空間將為 ${KC_NAMESPACE_PREFIX}keycloak。預設情況下,命名空間前置詞設定為 $(whoami)-,但可在 .env 檔案中自訂。