apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
name: example-kc
spec:
update:
strategy: RecreateOnImageChange|Auto|Explicit (1)
revision: "abc" (2)
デフォルトでは、Keycloak Operator は設定変更に対してダウンタイムなしでローリングアップデートを実行し、イメージ名またはタグが変更された場合はダウンタイムありで再作成アップデートを実行します。
このガイドでは、Keycloak Operator を設定して、可能な場合は Keycloak のローリングアップデートを自動的に実行し、ローリングアップデートの自動検出をオーバーライドする方法について説明します。
たとえば、カスタムまたは最適化されたイメージで、テーマ、プロバイダー、またはビルド時の設定のアップデートをロールアウトする際のダウンタイムを回避するために使用します。
Operator は次のアップデート戦略をサポートしています。
少なくとも 2 つのレプリカが実行されている場合、ダウンタイムを回避しながら、StatefulSet をローリング方式でアップデートします。
アップデートを適用する前に StatefulSet をスケールダウンし、一時的なダウンタイムを引き起こします。
Keycloak CR YAML 定義の spec
セクション内でアップデート戦略を指定します。
apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
name: example-kc
spec:
update:
strategy: RecreateOnImageChange|Auto|Explicit (1)
revision: "abc" (2)
1 | ここで目的のアップデート戦略を設定します。 |
2 | Explicit 戦略のリビジョン値。他の戦略では無視されます。 |
値 | ダウンタイム? | 説明 |
---|---|---|
|
イメージ名またはタグの変更時 |
Keycloak 26.1 以前の動作を模倣します。イメージフィールドが変更されると、Operator は新しいイメージを適用する前に StatefulSet をスケールダウンします。 |
|
互換性のない変更時 |
Keycloak Operator は、ローリングアップデートまたは再作成アップデートが可能かどうかを検出します。 現在のバージョンでは、Keycloak は古いイメージと新しいイメージで Keycloak のバージョンが同じ場合、ローリングアップデートを実行します。将来のバージョンの Keycloak では、その動作を変更し、設定、イメージ、およびバージョンからの追加情報を使用して、ダウンタイムを削減するためにローリングアップデートが可能かどうかを判断します。 |
|
|
Keycloak Operator は |
Auto
および Explicit
アップデート戦略についてAuto
アップデート戦略を使用する場合、Keycloak Operator はローリングアップデートの実現可能性を評価するために自動的に Job を開始します。プロセスの詳細については、ローリングアップデートが可能かどうかの確認ガイドを参照してください。このプロセスは、チェックの時間だけクラスターリソースを消費し、StatefulSet のアップデートが開始される前にわずかな遅延を引き起こします。
Explicit
アップデート戦略は、アップデートの決定をユーザーに委ねます。revision
フィールドは、ユーザー制御のトリガーとして機能します。Keycloak Operator は revision
値自体を解釈しませんが、revision
が変更されていない間に Custom Resource (CR) に変更を加えると、ローリングアップデートが開始されます。
自動 Operator アップグレードでこれを使用する場合は注意してください。Operator Lifecycle Manager (OLM) は Keycloak Operator をアップグレードする可能性があり、Explicit
アップデート戦略を使用している場合、Operator が実際にはサポートされていないローリングアップデートを試行するため、予期しない動作やデプロイメントの失敗につながる可能性があります。Explicit
アップデート戦略を使用している場合は、アップグレード前に非本番環境で徹底的なテストを行うことを強くお勧めします。
RecreateUpdateUsed
の Keycloak CR ステータスは、前回のアップデート操作中に使用されたアップデート戦略を示します。lastTransitionTime
フィールドは、前回のアップデートが発生した日時を示します。この情報を使用して、Operator によって実行されたアクションと決定を観察します。
ステータス | 説明 |
---|---|
|
初期状態。アップデートがまだ行われていないことを意味します。 |
|
Operator は前回のアップデートでローリングアップデート戦略を適用しました。 |
|
Operator は前回のアップデートで再作成アップデート戦略を適用しました。 |