運用自動化を実現するKeptnの最新バージョン0.8で導入されたカスタムシーケンスとは

2021年7月6日(火)
松下 康之 - Yasuyuki Matsushita
CNCFのサンドボックスプロジェクトKeptnの最新バージョン0.8で追加された新機能を紹介する。

CI/CDやテスト、さらに障害時の対応までの自動化をオーケストレーションするツールKeptnの最新バージョン、0.8がリリースされた。KeptnはCNCFにホストされているオープンソースプロジェクトであり、2020年6月26日にSIG App Deliveryで検討され、TOCの承認を経てサンドボックスプロジェクトとなっている。今回はKeptnのユーザーグループの動画配信を素材に、0.8での変更点などを紹介する。

Keptnとは

動画:Keptn 0.8 feature highlights and important changes - Keptn User Group

Keptnのユーザーグループコールから紹介

Keptnのユーザーグループコールから紹介

プレゼンターはRawkodeの動画にも登場したKeptnのコミュニティリードJürgen Etzlstorfer氏と、DynatraceのエンジニアでKeptnのDeveloper RelationsであるAndreas Grabner氏だ。

KeptnはCI/CDからテストの自動化、運用の自動化、品質管理、さらに障害時の対応についても自動化を行うハイレベルのツールという位置付けで、CI/CD、テストツール、ライフサイクルマネージメント、クオリティゲーティングなどのソフトウェアを上位からコントロールするツール、というのが大雑把な表現方法と言えるだろう。

Keptnとは何か? を紹介

Keptnとは何か? を紹介

このスライドでは「データドリブンデリバリー&オペレーションオートメーション」と書かれているが、ポイントはJenkinsやArgoCD、Helm、GitLab、CircleCI、Tektonなどのツールをコントロールするツールという部分だろう。それらのツールを組み合わせて自動化を行うことで、さまざまなユースケースに利用できるというのがKeptnの特徴だ。

このことを、3つの異なる事例で表したのが次のスライドだ。

3つの事例で用途に合わせた利用ができることを紹介

3つの事例で用途に合わせた利用ができることを紹介

会計ソフトを提供するIntuitは、ArgoCD、Gatling、Jenkinsを組み合わせてSLO(Service Level Objectives)をベースにしたクオリティゲートの自動化を実現した。パフォーマンスモニタリング、性能テストをサービスとして提供するドイツのベンチャーTrisconは、NeoLoad、Jenkinsを組み合わせてパフォーマンステストの自動化を実現した。そして臨床試験向けのITサービスを提供するERT、はGitLab、Helm、JMeterと組み合わせてデリバリーの自動化を実現しているという。

Keptn 0.8の紹介

ここからはKeptnの最新バージョン0.8を紹介する内容となった。

Keptn 0.8の概要を紹介

Keptn 0.8の概要を紹介

0.8での最大の変更点はShipyardという構成管理を行うモジュール(実際にはYAMLファイルによる設定)が0.1.xから0.2.0にバージョンアップしたことで、従来のデベロップメント、ステージング、プロダクションという3つの固定的な段階設定ではなく、カスタマイズできるようになったことだろう。このスライドでは「Very opinionatedからCustomize our opinion」と記載されている。これは、3つの段階を固定的に設定したやり方からユーザー自身がそれぞれの段階を自由に設定できるようになったことを表している。

最大の変更点は固定的な段階設定をカスタマイズ可能にしたこと

最大の変更点は固定的な段階設定をカスタマイズ可能にしたこと

このスライドの右側の例にあるように、それぞれの段階においてシーケンスという順番を指定できるようになっている。これにより、もっと詳細にそれぞれの段階で必要となる処理やデリバリーの方法を設定可能となっている。opinionatedは日本語では独断と訳される単語だが、Keptnの場合はデベロップメント、ステージング、プロダクションという3つのステージによってアプリケーションのデリバリーが行われるという固定的な設定を、ユーザーが自由にカスタマイズできようになったことで自由度が増したと解釈するべきだろう。

それぞれの段階が実際に起動される部分を詳細に解説したのが次のスライドだ。ここではシーケンスに含まれるタスク、そしてタスクを起動するトリガーを解説している。

ステージを起動するシーケンスとタスク、そしてトリガー

ステージを起動するシーケンスとタスク、そしてトリガー

ここでは「Trigger sequence delivery in stage Dev」と記述されているが、内容としては「Dev段階におけるデリバリーというシーケンスを起動する」流れが解説されている。デプロイメント、テスト、評価、リリース、承認という開発段階における細かなステップがシーケンスによって記述され、SLI(Service Level Indicator)によって評価され最終的に承認されるという状況を解説している。

例を用いてDvからStagingに進む流れを紹介

例を用いてDvからStagingに進む流れを紹介

