🎼

Keptn on Azure Kubernetes Service

2021/08/13に公開

CI/CDから障害の復旧までハイレベルの運用自動化を実現するKeptnとは | Think IT(シンクイット)」などの記事で紹介されている Keptn。ずっと気になっていたのですが、ようやく触る時間が取れたので触ってみました。

Keptn とは?

CI/CD だけではなく、パフォーマンス監視なども含めたコンテナアプリケーションのライフサイクル管理をまとめて行うためのツールセットです。

概要をつかむのは下記の記事がオススメです。日本語の記事は現状ほとんどないですし…

公式ドキュメント

アーキテクチャ

Why keptn?
Keptn Architecture

試してみた環境

  • AKS (v1.20.7)
    • Standard_DS2_v2 (2 vCPU + 7 GB Memory) * 6
    • 推奨スペックが 6 vCPU + 30GB Memory であり、低すぎると必要な Pod を起動できなくなってしまうので、少し余裕を持ったクラスター構成にしておくことをおすすめします
  • WSL 2 (Ubuntu 20.04)

準備

AKS クラスターを操作するために Azure CLI と kubectl、git リポジトリ操作のために git をインストールしておきます。

また、手順には無いのですが Helm も必要になりますのでインストールしておきましょう。

インストール&動作確認

手順は Keptn Full Tour に詳しくまとめられていますのでそちらを。

この手順を実施することで、AKS 上でも問題なくデプロイすることができました。このポータビリティ性は本当にコンテナ技術の良いところですね!

なお、アプリのデプロイには結構時間がかかり、dev 環境から production 環境のデプロイ完了までおおむね10分くらいかかります。気長に待ちましょう☕

初期サービスのデプロイ中 (手順 10)

アプリのバージョンアップ時に性能試験でエラーになると production にはデプロイされない (手順 16)

staging の evaluation で止まっており、次の production のパイプラインは起動していません。

定義されたレスポンスタイムのしきい値を超えているため、失敗となっていることがわかります。

なお、この時点のプロダクション環境は更新前のバージョンで起動されたままであり、サービスへの影響は発生していない状況を保っています。

上記のアプリを修正し、正常にパイプライン完了 (手順 19)

今度は無事に production のデプロイまで完了しました。

触ってみての感想

チュートリアルレベルですが、手順はしっかりまとまっているので試しやすいかなと思いました。

使い所については、環境が Azure 上にあるのであれば Azure DevOps や GitHub 等での CI/CD と Azure Monitor 等での監視+アクションを駆使すれば似たようなことはできそうに思います。

インストールは簡単といっても、実際に管理で使うためには学習コストもかかります。Azure に慣れていれば Azure の機能で管理するという選択肢は十分あるのかなと。そちらの方が先駆者や情報も多そうですし😅

一方、Azure 関係なく全て Kubernetes 関連のツールセット内で管理したい場合は、面白い選択肢になりそうです。ただ、まだユーザー (特に日本の) が少ないのは考えどころかもです🤔

また、今時点で既に Argo CD や Prometheus を使って同じことを実現しているプロジェクトにとっては、乗り換えコストも必要ですし改めて導入しなくても良いかなぁ?という感触でした。

#記事公開 (2021年8月) 時点の感覚ですので、未来で変わっていたらご容赦ください🙇‍♂️

Discussion