Kubernetes における Keycloak の障害シミュレーション
Kubernetes 環境における Keycloak Pod の障害シミュレーションを自動化して、障害後の Keycloak の復旧をテストする方法。
なぜ障害テストが必要なのか
一般的な Chaos テストツールがなぜ必要なのかについては、Chaos テストツール krkn の紹介に優れた記述があります。
kc-chaos.sh
スクリプトを使用した障害テストの実行
準備
-
keycloak-benchmark-${version}.[zip|tar.gz]
ファイルを抽出します -
障害テストを実行する予定の場所から Kubernetes クラスターにアクセスできることを確認し、
kubectl get pods -n keycloak-keycloak
などのコマンドを実行します。
負荷のシミュレーション
CLI からベンチマークを実行する ガイドを使用して、特定の Kubernetes 環境に対して負荷をシミュレーションします。
Krkn Chaos テストフレームワークを使用した障害テストの実行
Chaos テストフレームワーク krkn を Taskfile Chaos.yaml の一部として統合し、Kubernetes 上の Keycloak のマルチサイトセットアップ内のさまざまなコンポーネントに対して pod-scenarios
テストを実行するための個別のタスクを作成しました。これは、Keycloak および Infinispan アプリケーションの Pod 障害シナリオのシミュレーションに焦点を当てています。
準備
-
この Taskfile には、Podman/Docker がシステムにインストールおよび構成されている必要があります。
-
ROSA クラスターの Kubernetes 構成ファイルは、指定された
ISPN_DIR
ディレクトリにある必要があります。 -
タスクを実行する前に、必要な環境変数を設定してください。
-
変数のデフォルト値をオーバーライドすることで、タスクの動作をカスタマイズできます。
kraken-pod-scenarios
これは、Kraken Pod 障害シナリオを実行するためのコア機能を提供する内部タスクです。これは、krkn-chaos/krkn-hub リポジトリの pod-scenarios イメージを使用します。このタスクには、以下の変数が必要です
ROSA_CLUSTER_NAME
-
ROSA クラスターの名前
POD_LABEL
-
ターゲット Pod を識別するためのラベルセレクター
EXPECTED_POD_COUNT
-
中断後の Pod の予想数
ISPN_DIR
-
Infinispan 構成を含むディレクトリ
タスクは、DEFAULT_NAMESPACE
、DISRUPTION_COUNT
、WAIT_DURATION
、ITERATIONS
などの変数にいくつかのデフォルト値を設定します。また、Kubernetes 構成ファイルの存在を確認するための前提条件もあります。
kill-gossip-router
このタスクは、Infinispan クラスター内の JGroups Gossip Router Pod を強制終了します。これは、kraken-pod-scenarios
タスクを POD_LABEL
、DISRUPTION_COUNT
、および EXPECTED_POD_COUNT
の特定の値を指定して呼び出します。
現在、 |
制限事項
-
現在、Kraken Pod 内で生成される Krkn レポートを詳しく調べることができませんが、これは一時的なストレージであるため削除されます。これは現在修正が計画されており、GitHub issue で追跡されています。