自訂部署

Keycloak 的部署可以使用環境設定進行自訂,以支援不同的儲存和其他功能。變更此設定的主要位置是 provision/minikube 資料夾中的 .env 檔案。

預設部署

在 minikube 設定上執行 Keycloak 時,預設會使用 Keycloak Operator 和 Keycloak 的最新 nightly 映像以及 PostgreSQL 資料庫執行。

請參閱 儲存組態,以查看可用的儲存選項。

變更預設部署

若要變更預設值,請在 provision/minikube 資料夾中建立 .env

以下範例組態啟用 PostgreSQL。

KC_DATABASE=postgres

每次變更後,重新執行 task 命令,以將變更套用至 minikube 執行個體。Task 會觸發必要的指令碼,並使用最少的步驟來更新 minikube。不需要執行 rebuild.sh:它會銷毀完整的執行個體,並花費更長的時間才能完成。

作為替代方法,參數可以傳遞至 task 命令的命令列

task KC_DATABASE="postgres"

可用的 Keycloak 組態選項

以下組態選項可用於組態 Keycloak 和受測系統的其他部分。所有預設值都在 Taskfile.yaml 中設定。

KC_DATABASE

設定要部署為 Keycloak 資料庫的儲存。

預設值:postgres

可用選項

postgres

部署單節點 PostgreSQL 執行個體。

請參閱 使用 PostgreSQL 儲存,以取得更多資訊。

aurora-postgres

連線到 AWS Aurora PostgreSQL 叢集。

KC_DATABASE_URL

定義部署於 Kubernetes 叢集外部的資料庫外部端點。

預設值:空白

KC_DB_POOL_INITIAL_SIZE

設定資料庫連線集區的初始資料庫大小。

預設值:5

為了達到最佳效能,初始、最小和最大資料庫連線集區大小的值應全部相等。這可避免在新請求進入時建立新的資料庫連線,因為這會造成成本。

讓資料庫連線保持開啟盡可能長的時間,可讓伺服器端陳述式快取與連線綁定。在 PostgreSQL 的情況下,為了使用伺服器端預備陳述式,查詢需要執行(預設)至少五次

如需更多資訊,請參閱 PostgreSQL 文件中的預備陳述式

KC_DB_POOL_MAX_SIZE

設定 Keycloak 的儲存組態參數。

預設值:10

最大資料庫連線數乘以執行中 Keycloak 執行個體的最大數目,不得超過資料庫允許的最大資料庫連線數。預設 PostgreSQL 執行個體設定為最多 100 個資料庫連線。

如需其他資訊,請參閱 KC_DB_POOL_INITIAL_SIZE

KC_DB_POOL_MIN_SIZE

設定 Keycloak 的儲存組態參數。

預設值:5

如需更多資訊,請參閱 KC_DB_POOL_INITIAL_SIZE

KC_OPERATOR_TAG

允許自訂 Keycloak Operator 的版本。

預設值:nightly

KC_CONTAINER_IMAGE

設定要用於 Keycloak 的映像。使用 Keycloak Operator 的 nightly 映像時,這預設為 quay.io/keycloak/keycloak:nightly

當映像名稱開頭為 localhost/ 時,預期會在本機建置映像,而不會從網際網路提取。

請參閱 使用自訂 Keycloak 映像在 Kubernetes 中部署,了解如何建置本機映像。

KC_INSTANCES

設定 Keycloak 執行個體的數量。

預設值:1

KC_CPU_LIMITS

設定每個 Keycloak Pod 的 CPU 限制。

預設值:4

值必須符合 Kubernetes CPU 單位格式。

KC_MEMORY_LIMITS_MB

設定每個 Keycloak Pod 的記憶體限制(以 MB 為單位)。

預設值:1024

KC_METASPACE_INIT_MB

設定每個 Keycloak JVM 的初始 Meta Space 大小(以 MB 為單位)。

預設值:96

KC_METASPACE_MAX_MB

設定每個 Keycloak JVM 的最大 Meta Space 大小(以 MB 為單位)。

預設值:256

KC_CRYOSTAT

啟用 Cryostat 以從 Keycloak 擷取 JFR 錄製。

預設值:true

KC_OTEL

是否應為 Keycloak 啟用 OpenTelemetry 以收集追蹤。

預設值:false

可用選項

  • true — 啟用 Keycloak 的內建 OpenTelemetry 追蹤。

  • false — 停用 OpenTelemetry 追蹤。

KC_OTEL_SAMPLING_PERCENTAGE

應將多少追蹤傳送至 Jaeger 以進行報告。僅當 KC_OTEL 設定為 true 時才有效。

