デプロイメントのカスタマイズ

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 クラスターに接続します。

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_OTELtrue に設定されている場合にのみ有効です。

デフォルト値: 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 クラスターも同様に使用できます。