カオス・メッシュ・アクション
当初は2020年9月18日にwww.chaos-mesh.orgに掲載された.
Chaos Meshは、Kubernetes環境でカオスを組織化する雲ネイティブのカオステストプラットホームです.それが豊かな断層注入タイプと使いやすいダッシュボードでコミュニティでよく受け取られている間、エンドツーエンドテストまたは連続積分(CI)プロセスでカオスメッシュを使うのは、難しいです.その結果、システム開発中に導入された問題は、リリース前には発見できませんでした.
この記事では、カオスメッシュアクションを使用する方法を共有します.
カオスメッシュアクションはGitHub marketで入手でき、ソースコードはGitHubです.
GitHub ActionはGitHubによってネイティブにサポートされているCI/CD機能で、GATHUBリポジトリ内で自動化されカスタマイズされたソフトウェア開発ワークフローを容易に構築できます.
Githubのアクションと組み合わせることで、カオスメッシュは、より簡単にシステムの日常的な開発とテストに統合することができます、このようにgithubの各コード提出はバグフリーであり、既存のコードを破損しないことを保証します.次の図は、CIワークフローに統合されたカオスメッシュアクションを示します.
chaos-mesh-action githubワークフローで動作します.Githubワークフローは、ビルド、テスト、パッケージ、リリース、または任意のGiThubプロジェクトを展開するには、リポジトリに設定することができます設定可能な自動化されたプロセスです.カオスメッシュをCIで統合するには、次の手順を実行します.ワークフローをデザインします. ワークフローを作成します. ワークフローを実行します.
ワークフローをデザインする前に、次の問題を考慮する必要があります.このワークフローでどのような機能をテストしますか? どんなタイプの欠陥が注入されますか? システムの正しさをどうやって検証するか? 例として、次の手順を含む簡単なテストワークフローを設計します. Kubernetesクラスタの2つのポッドを作成します. 他の1つのpodをpingします. カオスメッシュを使用してネットワーク遅延カオスを注入し、pingコマンドが影響を受けるかどうかをテストします.
ワークフローをデザインした後、次のステップを作成します.あなたがテストしたいソフトウェアを含むGithubリポジトリに移動します. ワークフローを作成し、アクションをクリックし、「新規ワークフロー」ボタンをクリックします
ワークフローは本質的にジョブの構成です.ジョブは単一のファイルで構成されることに注意してください.より良い説明のために、以下のようにスクリプトを別のジョブグループに分割します.
ワークフロー名とトリガー規則を設定します.
このジョブはワークフロー“カオス”と名付けます.コードがマスターブランチにプッシュされるか、プルリクエストがマスターブランチに提出されると、このワークフローが引き起こされます.
CI関連の環境をインストールします.
この構成はオペレーティングシステム(Ubuntu)を指定します、そして、それは一種のクラスタをつくるためにhelm/kind-actionを使用します.そしてクラスタに関する関連情報を出力する.最後に、ワークフローのGithubリポジトリをチェックして、アクセスします.
アプリケーションを配備します.
この例では、このジョブは2つのKubernetesポッドを作成するアプリケーションを配備します.
カオスメッシュアクションでカオスを注入します.
システムの正当性を検証する.
この仕事では、ワークフローは片方のポッドをもう一方からpingして、ネットワーク遅れの変化を観察します.
ワークフローが構成されているので、マスターブランチにプル要求を送信することによってトリガーを行うことができます.ワークフローが完了すると、検証ジョブは次のようになります結果を出力します.
現在、我々はカオスメッシュ作用をTiDB Operatorプロジェクトに適用した.ワークフローはPODカオスで注入され、演算子の指定されたインスタンスの再起動機能を検証します.目的は、オペレータのPODが注入された故障によってランダムに削除されるとき、TiDB演算子が正常に働くことを確実にすることです.詳細はTiDB Operator pageを見ることができます.
今後,tidbや関連成分の安定性を確保するために,カオスメッシュ作用を適用した.あなた自身のワークフローを作成するには、カオスメッシュアクションを使用しています.
あなたがバグを見つけるか、何かがなくなっていると思うならば、問題をファイルして、プル・リクエスト(PR)を開けてください、さもなければ、#project-chaos-meshスラック・ワークスペースでCNCFチャンネルで我々に加わってください.
Chaos Meshは、Kubernetes環境でカオスを組織化する雲ネイティブのカオステストプラットホームです.それが豊かな断層注入タイプと使いやすいダッシュボードでコミュニティでよく受け取られている間、エンドツーエンドテストまたは連続積分(CI)プロセスでカオスメッシュを使うのは、難しいです.その結果、システム開発中に導入された問題は、リリース前には発見できませんでした.
この記事では、カオスメッシュアクションを使用する方法を共有します.
カオスメッシュアクションはGitHub marketで入手でき、ソースコードはGitHubです.
カオスメッシュ作用の設計
GitHub ActionはGitHubによってネイティブにサポートされているCI/CD機能で、GATHUBリポジトリ内で自動化されカスタマイズされたソフトウェア開発ワークフローを容易に構築できます.
Githubのアクションと組み合わせることで、カオスメッシュは、より簡単にシステムの日常的な開発とテストに統合することができます、このようにgithubの各コード提出はバグフリーであり、既存のコードを破損しないことを保証します.次の図は、CIワークフローに統合されたカオスメッシュアクションを示します.
Githubワークフローにおけるカオスメッシュ動作の使用
chaos-mesh-action githubワークフローで動作します.Githubワークフローは、ビルド、テスト、パッケージ、リリース、または任意のGiThubプロジェクトを展開するには、リポジトリに設定することができます設定可能な自動化されたプロセスです.カオスメッシュをCIで統合するには、次の手順を実行します.
ワークフローをデザインする
ワークフローをデザインする前に、次の問題を考慮する必要があります.
ワークフローを作成する
ワークフローをデザインした後、次のステップを作成します.
ワークフローは本質的にジョブの構成です.ジョブは単一のファイルで構成されることに注意してください.より良い説明のために、以下のようにスクリプトを別のジョブグループに分割します.
ワークフロー名とトリガー規則を設定します.
このジョブはワークフロー“カオス”と名付けます.コードがマスターブランチにプッシュされるか、プルリクエストがマスターブランチに提出されると、このワークフローが引き起こされます.
name: Chaos
on:
push:
branches:
- master
pull_request:
branches:
- master
CI関連の環境をインストールします.
この構成はオペレーティングシステム(Ubuntu)を指定します、そして、それは一種のクラスタをつくるためにhelm/kind-actionを使用します.そしてクラスタに関する関連情報を出力する.最後に、ワークフローのGithubリポジトリをチェックして、アクセスします.
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Creating kind cluster
uses: helm/[email protected]
- name: Print cluster information
run: |
kubectl config view
kubectl cluster-info
kubectl get nodes
kubectl get pods -n kube-system
helm version
kubectl version
- uses: actions/checkout@v2
アプリケーションを配備します.
この例では、このジョブは2つのKubernetesポッドを作成するアプリケーションを配備します.
- name: Deploy an application
run: |
kubectl apply -f https://raw.githubusercontent.com/chaos-mesh/apps/master/ping/busybox-statefulset.yaml
- name: Run chaos mesh action
uses: chaos-mesh/chaos-mesh-action@xiang/refine_script
env:
CFG_BASE64: YXBpVmVyc2lvbjogY2hhb3MtbWVzaC5vcmcvdjFhbHBoYTEKa2luZDogTmV0d29ya0NoYW9zCm1ldGFkYXRhOgogIG5hbWU6IG5ldHdvcmstZGVsYXkKICBuYW1lc3BhY2U6IGJ1c3lib3gKc3BlYzoKICBhY3Rpb246IGRlbGF5ICMgdGhlIHNwZWNpZmljIGNoYW9zIGFjdGlvbiB0byBpbmplY3QKICBtb2RlOiBhbGwKICBzZWxlY3RvcjoKICAgIHBvZHM6CiAgICAgIGJ1c3lib3g6CiAgICAgICAgLSBidXN5Ym94LTAKICBkZWxheToKICAgIGxhdGVuY3k6ICIxMG1zIgogIGR1cmF0aW9uOiAiNXMiCiAgc2NoZWR1bGVyOgogICAgY3JvbjogIkBldmVyeSAxMHMiCiAgZGlyZWN0aW9uOiB0bwogIHRhcmdldDoKICAgIHNlbGVjdG9yOgogICAgICBwb2RzOgogICAgICAgIGJ1c3lib3g6CiAgICAgICAgICAtIGJ1c3lib3gtMQogICAgbW9kZTogYWxsCg==
カオスメッシュアクションでは、カオスメッシュのインストールとカオスの注入が自動的に完了します.単にBase 64表現を得るために使用するカオス構成を準備する必要があります.ここでは、ポッドにネットワーク遅延カオスを注入したいので、オリジナルのカオス構成を次のように使用します. apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
name: network-delay
namespace: busybox
spec:
action: delay # the specific chaos action to inject
mode: all
selector:
pods:
busybox:
- busybox-0
delay:
latency: "10ms"
duration: "5s"
scheduler:
cron: "@every 10s"
direction: to
target:
selector:
pods:
busybox:
- busybox-1
mode: all
上記のカオス構成ファイルのbase 64値を次のコマンドを使用して取得できます. $ base64 chaos.yaml
システムの正当性を検証する.
この仕事では、ワークフローは片方のポッドをもう一方からpingして、ネットワーク遅れの変化を観察します.
- name: Verify
run: |
echo "do some verification"
kubectl exec busybox-0 -it -n busybox -- ping -c 30 busybox-1.busybox.busybox.svc
ワークフローを実行する
ワークフローが構成されているので、マスターブランチにプル要求を送信することによってトリガーを行うことができます.ワークフローが完了すると、検証ジョブは次のようになります結果を出力します.
do some verification
Unable to use a TTY - input is not a terminal or the right kind of file
PING busybox-1.busybox.busybox.svc (10.244.0.6): 56 data bytes
64 bytes from 10.244.0.6: seq=0 ttl=63 time=0.069 ms
64 bytes from 10.244.0.6: seq=1 ttl=63 time=10.136 ms
64 bytes from 10.244.0.6: seq=2 ttl=63 time=10.192 ms
64 bytes from 10.244.0.6: seq=3 ttl=63 time=10.129 ms
64 bytes from 10.244.0.6: seq=4 ttl=63 time=10.120 ms
64 bytes from 10.244.0.6: seq=5 ttl=63 time=0.070 ms
64 bytes from 10.244.0.6: seq=6 ttl=63 time=0.073 ms
64 bytes from 10.244.0.6: seq=7 ttl=63 time=0.111 ms
64 bytes from 10.244.0.6: seq=8 ttl=63 time=0.070 ms
64 bytes from 10.244.0.6: seq=9 ttl=63 time=0.077 ms
……
出力は10ミリ秒遅れのレギュラーシリーズを示します.これはカオスメッシュ作用に注入したカオス配位と一致した.現状と次のステップ
現在、我々はカオスメッシュ作用をTiDB Operatorプロジェクトに適用した.ワークフローはPODカオスで注入され、演算子の指定されたインスタンスの再起動機能を検証します.目的は、オペレータのPODが注入された故障によってランダムに削除されるとき、TiDB演算子が正常に働くことを確実にすることです.詳細はTiDB Operator pageを見ることができます.
今後,tidbや関連成分の安定性を確保するために,カオスメッシュ作用を適用した.あなた自身のワークフローを作成するには、カオスメッシュアクションを使用しています.
あなたがバグを見つけるか、何かがなくなっていると思うならば、問題をファイルして、プル・リクエスト(PR)を開けてください、さもなければ、#project-chaos-meshスラック・ワークスペースでCNCFチャンネルで我々に加わってください.
Reference
この問題について(カオス・メッシュ・アクション), 我々は、より多くの情報をここで見つけました https://dev.to/wangxiangustc/chaos-mesh-action-integrate-chaos-engineering-into-your-ci-p58テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol