背景
最近、「Progressive Delivery」 という言葉を巷で耳にすることが多くなった。 Kubernetes上でProgressive Deliveryを実現するOperatorとしてFlaggerがある。 それらが何かを掴みつつあるので、ここにまとめておく。
Progressive Deliveryとツールについて
Progressive Deliveryとは、順繰りにステップを踏んでリリースをするのを自動で行う方式だと理解している(3%->10%->20%->100%みたいな)。 リリースが自動で行われるのが肝要なのだろう。 自動でメトリクスを解析してOKなら次のステップに、NGならロールバックというふうに。
FlaggerやArgo Rolloutsというのは、そのメトリクス解析の条件式(PromeQLとか)やステップの記述を設定ファイルに書いておくだけで、Progressive Deliveryを実現してくれるもの。という理解でいる。
自動リリース以外の利点
Canaryリリースをするのであれば、Serviceのselectorを使ってPodへの振り分けによる分散もできる。 しかし、これをするとマニフェストを読んだだけだと、Canaryと本番の構成が分かりにくい。
この設定を宣言的に書けるというのも利点である。
サービスメッシュについて
サービスメッシュが何かあんまり分かっていない。 Progressive Deliveryの文脈から見たら、Podへの通信を設定通りに分散してくれるやつというイメージしかない。 何かを掴んだらまたブログにまとめたい。
なぜ最近よく聞くのかの考察
マイクロサービスが流行ってるからかなとか思っている。 デプロイするコンポーネントが増えたけど、それら全てに対していちいち、「ポチポチしてCanaryリリースしてGrafana・Podのログ確認して、ポチポチして本番リリースして、、、」みたいな手順をしていたら日が暮れてしまう。 だから自動でロールバック含めて行うというのが必要になったから。では。