使用 PostgreSQL 儲存空間

Keycloak 的部署可以使用 PostgreSQL 實例。

啟用 PostgreSQL 儲存空間

可以使用 PostgreSQL 資料庫來儲存正在運行的 Keycloak 實例的資料。 可以透過 provision/kubernetes 資料夾中 .env 檔案的下列設定啟用。

使用下列設定來啟用 PostgreSQL

KC_DATABASE=postgres

如需所有組態選項的清單,請參閱自訂部署

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

部署會將新的 PostgreSQL Pod 新增至 minikube 設定,並移除不再需要的所有其他儲存 Pod。每次重新啟動 Pod 時,資料庫都會被清除。

Keycloak 連線至 minikube 內的 PostgreSQL 資料庫 Pod,並填入 DB 結構描述。資料庫指標可在 Grafana 中取得。SQL Pad 允許透過瀏覽器存取資料庫。

minikube runtime view postgres.dio

驗證設定

自動化指令碼會驗證 Keycloak 是否啟動,這需要 PostgreSQL 先啟動。

將本機應用程式連線至 PostgreSQL

PostgreSQL 的資料庫埠也可用作節點埠,以便可以從本機應用程式存取。假設命令 minikube ip 傳回 192.168.39.39,則 JDBC URL 為 jdbc:postgresql://192.168.39.39:30009/keycloak

每次重新建立 minikube 實例時,minikube 的 IP 位址都會變更。

例如,它可以用來將開發人員的 IDE 連線至資料庫。

連線詳細資訊:埠一律為 30009,使用者名稱為 keycloak,密碼為 pass,資料庫名稱為 keycloak

所有埠均在沒有埠偏移的情況下指定。如果您使用組態選項 KC_PORT_OFFSET,則需要將偏移量新增至埠號。對於埠偏移量 XX (00-26) 和埠號 300YY,產生的埠將為 3XXYY。

在命令列上連線至資料庫

若要在 PostgreSQL 容器內啟動 SQL Shell,請使用下列命令

kubectl exec `kubectl get pods --selector=app=postgres -n keycloak -o name` -n keycloak -it -- psql --user keycloak

來自 PostgresSQL 資料庫的指標

在 minikube 中執行 postgres_exporter 的實例,並且其指標會收集在 Prometheus 中。

可以在 pgexporter-queries.yaml 中定義其他用於指標的 SQL 查詢。

PostgreSQL 的指標和儀表板

Prometheus 中提供來自 PostgreSQL 的指標。指標會顯示在標準儀表板「keycloak-perf-tests」中