コンテンツに移動
DevOps & SRE

Google Cloud Deploy にカナリア デプロイと並列デプロイのサポートを追加

2023年4月14日
Google Cloud Japan Team

※この投稿は米国時間 2023 年 4 月 6 日に、Google Cloud blog に投稿されたものの抄訳です。

クラウド デプロイは、現実には複雑になる可能性があります。複数のターゲット環境への同時デプロイが関係してくるため、多くの場合デプロイ戦略が必要になります。こうしたデプロイの構成と管理は簡単ではありません。

このたび、Google Cloud Deployカナリア デプロイ並列デプロイ のプレビュー版が利用可能になったことを発表いたします。この 2 つの機能により、Cloud Deploy では、Google Kubernetes Engine(GKE)、Cloud RunAnthos へのよりシンプルで高度なデプロイを行えるようになります。

カナリア デプロイ

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_DelPipelineCanary.max-2200x2200.jpg
カナリア デプロイの進行状況を示すデリバリー パイプライン

デプロイの安全性は、すべての DevOps 組織にとって主要な関心事です。「カナリア」としてのデプロイを含め、安全性を支援するための多くのデプロイ戦略が開発されています。

カナリア デプロイは、現行のリリースとともに新しいアプリケーション リリースが導入されるデプロイ戦略です。これは通常、パーセンテージ ベースのトラフィック分割の形式をとります。たとえば、新しいアプリケーション リリースに対して 10%、現行のリリースに対して 90% という具合です。検証とテストは、現行のアプリケーションと新しいアプリケーションに対して行われ、新しいリリースに回帰が導入されていないことを確認します。

Cloud Deploy にカナリア デプロイを導入することにより、(オプションの)検証を伴うパーセンテージ ベースのデプロイを活用して、新しいリリースをターゲットに安全にデプロイできるようになります。カナリア デプロイは、すべての Cloud Deploy ターゲット タイプ(GKECloud RunAnthos)でサポートされており、複数の構成モード(自動カスタム)に対応します。[進める] をクリックするか、gcloud deploy beta rollouts advance を呼び出すだけで、デプロイを 1 つのパーセンテージから次のパーセンテージに簡単に進めることができます。
https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Run_your_game_infrastructure_on_GKE_Auto.max-2200x2200.jpg
カナリア デプロイのオブザーバビリティと制御機能を備えた新しいロールアウトの詳細ページ

Cloud Deploy は、障害が発生した場合、またはカナリア デプロイを詳細に調査する必要がある場合に利用できるオブザーバビリティと制御機能の両方を備え、カナリア デプロイのフェーズジョブ ステータスのほか、ログも個別に確認できます。信頼性の低い検証ジョブなどの問題のあるジョブも、問題が発生したときに再試行終了、または無視することができます。カナリア デプロイ全体に問題がある場合は、キャンセルしてロールバックできます。

並列にデプロイする

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_MultiTargetDetails.max-2200x2200.jpg
マルチターゲットの導入

多くの本番環境へのデプロイでは、1 つだけでなく、同時に多くのターゲットにデプロイする必要があることが少なくありません。こうしたデプロイは、単一のデプロイが失敗した場合に集合的な失敗が登録される単一のデプロイとして扱われることが意図されています。成功した場合も同様です。ロールバックが必要な場合は、すべてのターゲットに対して一緒にロールバックする必要があります。

Cloud Deploy の並列デプロイは、複数のターゲットに同時にデプロイする機能を提供することで、こうしたニーズに対応します。マルチターゲットに対してデプロイする場合、コントローラ ロールアウトは複数の子ロールアウトをオーケストレートします。子ロールアウトはそれぞれが独自のデプロイを行い、独自の実行環境で動作します。コントローラのロールアウトの成功は、子ロールアウトのそれぞれが成功した場合にのみ発生します。

カナリア デプロイと同様に、並列デプロイではオブザーバビリティと制御機能が提供され、問題が発生した場合に、個々の子ロールアウトを確認、検査、修復できます。集合的な障害が確認された場合は、コントローラのロールアウト(および対応する子ロールアウト)をキャンセルして、マルチターゲットを以前のリリースにロールバックできます。

GKE、Cloud Run、Anthos など、すべてのターゲット タイプで並列デプロイがサポートされています。

私たちは、最近の Game Developers Conference 2023 で、GKE、Agones、Cloud Deploy を使用した並列デプロイのデモを行いました。詳細については、ブログ投稿をご覧ください。

並行してカナリア デプロイする

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_CanaryChild.max-2200x2200.jpg
複数のターゲットに並行してカナリア デプロイする

Cloud Deploy による並列デプロイをカナリア デプロイと組み合わせることで、オーケストレーションされたマルチターゲットのカナリア デプロイを提供することもできます。ここでは、デプロイ フェーズ間で子ロールアウトがまとめて進められます。子ロールアウトはそれぞれ、前のロールアウトが完了するまで次のカナリア パーセンテージに進むことが制限されているため、いずれかの子ロールアウトが先行することはありません。

今後の計画

包括的で使いやすく、費用対効果に優れた DevOps ツールは、効率的なソフトウェア デリバリー機能を構築するうえで重要な存在です。Cloud Deploy が、完全な CI / CD パイプラインの実装を実現するうえで皆様のお役に立てば幸いです。今後数か月にわたって Cloud Deploy に魅力的な機能を導入してまいりますので、引き続きご注目ください。

また、プロダクト ページドキュメントクイックスタートチュートリアルも参照していただけます。最後に、Cloud Deploy に関するご意見やご感想については、ぜひこちらから会話にご参加ください。皆様からのご意見やご感想をお待ちしております。


- ソフトウェア エンジニア Louis Jimenez
- ソフトウェア エンジニア Jhonmattew Santa

投稿先