PostgreSQLストレージの使用

Keycloakのデプロイメントは、PostgreSQLインスタンスを使用できます。

PostgreSQLストレージの有効化

PostgreSQLデータベースは、実行中のKeycloakインスタンスのデータを格納するために利用できます。これは、provision/kubernetesフォルダー内の.envファイルで以下の設定を介して有効にできます。

PostgreSQLを有効にするには、以下の設定を使用してください。

KC_DATABASE=postgres

すべての構成オプションのリストについては、デプロイメントのカスタマイズを参照してください。

変更を加えるたびに、taskコマンドを再実行して、変更をminikubeインスタンスに適用します。Taskは必要なスクリプトをトリガーし、最小限の手順でminikubeを更新します。rebuild.shを実行する必要はありません。これは完全なインスタンスを破棄し、完了までに非常に時間がかかります。

このデプロイメントは、新しいPostgreSQLポッドをminikubeセットアップに追加し、不要になった他のすべてのストレージポッドを削除します。ポッドが再起動されるたびに、データベースはクリアされます。

Keycloakはminikube内のPostgreSQLデータベースポッドに接続し、DBスキーマを投入します。データベースメトリクスはGrafanaで利用できます。SQL Padを使用すると、ブラウザ経由でデータベースにアクセスできます。

minikube runtime view postgres.dio

セットアップの検証

自動スクリプトは、Keycloakが起動することを確認します。これには、PostgreSQLが最初に起動する必要があります。

ローカルアプリケーションからPostgreSQLへの接続

PostgreSQLのデータベースポートはノードポートとしても利用できるため、ローカルアプリケーションからアクセスできます。コマンドminikube ip192.168.39.39を返したと仮定すると、JDBC URLはjdbc:postgresql://192.168.39.39:30009/keycloakです。

minikubeのIPアドレスは、minikubeインスタンスが再作成されるたびに変更されます。

これは、たとえば、開発者のIDEをデータベースに接続するために使用できます。

接続の詳細:ポートは常に30009、ユーザー名はkeycloak、パスワードはpass、データベース名はkeycloakです。

すべてのポートは、ポートオフセットなしで指定されています。構成オプションKC_PORT_OFFSETを使用している場合は、ポート番号にオフセットを追加する必要があります。ポートオフセットXX(00〜26)およびポート番号300YYの場合、結果のポートは3XXYYになります。

コマンドラインからのデータベースへの接続

PostgreSQLコンテナ内でSQLシェルを起動するには、次のコマンドを使用します。

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

PostgresSQLデータベースからのメトリクス

postgres_exporterのインスタンスがminikubeで実行されており、そのメトリクスはPrometheusで収集されます。

メトリクスのための追加のSQLクエリは、pgexporter-queries.yamlで定義できます。

PostgreSQLのメトリクスとダッシュボード

PostgreSQLからのメトリクスはPrometheusで利用できます。メトリクスは、標準ダッシュボード「keycloak-perf-tests」に表示されます。