デプロイメントのカスタマイズ
Keycloak のデプロイメントは、さまざまなストレージやその他の機能をサポートするために、環境設定を使用してカスタマイズできます。これを変更するための中央の場所は、provision/minikube
フォルダー内の .env
ファイルです。
デフォルトデプロイメント
minikube セットアップで Keycloak を実行すると、デフォルトでは、Keycloak Operator および PostgreSQL データベースを備えた Keycloak の最新の nightly イメージで Keycloak が実行されます。
利用可能なストレージオプションについては、ストレージ構成を参照してください。
デフォルトデプロイメントの変更
デフォルトを変更するには、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 ストレージの使用を参照してください。
mysql
-
シングルノード MySQL インスタンスをデプロイします。
aurora-postgres
-
AWS Aurora PostgreSQL クラスターに接続します。
詳細については、Amazon リージョン Aurora PostgreSQL ストレージの使用 および Amazon グローバル Aurora PostgreSQL クラスターの使用 を参照してください。
- KC_DATABASE_URL
-
Kubernetes クラスターの外部にデプロイされたデータベースの外部エンドポイントを定義します。
デフォルト値: 空
- KC_DB_POOL_INITIAL_SIZE
-
DB 接続プールの初期データベースサイズを設定します。
デフォルト値:
5
最高のパフォーマンスを得るには、初期、最小、および最大の DB 接続プールサイズの値をすべて同じにする必要があります。これにより、新しいリクエストが到着したときに新しい DB 接続を作成することを回避できます。これはコストがかかります。
DB 接続を可能な限り長く開いたままにすると、接続にバインドされたサーバー側のステートメントキャッシュが可能になります。PostgreSQL の場合、サーバー側のプリペアドステートメントを使用するには、クエリを (デフォルトで) 少なくとも 5 回実行する必要があります。
詳細については、プリペアドステートメントに関する PostgreSQL ドキュメントを参照してください。
- KC_DB_POOL_MAX_SIZE
-
Keycloak のストレージ構成パラメーターを設定します。
デフォルト値:
10
DB 接続の最大数に、実行中の Keycloak インスタンスの最大数を掛けた値は、データベースで許可されるデータベース接続の最大数を超えてはなりません。デフォルトの PostgreSQL インスタンスは、最大 100 DB 接続用に構成されています。
追加情報については、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/
で始まる場合、イメージはローカルでビルドされることが想定され、インターネットからプルされません。ローカルイメージのビルド方法については、Kubernetes でのデプロイメント用のカスタム Keycloak イメージの使用を参照してください。
- 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 あたりの初期メタスペースサイズを MB 単位で設定します。
デフォルト値:
96
。 - KC_METASPACE_MAX_MB
-
Keycloak JVM あたりの最大メタスペースサイズを MB 単位で設定します。
デフォルト値:
256
。 - KC_CRYOSTAT
-
Cryostat を有効にして、Keycloak から JFR 記録をキャプチャします。
デフォルト値:
true
。
- KC_OTEL
-
OpenTelemetry を Keycloak で有効にしてトレースを収集するかどうか。
デフォルト値:
true
利用可能なオプション
-
true
— Keycloak の組み込み OpenTelemetry トレースを有効にします。 -
false
— OpenTelemetry トレースを無効にします。
-
- KC_OTEL_SAMPLING_PERCENTAGE
-
レポートするトレースを Jaeger に送信する割合。
KC_OTEL
がtrue
に設定されている場合にのみ有効です。デフォルト値:
0.01
(すべてのトレースの 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 コンソールを開いたときに URL に表示される
apps.<ドメイン名>
で使用します。デフォルト値は、ユーザーが接続している 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
の AWS Secret Manager のシークレットkeycloak-master-password
から取得されます。aws
コマンドが失敗するか、マシンで使用できない場合、文字列admin
が使用されます。このオプションは、OpenShift デプロイメントでのみ実装されています。
- KC_DISABLE_STICKY_SESSION
-
単一のマシンから Keycloak ベンチマークを実行すると、OpenShift Route はトラフィックを同じ Keycloak Pod にリダイレクトします。最初の接続はランダムな Keycloak Pod に到達しますが、同じソース IP からの今後の接続は Pod (スティッキーセッション) にリダイレクトされます。このオプションは、この動作を無効にし、OpenShift Route が利用可能なすべての Keycloak Pod 間でラウンドロビンを使用するように構成します。
デフォルト値:
false
利用可能なオプション
-
true
— OpenShift Route がすべての接続にラウンドロビンを使用するように強制します (スティッキーセッションなし)。 -
false
— デフォルトの OpenShift Route ロードバランサーのルールを使用します。
このオプションは、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 クラスターの名前空間。
クロスサイト対応の Infinispan クラスターも同様に使用できます。 |