Google Cloud Platform

ソリューション ガイド : Spinnaker、Container Engine、Container Builder で信頼性の高いデプロイ体制を構築

Kubernetes にはアプリケーションのデプロイを支援するすばらしいプリミティブがあります。これによって Kubernetes は、コンテナ化されたアプリケーションのロールアウトという大変な仕事をこなします。

Google Container Engine のもとでは、わずか数分で Kubernetes クラスタをセットアップし、アプリケーションをデプロイできる状態にすることが可能です。ただし、この精妙なデプロイ エンジンがいかに優秀だとしても、やるべきことは他にたくさんあり、それが終わらなければデプロイを始めることさえできません。そして、いったんデプロイを開始したら、安全かつタイムリーな形で確実に完了させる必要があります。

この隙間を埋めるべく、デベロッパーたちはしばしば、Google Cloud Container BuilderSpinnaker といったツールを使用して継続的デリバリのパイプラインを作ろうと考えます。

pasted imagexx-08.png

私たち Google は先ごろ、継続的デリバリ パイプラインを Container Builder と Spinnaker によってゼロから作る方法を解説したソリューション ガイドを公開しました。以下に示すのは、ソフトウェアの正しさをチェックしたうえで、ビルドして慎重にロールアウトする継続的デリバリ パイプラインの例です。

uRsUQYSw7LDiEZM3EpBnshYciI26wjl78ZHkEOJIi4H1XXsXuvUtdRCnqv5cmN1JGwB4o_v6joiHGFO7oCS4BLmWgpFI98Y8deGGm_I1jjtm0-ULr8gSvhKAsDrQyMNe_tqW8Hflx506.PNG
まず、デベロッパーがソフトウェアにタグを付けて Git リポジトリにプッシュします。タグ付きのコミットがリポジトリにプッシュされると、それを Container Builder が検出し、アプリケーションのビルドとテストのプロセスが開始されます。

アプリケーションがテストに合格すると、Container Builder はアプリケーションのイミュータブルな Docker イメージにタグを付けて Google Container Registry にプッシュします。すると、今度は Spinnaker が Container Registry から Docker イメージを取り出し、デプロイ プロセスを開始します。

Spinnaker のパイプライン ステージは、更新のロールアウトをサポートする複雑なフローを作れるようになっています。上記の例では、カナリア デプロイを使って一部のユーザーにだけソフトウェアをロールアウトし、アプリケーションの機能チェックを行っています。

カナリア環境でのチェックが終了すると、Spinnaker はデプロイ パイプラインを一時的に停止させ、人間の手による承認を待ってから、ユーザー全体にアプリケーションをロールアウトします。

ロールアウトの許可を Spinnaker に与えるためには、主要なパフォーマンス指標をチェックし、アプリケーションのトラフィックが落ち着くのを待つか、もしくはカナリア環境を手作業で検証します。そして満足できる結果が得られたら、そこで初めてリリースを承認します。すると、Spinnaker がソフトウェアのロールアウトを完了させます。

もちろん、誰もがこのフローに満足できるわけではないでしょう。しかし、少なくとも Spinnaker と Container Builder は、組織のニーズを満たした形でリリース プロセスを自動化できるよう、柔軟できめ細かいステージを提供してくれます。

まずはこちらのソリューション ガイドをチェックしてみてください。もしくは、Spinnaker のパイプライン ステージについて詳しく解説したドキュメントをご覧ください。

* この投稿は米国時間 10 月 9 日、Cloud Solutions Architect である Vic Iglesias によって投稿されたもの(投稿はこちら)の抄訳です。

- By Vic Iglesias, Cloud Solutions Architect