本番 GKE クラスターで実行中のアプリを停止なしにアップデートしたいと考えています。新バージョンを段階的にロールアウトし、問題があればすぐに前バージョンに戻せるようにしたいです。最も適切なデプロイ戦略はどれですか?
- A. Recreate デプロイ(全 Pod を一度削除して新バージョンを起動)
- B. RollingUpdate デプロイ(Kubernetes のデフォルト戦略)
- C. Canary デプロイ(新バージョンの Pod を少数起動し、段階的にトラフィックを移行)
- D. Blue/Green デプロイ(新バージョンを別クラスターに立てて DNS を切り替え)
解答と解説を見る
正解: C
Canary デプロイは新バージョンの Pod を少数(例:5〜10%)だけ起動し、問題がなければ段階的にトラフィックを増やしていく手法です。問題が発生した場合はすぐに新バージョンの Pod を削除して旧バージョンに戻せます。「段階的なロールアウト+素早いロールバック」の両方を実現できます。Recreate デプロイは全 Pod を一度削除するためダウンタイムが発生します。RollingUpdate はダウンタイムなしで更新できますが、問題発生時のロールバックは Canary ほど素早くありません。Blue/Green は別クラスターが必要でリソースコストが高く、DNS 切り替えには伝播遅延が生じます。