AKSでの準備作業
Azure Chaos Studioでは、まず実験対象システムのAKSにChaos Meshを導入する必要があります。
Chaos Meshを導入する手順は公式ドキュメントを参照ください。
問題なく作成された場合は、AKS上にて以下のようにChaos Meshが起動していることが確認できます。
$ kubectl get pods -n chaos-testing NAME READY STATUS RESTARTS AGE chaos-controller-manager-7fb56f9797-gjhss 1/1 Running 0 39s chaos-controller-manager-7fb56f9797-htv2z 1/1 Running 0 39s chaos-controller-manager-7fb56f9797-smd5q 1/1 Running 0 39s chaos-daemon-tg9w9 1/1 Running 0 39s chaos-dashboard-85b45d85db-mhm4p 1/1 Running 0 39s
ターゲットの有効化
実験を行うためにはAzure Chaos Studioのターゲットとしてリソースを有効化する必要もあります。
方法についてはMicrosoftの公式ドキュメントを参照ください。
Azure Chaos Studioにて実験対象のAKSのサービス直接欄が「有効」となっていれば、実験の準備完了です。
実験の作成
これまでの準備が完了したら、ようやく実験の作成を始めることができます。
実験では、実行するアクションの設定として順次実行される「ステップ」と、並列で実行される「ブランチ」を定義します。
設定できるアクションは、障害ライブラリのドキュメントに記載されたものの中から選択できます。
今回は、Podを利用不可にさせる実験を追加します。
AKSに対する実験を作成するには、Azure PortalにてJSON構成を直接記載します。
公式ドキュメントにもありますが、このJSONを準備する際には一度YAMLファイルを記載してからJSONにコンバートする方法が簡単です。
下記のように実験を定義するYAMLファイルを作成し、JSONに変換します。変換の際は、YAMLからJSONへのコンバートできるサイトなどを使うのがよいでしょう。
YAMLファイル作成に当たっては、公式ドキュメントのChaos MeshのPod障害の設定方法を参照します。
今回は10分の間、3つあるフロントエンドのPodの1つを利用不可にする実験を行います。
action: pod-failure mode: one duration: '600s' selector: namespaces: - default labelSelectors: app: azure-vote-front
{"action":"pod-failure","mode":"one","duration":"600s","selector":{"namespaces":["default"],"labelSelectors":{"app":"azure-vote-front"}}}
このJSONを、パラメータのjsonSpecに記載し、Durationを設定して実験の作成は完了です。
なお、実験の作成画面で指定するDurationは実験自身の実行期間であり、jsonSpec内のdurationは実験から呼び出されるChaos Meshの実行期間であるため、Duration >= durationとなるように設定します。