Kubernetes向けカオスエンジニアリングプラットフォーム「Chaos Mesh 1.0」が公開:小規模な異常を実システムに与える
Kubernetes環境に対応したオープンソースのクラウドネイティブなカオスエンジニアリングプラットフォーム「Chaos Mesh 1.0」の一般提供が始まった。小規模な異常を実システムに与え、複雑なシステムの脆弱(ぜいじゃく)性や弱点を発見する手助けになる。
Chaos Meshのメンテナは2020年9月25日(米国時間)、Kubernetes環境でカオスオーケストレーションを実行するオープンソースのクラウドネイティブなカオスエンジニアリングプラットフォーム「Chaos Mesh 1.0」の一般提供開始を発表した。
カオスエンジニアリングとは、小規模な異常(フォールト)を実システムに与え、複雑なシステムの脆弱(ぜいじゃく)性や弱点を発見する手法だ。
Chaos Meshは、Cloud Native Computing Foundation(CNCF)でホストされているサンドボックスプロジェクト。CNCFは、クラウドネイティブアプリケーションの開発運用関連のオープンソースプロジェクトをホストするなどの活動を進めている団体だ。
Chaos Meshは、分散データベース「TiDB」のテストフレームワークとして開発が始まっており、分散システムで発生する可能性がある障害が考慮されている。Chaos Meshが提供する包括的なフォールトタイプはPod(コンテナの集合)やネットワーク、システムI/O、カーネルをカバーしている。
Chaos Meshの特徴は使いやすさとKubernetes対応
Chaos Meshの特徴は使いやすく、Kubernetesに対応していることだ。Chaos Meshには特別な依存関係がなく、MinikubeやKind(Kubernetes-in–docker)を含むKubernetesクラスタへ容易に直接デプロイできる。
テスト対象システムのデプロイロジックに変更を加える必要がなく、カオスエンジニアリングの実験(以下、カオス実験)において、フォールト注入動作のオーケストレーションを簡単に実現できる。実装の詳細を隠すことができるので、ユーザーはカオス実験のオーケストレーションに集中できる。
Chaos MeshではYAMLで記述した「CustomResourceDefinitions」(CRD)を使って、カオスオブジェクトを定義する。
KubernetesエコシステムではCRDは、カスタムリソースを実装するための成熟したソリューションであり、豊富な実装例やツールがある。CRDを使うことで、Chaos Meshを自然にKubernetesエコシステムに統合できる。
Chaos Meshの構成要素
現段階では、Chaos Meshには2つのコンポーネントがある。
- Chaos Operator カオスオーケストレーションのコアコンポーネント。完全にオープンソース化されている
- Chaos Dashboard カオス実験の管理や設計、モニタリングを行うためのWeb UI(開発中)
Chaos OperatorはアプリケーションとKubernetesインフラに管理可能な方法でカオスを注入する。そのためにカオス実験と自動オーケストレーションの簡単なカスタム定義を使用する。次に挙げるコンポーネントによって、この仕組みを実現している。
- コントローラーマネージャ CRDオブジェクトのライフサイクルをスケジューリングしたり、管理したりする
- カオスデーモン ネットワーク上での特権システム権限を持ち、特定のノードでデーモンセット(Cgroupなど)として動作する
CRDオブジェクトの内訳とカオス実験の内容
Chaos Operatorの現在の実装は、フォールト注入のために6種類のCRDオブジェクトをサポートしている。その内訳は「PodChaos」「NetworkChaos」「IOChaos」「TimeChaos」「StressChaos」「KernelChaos」だ。これらは次の主要なアクション(実験)に対応している。
- pod-kill 選択したPodを止める
- pod-failure 選択したPodが指定した時間、使用できない状態を継続する
- container-kill 選択したPod内の特定のコンテナを止める
- netem chaos 遅延、重複などのネットワークカオスを起こす
- network-partition ネットワークパーティションをシミュレートする
- IO chaos ファイルシステムフォールト(I/O遅延、読み書きエラーなど)をシミュレートする
- time chaos 選択したPodにクロックスキューを注入する
- cpu-burn 選択したPodのCPUストレスをシミュレートする
- memory-burn 選択したPodのメモリストレスをシミュレートする
- kernel chaos 選択したPodにslabやbioなどのエラーを注入する
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
日本企業が「カオスエンジニアリングやっていく宣言」を出せた理由
クックパッドが2018年8月2日に公開したブログエントリ「Chaos Engineering やっていく宣言」に大きな反響があった。米国を中心に多くの企業で実践されているが、疑似的とはいえ本番環境に障害を起こさせるというカオスエンジニアリングを日本で実践するのは、まず不可能という向きが多かったからだ。なぜ、クックパッドでは実践することが可能になったのか。I&Oリーダーのためのカオスエンジニアリング入門
「カオスエンジニアリング」は、日本ではまだ聞きなれない言葉だ。だが、システムの信頼性を受け身でない形で確保し、DevOpsによるビジネスの俊敏性向上につなげるために、組織として取り組む必要がある。Kubernetesを手元で試せる「Minikube」「MicroK8s」とは
「コンテナ技術」やコンテナ実行環境の「Docker」、大量のコンテナ管理や負荷分散を実現する「Kubernetes」について概要から本番活用の仕方まで解説する「これから始める企業のためのコンテナ実践講座」。第4回は、Kubernetesのパッケージマネジャー「Helm」と手元で試せる「Minikube」「MicroK8s」を紹介します。