Kubernetes向けカオスエンジニアリングプラットフォーム「Chaos Mesh 1.0」が公開小規模な異常を実システムに与える

Kubernetes環境に対応したオープンソースのクラウドネイティブなカオスエンジニアリングプラットフォーム「Chaos Mesh 1.0」の一般提供が始まった。小規模な異常を実システムに与え、複雑なシステムの脆弱(ぜいじゃく)性や弱点を発見する手助けになる。

» 2020年10月09日 16時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 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のデモ(出典:The Linux Foundation、クリックで再生)

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など)として動作する
Chaos Meshの構成要素(出典:The Linux Foundation

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.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。