ここではStagingという段階において「パフォーマンステストを実施し、結果がOKであればリリースする」という流れだが、最終的にSLIにおいて望む結果が得られなかった場合(例:性能が低い)、デプロイメントをロールバックするという記述がされている。ここのロールバックはKeptnの機能ではなく、Jenkinsなどの下位のツールの仕事となる。またMonacoという記述があるが、これはDynatraceが公開しているオープンソースソフトウェアで「Monitoring as code」の略であるという。

参考:dynatrace-oss/dynatrace-monitoring-as-code: This tool automates deployment of Dynatrace Monitoring Configuration to one or multiple Dynatrace environments.

モニタリングを運用側の要件ではなくデベロッパーがコードに組み込むことでシフトレフトする発想を実装したツールと言えるだろう。

KeptnのCLIでトリガーを実行する例の解説

KeptnのCLIでトリガーを実行する例の解説

ここではトリガーを実行するCLIをコマンドのパラメータとJSONデータを比較して紹介しているが、単に次の段階に進むだけではなく、クオリティゲートを行うためにも使えることが2つのタイプとして紹介されている。

クオリティゲートについてはSLI、SLO(Service Level Objective)の関係を理解する必要があるだろう。以下の図はKeptnのドキュメントサイトのスライドからの引用だが、KPIとなる項目をSLI、それが定量的にどのレベルになったら合格とするか? を設定するのがSLOとなる。KeptnはSLIとSLOを用いて各段階を評価し、次の段階に進むかどうかを決定する。この例ではPrometheusのメトリクスを使ってエラーレートを評価している。

Keptnのクオリティゲートの実装例

Keptnのクオリティゲートの実装例

参考:Slides & Logos | keptn | Cloud-native application life-cycle orchestration

デベロップメント、ステージング、プロダクションでのデリバリーを可視化

デベロップメント、ステージング、プロダクションでのデリバリーを可視化

ここでのデモはKeptnをCLIから実行し、UIを使い各段階の状況を可視化するという流れだ。

デベロップメント、ステージング、プロダクションの各段階の中に細かいシーケンスとタスクがある

デベロップメント、ステージング、プロダクションの各段階の中に細かいシーケンスとタスクがある

シーケンスとタスク、そしてそれを起動するトリガーに関して細かい解説を行ったスライドが次のスライドになる。

左がYAMLファイル、中央がUI、右がその解説となる

左がYAMLファイル、中央がUI、右がその解説となる

Keptn 0.8では固定的な段階設定からは進化したものの、まだ制限があるとしている。具体的にはステージの追加/削除ができない点だ。一方でシーケンスとタスクの追加/削除は可能であることなども紹介された。これは3つの段階はまだ固定だが、その中を自由に設定できるという意味だ。

まだ完全にNon-opinionatedと言えるわけではないことを紹介

まだ完全にNon-opinionatedと言えるわけではないことを紹介

またデリバリーの際にDirect、Blue/Green、Canaryなどの方法があるが、それをKeptnではどのように実装しているかを解説した。ただ実際のデプロイメントはKeptnがコントロールするソフトウェア(この例ではHelm)に依存するため、どのツールを用いるのか? は慎重に検討する必要があるだろう。

JMeterを使ったテストを実装する例

JMeterを使ったテストを実装する例

また最近、多くのツールが指向するマルチクラウド/マルチクラスターにも対応しているという。例として、Kubernetes上に実装されたKeptnからAWS(EKS)、GCP(GKE)、オンプレミスのKeptnとの協調も紹介された。ここではKeptnのコントロールプレーンの他にエグゼキューションプレーンとして各クラスターの上でKeptnを実行する部分を定義していることが特徴的だ。コントロールプレーンの他にデータプレーンが存在するストレージなどとは異なり、自動化のためのコントローラーとしての制御はコントロールプレーン、実行するプロセスをエグゼキューションプレーンと命名したということだろう。

マルチクラスターに対応したKeptn

マルチクラスターに対応したKeptn

Keptn自体は多くのオープンソースソフトウェアで構成されるツールである。しかし開発元であるDynatraceのサービスと深く連携している点は、ベンダーニュートラルを気にするデベロッパー、運用担当者には気になるところかもしれない。CNCFのサンドボックスプロジェクトとして、今後のガバナンスがどのような方向に向かうのかは、要注目かもしれない。

Keptnの公式サイト

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

サーバー技術解説

Tigeraのアドボケイトが、x86とARMのマルチアーキテクチャークラスターを解説

2022/4/7
ARMの優位性を解説しながら、ARMをx86クラスターに追加するマルチアーキテクチャークラスターを、デモを用いて解説。
システム開発イベント

KubeCon NA 2021からサービスメッシュの2セッションを紹介

2022/3/18
KubeCon NA 2021からサービスメッシュのLinkerdの最新情報とIstioを使ったユースケースのセッションを紹介する。
セキュリティイベント

KubeCon NA 2021、ソフトウェア開発工程のタンパリングを防ぐSLSAを解説

2022/3/9
KubeCon NA 2021のプレカンファレンスから、ソフトウェアサプライチェーンを実装するフレームワークSLSAを取り上げたセッションを紹介する。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています