Red HatがOpenShift向けカオスエンジニアリングツールKrakenを発表
Red Hatは、KubernetesおよびOpenShift向けにカオスエンジニアリングを実装するツールであるKrakenを発表した。これはKubernetesのResiliencyを高めるために、Kubernetesの各コンポーネントを外部からランダムに停止/再起動させるためのツールだ。
Krakenは、2017年に金融サービスのBloombergがオープンソース化したツールPowerfulSealとKubernetes/OpenShiftのノードの死活監視を行うツールCerberusを組み合わせたものとなっている。Krakenに関するRed Hatのブログは以下を参照されたい。
Red Hatのブログ:Introduction to Kraken, a Chaos Tool for OpenShift/Kubernetes
Red HatがOpenShiftに取り入れるツールの常として、Krakenも当然オープンソースソフトウェアだ。すでにGitHubにリポジトリーが存在し、ソースの公開とコミュニティへの参加を促している。
GitHubのリポジトリー:https://github.com/cloud-bulldozer/kraken
この概要に示されているように、KrakenはKubernetes/OpenShiftのクラスターに対して停止などのFailureをインジェクトすることでクラスターに対して変化を与える。そしてその状態から自律的にシステムが立ち直るのか? を確認するというのがKrakenのシンプルな機能となる。その機能を実装しているのが、Bloombergが2017年に公開したPowerfulSealだ。
PowerfulSealはBloombergが自社システム向けに開発したテストツールで、オープンソースソフトウェアとして2017年に公開された。2017年の12月にテキサス州オースチンで開催されたKubeCon NAのセッションとして概要を紹介する動画が公開されている。
BloombergのエンジニアによるPowerfulSealのデモ動画:Testing Distributed Software on Kubernetes with PowerfulSeal [I] - Mikolaj Pawlikowski
ここではロンドンをベースに開発を行うBloombergのエンジニアMikolaj Pawlikowski氏がPowerfulSealの概要を20分程度で紹介しており、このセッションの前日にPowerfulSealがオープンソースとして公開されたことを語っている。
このスライドに書かれているように、カオスエンジニアリングの発祥地はAWSをベースに動画配信サービスを開発しているNetflixだ。そのNetflixでシステムのResiliencyを上げるために考案されたのがChaosMonkeyだ。PowerfulSealはChaosMonkeyを参考にして開発されたことが解説されている。主な機能は、仮想マシンとその上に乗るKubernetesのPodを停止させることだ。
PowerfulSealはChaosMonkeyと似てはいるものの、「Kubernetesに特化していること」「オートモード以外にも対話型にテストを行うことができること」「データベースやCIツールであるSpinnakerへの依存がないこと」などがChaosMonkeyとの違いだという。この時点ではOpenStackしかサポートされていなかったが、パブリッククラウドへの対応は完了しているようだ。
対象となるクラスターに対してランダムに停止させるということは、クラスターを監視するツールが実装されるPodなども対象になる可能性があるため、KrakenとモニタリングツールであるCerberusは別のクラスターの中で実装することが推奨されている。
PowerfulSealがクラスターの外部からAPIを通じてノードやPodの停止・削除などを指示し、それが確実に行われたか、復帰ができているかをCerberusを使って監視するというのがKrakenの基本動作だ。停止させる対象となるPodの指定には名前の他にDeploymentやLabelなどでも指定できるために、「あるnamespaceに存在するPodをすべて停止させる」などということも可能だ。
このBloombergのエンジニアのセッションでは、停止させる対象をYAMLに書かれた定義に従って検索し、条件にマッチしたものをフィルターし、それに対してSSHなどで停止させるという例が紹介されている。
Krakenの要素技術についても紹介しよう。まずはPowerfulSealである。このセッションが開催された時点ではまだロゴもできておらず、OpenStackだけがサポートされていることがわかる。2020年11月の段階ではすべてのパブリッククラウドへの対応が終わっているようだ。
Cerberusに関しても紹介しておこう。CerberusはKraken(実体はPowerfulSeal)が停止させる対象となる仮想マシンやPodを監視するためにPythonで書かれたツールで、Red Hatが開発をリードしているようだ。
ここではCerberusは「クラスターのヘルスチェックを行うツール」として紹介されている。ノードの停止などのFailureを適用した後にノードがちゃんと復帰しているのか? をチェックするために、Cerberusが使われているというのがこの部分の説明だ。
Cerberusのワークフローは対象となるクラスターに対してHTTPによる死活監視を行い、結果をレポートやSlackなどにアラートを上げるというものだ。Cerberusについての詳細は以下のブログを参照されたい。
Reinforcing Cerberus: Guardian of OpenShift/Kubernetes Clusters
パブリッククラウドが提供するマネージドのKubernetesに対してオンプレミスでの実装を考えた際に、サポートやアップデートの頻度などを考慮すると、OpenShiftはエンタープライズ企業が選択すべきKubernetesのディストリビューションとしては最適だろう。
そのOpenShiftにカオスエンジニアリングが含まれたということは、システムの信頼性を保つための方策として「壊しても直るかどうかを確かめる」というクラウドネイティブな考え方が取り込まれたということであり、これは歓迎すべき動きだ。
日本のエンタープライズ企業は往々にして二重化やマニュアル化など「壊れないように作る」ことを障害の対策とするが、これに対して「壊しても直るようにシステムを構築する」という発想をRed Hatが示したことを評価したい。Kraken自体はまだ停止などのFailureにしか対応していないが、今後はシナリオベースのFailureや性能劣化などのFailureを実装できるように進化していくことを期待したい。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon+CloudNativeCon NA 2020 IntuitとMayaDataによるカオスエンジニアリングのセッション
- カオスエンジニアリングのOSS、LitmusChaosの概要を解説するCNCFのウェビナーを紹介
- Red Hat Summit 2019で訊いたAPI管理と開発ツールがRed Hatにとって重要な理由
- CNCFのサンドボックスプロジェクト、カオスエンジニアリングのLitmus Chaosを紹介
- Oracle Cloud Hangout Cafe Season5 #5「実験! カオスエンジニアリング」(2022年5月11日開催)
- KubeCon North America:座談会で見えてきた退屈なKubernetesの次の世界
- KubeConサンディエゴ最終日のキーノートはカオスエンジニアリング
- StrimziCon 2024番外編、KafkaのリバランスをKubernetesのオペレータで実行するCruise Controlを紹介
- レッドハットが「OpenShift Commons Gathering Japan 2021」を開催、キーパーソンが語るハイブリッドクラウドを実現するための3つのポイントとは
- KubeCon EU 2021でRed Hatが発表した複数のKubernetesを制御するkcpを紹介