Member-only story
Kubernetesの必須ツール 2021(第3回)
この記事では、私のお気に入りのKubernetes 用ツールをまとめてみたいと思います。
特に、これから人気が出ると思われる最新のツールやあまり知られていないツールに重点を置いています。
今回の記事は長いので、5回に分けて投稿いたします。今回は第3回目です。
Argo Rollouts
Kubernetesを使って、Argo WorkflowsやKanikoを使った同様のツールを使ってCI/CDパイプラインを実行し、イメージを構築することができると既に述べました。次の論理的ステップは、継続的なデプロイを行うことです。これはリスクが高いため、実際のシナリオで行うのは非常に困難です。そのため、ほとんどの企業は継続的デリバリを行っていますが、これは自動化を行っていても手動で承認や検証を行っているということを意味します。この手動のステップは、チームが自動化を完全に信頼できないことが原因です。
では、スクリプトを一切使わず、ソースコードから本番までを完全に自動化するためには、どのようにして信頼関係を構築すればよいのでしょうか。その答えは「観測性」です。メトリクスにリソースを集中させ、アプリケーションの状態を正確に表すために必要なデータをすべて収集する必要があります。目標は、一連のメトリクスを使って信頼を築くことです。Prometheusにすべてのデータがあれば、これらのメトリクスに基づいてアプリケーションの段階的なロールアウトを自動化できるので、デプロイを自動化することができます。
要するに、K8sが提供しているローリングアップデートよりも高度なデプロイメント技術が必要だということです。カナリア型のデプロイメントを使用したプログレッシブ・デリバリーが必要なのです。目標は、トラフィックを新しいバージョンのアプリケーションに段階的にルーティングし、メトリクスが収集されるのを待ち、それらを分析し、事前に定義したルールと照合することです。問題がなければトラフィックを増やし、何か問題があればデプロイメントを元に戻します。
Kubernetesでこれを行うには、Canaryリリースなどを提供するArgo Rollouts を利用すれば大丈夫です。
Argo Rolloutsは、ブルーグリーン、カナリア、カナリア分析、実験、プログレッシブデリバリー機能などの高度なデプロイ機能をKubernetesに提供するKubernetesコントローラとCRDのセットです。
Istioのようなサービスメッシュはカナリーリリースが利用可能ですが、Argo Rolloutsはこの目的のために特別に作られているため、このプロセスをより簡単に、開発者中心に行うことができます。その上、Argo Rolloutsはどのようなサービスメッシュとも統合できます。
Argo Rolloutsの特徴
- ブルーグリーンのアップデート戦略
- カナリアアップデート戦略
- 細かく重み付けされたトラフィックシフト