Keptn on Azure Kubernetes Service
「CI/CDから障害の復旧までハイレベルの運用自動化を実現するKeptnとは | Think IT(シンクイット)」などの記事で紹介されている Keptn。ずっと気になっていたのですが、ようやく触る時間が取れたので触ってみました。
Keptn とは?
CI/CD だけではなく、パフォーマンス監視なども含めたコンテナアプリケーションのライフサイクル管理をまとめて行うためのツールセットです。
概要をつかむのは下記の記事がオススメです。日本語の記事は現状ほとんどないですし…
公式ドキュメント
アーキテクチャ
試してみた環境
- 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 をインストールしておきます。
- Git - Download for Linux and Unix
- Linux での Azure CLI の手動インストール
- az aks install-cli コマンドを使用して、kubectl をローカルにインストール
また、手順には無いのですが 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