BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース BloombergがKubernetes用のオープンソースのカオステストツール“PowerfulSeal”をリリース

BloombergがKubernetes用のオープンソースのカオステストツール“PowerfulSeal”をリリース

原文(投稿日:2018/01/25)へのリンク

読者の皆様へ: あなたのリクエストに応じて、大切な情報を見逃すことなく、ノイズを減らす機能を開発しました。お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう

米国オースチンで開催された先日のKubeCon North Americaカンファレンスで、Bloombergは、オープンソースの“PowerfulSeal”ツールを新たに公開した。対象となるポッドと基盤のノードインフラストラクチャを停止させることで、Kubernetesクラスタ内でのカオステストを可能にするツールだ。コンテナオーケストレーションプラットフォームのKubernetesは、マイクロサービスベースの(分散)アプリケーションをデプロイするための一般的な選択肢であり、カオスエンジニアリングに基づくプラクティスは、レジリエントなシステム構築の一助として期待される。

PowerfulSealはカオスエンジニアリングの原則に従って、悪名高いNetflixのChaos Monkeyにインスパイアされたソフトウェアだ。このツールを使うことで、エンジニアは“故意に障害を発生”させて、さまざまな障害モードの導入によって発生する問題を観察することが可能になる。Pythonで記述されたPowerfulSealは、現時点ではKubernetes専用で、OpenStackプラットフォームのインフラストラクチャ障害を管理する“クラウドドライバ”のみを装備しているが、他のクラウドプラットフォーム用のドライバのコントリビューションを促進するために、PythonのAbstractDriverクラスが参照されている。

PowefulSealは、対話(interactive)モードと自律(autonomous)モードという2つのモードで動作する。

  • 対話モードでは、クラスタのコンポーネントを検出し、手動で障害を発生させて、どのうように動作するかを確認することができる。ノードポッドデプロイメントネームスペースに関する操作が可能である。
  • 自律モードでは、任意の数のポッドとノード障害シナリオを記述したポリシファイルが読み込まれて、指定された“障害を発生”する。それぞれのシナリオにはマッチの一覧、フィルタ、クラスタ上で実行するアクションを記述する。

何も設定していない(障害を発生させない)最小のJSONポリシファイルを下記に示す — 発生させる障害は、JSONドキュメントの’nodeSenarios’と’podScenarios’のセクションに指定する。

config:
  minSecondsBetweenRuns: 47
  maxSecondsBetweenRuns: 452

nodeScenarios: []
podScenarios: []

それぞれのシナリオは、マッチ(match)とフィルタ(filter) -- 対象ノード名、IPアドレス、Kuberneteネームスペース、ラベル、日付時刻 -- とアクション -- 開始、停止、終了(kill) -- で構成可能だ。包括的なJSONスキーマを使用して、ポリシファイルを検証することができる。プロジェクトのテスト内には、使用可能なオプションのほとんどを網羅したポリシファイルの例が提供されている。

PowerfulSealはpip経由でインストール可能で、コマンドラインツールがKubernetesクラスタに対して次のように初期化され、構成される。

  • Kubernetesコンフィグファイルを指定して、ターゲットとなるKubernetesクラスタをPowerfulSealに指示する。
  • 適切なクラウドドライバと資格情報を指定して、基盤となるクラウドIaaSプラットフォームをPowerfulSealに指示する。
  • PowerfulSealがノードにSSH接続してコマンドを実行できるようにする。
  • 必要なポリシファイルを作成して、PowerfulSealにロードする。

カオスとレジリエンスに関するエンジニアリングの話題は、昨年から多くの関心を集めるようになっており、この分野での最初のツールとして、例えばGremlinなどが現れている。このような状況に対して、この分野での思想的リーダの一部 -- Adaptive Capacity Labsの共同創設者であるJohn Alspaw氏など -- からは、ツーリングよりも事実として重要なレジリエンスエンジニアリングの人間的側面を忘れてはならない、という警告がなされている。

Gremlin IncのCEOであるKolton Andrus氏もまた、ツーリングだけでは不十分だと述べた上で、訓練と“ゲームデー(game days)”の実施によって、エンジニアに障害への対応方法を教育することの必要性を主張する(氏は先日のInfoQポッドキャストでもこの問題を詳説している)。NetflixのシニアカオスエンジニアであるNora Jones氏も、先日のInfoQポッドキャストで、カオスエンジニアリングのプラクティスの確立と向上に関する自身の意見を述べている。

PowerfulSealに関する詳しい情報と対話型のデモが、プロジェクトのGitHub READMEにある。また、KubeConでの講演“Testing Distributed Software on Kubernetes with PowerfulSeal”のビデオが、CNCF YouTubeチャネルで公開されている。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT