初めに
Chaos Engineering を支援するツールであるChaos MeshをOpenshift上で動かしてみましたので、ご紹介します。
Chaos EngineeringやChaos Meshの詳細については、さまざま情報がInternet上で公開されているので、そちらをご参照ください。
Chaos Mesh の OpenShift へのインストール
基本的には、公式ドキュメント(https://chaos-mesh.org/docs/production-installation-using-helm/)
の手順に従って、導入していきます。
1. 導入先プロジェクトの作成
$ oc project chaos-testing
2. SCCの付与
公式ドキュメントのFAQ(下記URL)に記載の通り、OpenShift上に導入するには、SCC権限の付与が必要になります。
https://chaos-mesh.org/docs/faqs/#q-while-trying-to-install-chaos-mesh-in-openshift-the-problems-regarding-authorization-blocked-the-installation-process
$ oc adm policy add-scc-to-user privileged -n chaos-testing -z chaos-daemon
3. HELMレポジトリの追加
$ helm repo add chaos-mesh https://charts.chaos-mesh.org
4. Chaos Mesh の導入
$ helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-testing --set chaosDaemon.runtime=crio --set chaosDaemon.socketPath=/var/run/crio/crio.sock --version 2.3.0
5. OpenShift Route の作成
$ oc expose svc chaos-dashborad
route.route.openshift.io/chaos-dashboard exposed
$ oc get route chaos-dashboard
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
chaos-dashboard chaos-dashboard-chaos-testing.xxxxxxx.xxxxx chaos-dashboard http None
Chaos Mesh Token 設定
1. ブラウザで上記で作成したrouteにアクセス
2. 「Click here to generate」をクリック
3. 「cluster scoped」にチェックをつけ、「Role」をManagerにします。
画面下の指示に従い、Tokenを取得します。
※最後のkubectl describe secretのコマンドは、最後に「-n default」のオプションをつけて実行してください。
4. 最初に出てきた画面に戻り、「Name」に任意の値を入れ、Tokenに上記で取得したTokenの値を入れ、Submitをクリックします。
障害の注入
今回は、Pod障害の注入を行ってみます。
1. Chaos Mesh の画面から、「Experiments」→「+ New experiment」を選択します。
2. Kubernetes」→「Pod Fault」→「Pod Failure」を選択します。
3. 「Experiment Info」に障害を注入するPODの情報等をしていて、「Submit」をクリックします。
4. Submitエリアが現れるので、「Submit」をクリックし、障害を注入させます。
5. 一部Podで障害が発生し、RESTARTSの数が0から増えていることが確認できます。