預設值:0.001 (會將所有追蹤的 0.1% 報告給 Jaeger)。

雖然值 1.0 對於在本地測試期間將所有追蹤報告給 Jaeger 很有用,但會產生大量資料,這將使 Jaeger 執行個體的記憶體過載,最終會重新啟動。在效能執行期間,僅收集所有追蹤的一小部分。

KC_CUSTOM_INFINISPAN_CONFIG

是否應使用自訂 Infinispan 組態。此選項僅對舊版儲存有效。

預設值:true

可用選項

  • true — 將 Keycloak 設定為使用已掛載至每個 Pod 的自訂組態檔。該檔案可以在這裡找到:kcb-infinispan-cache-config.xml

  • false — 使用 Keycloak 發行版中包含的預設 Infinispan 組態。

KC_HOSTNAME_OVERRIDE

覆寫使用 KC_HOSTNAME_SUFFIX 計算的 Keycloak 主機名稱。當使用與 OpenShift 叢集不同的網域名稱部署 Keycloak 時,這非常有用。

預設值:""

KC_HOSTNAME_SUFFIX

部署至 OpenShift 環境時使用的主機名稱後綴。在開啟 OpenShift 主控台時,將其與 apps.<網域名稱> 搭配使用,如 URL 中所示。

預設值會從使用者連線的 OpenShift 上部署的主控台中擷取。

KC_NAMESPACE_PREFIX

預設情況下,Keycloak 執行個體會部署到 keycloak 命名空間。可以透過將前綴新增至命名空間名稱來自訂命名空間名稱。產生的命名空間將為 ${KC_NAMESPACE_PREFIX}keycloak

預設值:$(whoami)-

此選項僅針對 OpenShift 部署實作。
KC_PORT_OFFSET

此參數允許將每個建立的服務的連接埠變更一些偏移量。當多個 Keycloak 執行個體部署到同一個叢集時,這非常有用。如需更多資訊,請參閱 與多個使用者共用叢集 一節。

預設值:0

可用選項:0-26

此選項僅針對 OpenShift 部署實作。
KC_ADMIN_PASSWORD

Keycloak 管理員使用者和 Grafana 管理員使用者的密碼。

預設值是從來自 eu-central-1 區域名為 keycloak-master-password 的 AWS Secret Manager 中的密碼取得。如果 aws 命令失敗或在電腦上無法使用,則會使用字串 admin

此選項僅針對 OpenShift 部署實作。
KC_DISABLE_STICKY_SESSION

從單一電腦執行 Keycloak 基準測試會使 OpenShift 路由將流量重新導向到相同的 Keycloak Pod。第一個連線會到達隨機的 Keycloak Pod,但來自相同來源 IP 的未來連線將重新導向至該 Pod(黏性工作階段)。此選項會停用此行為,並將 OpenShift 路由設定為在所有可用的 Keycloak Pod 之間使用循環配置資源。

預設值:false

可用選項

  • true — 強制 OpenShift 路由對所有連線使用循環配置資源 (無黏性工作階段)。

  • false — 使用預設的 OpenShift 路由負載平衡器規則。

此選項僅針對 OpenShift 部署實作。
KC_IS_ACTIVE_PASSIVE

以主動/被動設定部署 Keycloak。當使用主動/被動負載平衡器時,應將此設定為 true。

可用的基準測試選項

以下組態選項可用於組態輔助應用程式。所有預設值都在 Taskfile.yaml 中設定。

KB_RETENTION

保留日誌、指標和追蹤的保留期間(以小時為單位)。

預設值:168h

可用選項:可以變更為任何小時數的值,該值必須是 24 小時的倍數。

使用舊版儲存連線至外部 Infinispan 叢集

僅適用於 OpenShift 部署。

如果 Infinispan 依照在 OpenShift 上安裝 Infinispan中所述方式部署在 Openshift 集群中,請使用以下變數來指示 Infinispan 集群正在運行的命名空間。

KC_ISPN_NAMESPACE

Infinispan 集群部署在本地 Openshift 集群中的命名空間。

此外,快取需要配置遠程儲存。它使用 Hot Rod 協議將 Session 卸載到 Infinispan 集群。檔案 kcb-infinispan-cache-remote-store-config.xml 包含此所需的配置。使用 KC_CUSTOM_INFINISPAN_CONFIG_FILE=config/kcb-infinispan-cache-remote-store-config.xml 上傳並在您的 Keycloak 集群中使用此檔案。

也可以使用啟用跨站點的 Infinispan 集群。