ローリングアップデートによるダウンタイムの回避

最適化されたイメージでテーマ、プロバイダー、または設定を変更する際のダウンタイムを回避します。

デフォルトでは、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 戦略のリビジョン値。他の戦略では無視されます。
表 1. 可能なフィールド値
ダウンタイム? 説明

RecreateOnImageChange (デフォルト)

イメージ名またはタグの変更時

Keycloak 26.1 以前の動作を模倣します。イメージフィールドが変更されると、Operator は新しいイメージを適用する前に StatefulSet をスケールダウンします。

Auto

互換性のない変更時

Keycloak Operator は、ローリングアップデートまたは再作成アップデートが可能かどうかを検出します。

現在のバージョンでは、Keycloak は古いイメージと新しいイメージで Keycloak のバージョンが同じ場合、ローリングアップデートを実行します。将来のバージョンの Keycloak では、その動作を変更し、設定、イメージ、およびバージョンからの追加情報を使用して、ダウンタイムを削減するためにローリングアップデートが可能かどうかを判断します。

Explicit

revision フィールドのみが変更されます

Keycloak Operator は spec.update.revision 値を確認します。以前のデプロイメントと一致する場合、ローリングアップデートを実行します。

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 アップデート戦略を使用している場合は、アップグレード前に非本番環境で徹底的なテストを行うことを強くお勧めします。

CR ステータス

RecreateUpdateUsed の Keycloak CR ステータスは、前回のアップデート操作中に使用されたアップデート戦略を示します。lastTransitionTime フィールドは、前回のアップデートが発生した日時を示します。この情報を使用して、Operator によって実行されたアクションと決定を観察します。

表 2. 条件ステータス
ステータス 説明

不明

初期状態。アップデートがまだ行われていないことを意味します。

False

Operator は前回のアップデートでローリングアップデート戦略を適用しました。

True

Operator は前回のアップデートで再作成アップデート戦略を適用しました。message フィールドは、この戦略が選択された理由を説明します。

このページ内