自訂部署
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 集群。 |