Cloud Deployは、定義したプロモーション シーケンスでの一連のターゲット環境へのアプリケーションの配信を自動化するマネージド サービスです。更新したアプリケーションをデプロイする場合は、リリースを作成します。リリースのライフサイクルは、デリバリー パイプラインによって管理されます。
Cloud Deploy パイプラインの仕組み
Cloud Deploy デリバリー パイプラインには次の情報が含まれます。
デリバリー パイプラインを参照する際に使用する名前と説明。
プロモーション シーケンス。構成したターゲットへのデプロイ順序を記述します。
必要に応じて、ラベルとアノテーション。
ターゲット定義自体(省略可)。
ターゲットは、同じデリバリー パイプライン構成ファイルまたは 1 つ以上の個別のファイルで定義できます。複数のデリバリー パイプラインで同じターゲットを使用できますが、特定のターゲットを使用できるのは 1 つのデリバリー パイプラインで 1 回だけです。
Cloud Deploy の配信プロセス
以下は、単純な Cloud Deploy 継続的デリバリー シナリオで発生する処理の説明です。
デリバリー パイプラインは YAML 構成ファイルで定義します。
この構成ファイルでは、一連のターゲットにアプリケーションをデプロイするプロモーション シーケンスを定義します。
また、Skaffold の構成も必要です。これは、Cloud Deploy がレンダリングとデプロイの操作を実行するために必要です。
ターゲットは、パイプライン構成ファイルまたは個別のファイルで定義します。
パイプラインを Cloud Deploy サービスに登録します。
アプリケーションがアプリケーションを認識したので、定義したプロモーション シーケンスに従ってターゲットへのデプロイを管理します。
CI プロセスの出力には、デリバリー パイプラインを開始する Cloud Deploy への呼び出しが含まれます。
この呼び出しによって、各ターゲットのレンダリングされたマニフェストを表す
release
リソースが作成されます。各リソースは、指定されたレンダリング ソース(skaffold.yaml)とデプロイする特定のコンテナ イメージへの参照を使用して生成されます。 リリースを作成する最初の呼び出しでは、Cloud Deploy は自動的にrollout
リソースを作成します。これにより、リリースを最初のターゲット環境に関連付けます。 このロールアウトに基づいて、アプリケーションが最初のターゲットにデプロイされます。1 つ以上のコンテナ イメージを出力して Cloud Deploy デリバリー パイプラインに提供できる限り、任意の CI ツールを使用できます。
さらに、リリースを作成してデリバリー パイプラインを起動する呼び出しを CI ツールから行う必要はありません。これは、スクリプトから取得することも、CI プロセスの完了に応答する任意のシステムから取得することもできます。
アプリケーションを次のターゲットにデプロイする準備ができたら、Cloud Deploy を呼び出してプロモートします。
いずれの場合も、プロモーションを呼び出すと、Cloud Deploy は新しいロールアウトを作成します。
プロモーションは、プロモーション シーケンス内のすべてのターゲットを介して継続します。最後のものは
prod
です(または、アプリケーションをターゲットにするための最終的なターゲットに使用する名前)。リリースの作成とプロモーションのプロセスの詳細については、Cloud Deploy のサービス アーキテクチャをご覧ください。
パイプラインの実行全体を通して、Cloud Deploy は指標と監査の詳細を収集します。
Promotion
リリースを昇格するには、パイプラインで定義されたプロモーション シーケンスの次のターゲットにデプロイします。Cloud Deploy への最初の呼び出しでは、release
という rollout
リソースが作成されます。これは、プロモーション シーケンスの最初のターゲットへのデプロイに使用されます。リリースを昇格させる呼び出しを繰り返すと、次のターゲットにロールアウトされます。
承認
任意のターゲットへのプロモーションに承認が必要であることを指定できます。たとえば、本番環境ターゲットへのプロモーションの承認を要求できます。ターゲットの承認を必須にするには、ターゲット定義で requireApproval
プロパティを設定します。
ターゲットで承認が必要な場合、Cloud Deploy は、統合システムで使用できる Pub/Sub メッセージを生成します。たとえば、チケット システムはメッセージをサブスクライブして承認ワークフローを開始できます。
昇格の詳細と昇格の承認の管理については、承認を要求するをご覧ください。
通知
Cloud Deploy は、次のイベントに対して Pub/Sub 通知を提供します。
- レンダリング: 開始、成功、失敗
- デプロイ: 開始、成功、失敗
- 承認が必要です
- Approval で承認済み
- 承認リクエストが拒否されました
Cloud Deploy は、Pub/Sub トピックを使用してこれらの通知を送信します。
詳細については、Cloud Deploy 通知の使用をご覧ください。
ロールバック
Cloud Deploy では、どのターゲットでも、デプロイされたアプリケーションをロールバックできます。Cloud Deploy のロールバックは、最後に正常にデプロイされたリリースに対してロールアウトをトリガーするよう構成されています。新しいロールアウトでは、成功したデプロイで使用されたものと同じパラメータが使用されます。
詳細については、デプロイのロールバックをご覧ください。
Skaffold と Cloud Deploy について
Cloud Deploy は、レンダリング、デプロイ、検証に Skaffold を使用します。Skaffold を使用すると、ローカル開発ループを Cloud Deploy 継続的デリバリー パイプラインに接続することもできます。
Cloud Deploy と Skaffold の統合の詳細については、Skaffold の概要をご覧ください。
他の Google Cloud ツールを使用した Cloud Deploy
Cloud Deploy は、CI/CD パイプラインのアップストリームのほとんどのツールをサポートしています。つまり、任意の開発環境とソースコード リポジトリ、任意の継続的インテグレーション(CI)システム、任意のアーティファクト リポジトリを使用できます。
ダウンストリームでは、Cloud Deploy は Google Kubernetes Engine、Cloud Run、GKE Enterprise にデプロイします。
主に Google Cloud ツールを使用した場合、ソースから本番環境へのフローは次のようになります。
Cloud Code を使用してアプリケーション ソースを作成します。
Cloud Code は、よく利用されているいくつかの IDE(VS Code、IntelliJ、Cloud Shell)を拡張し、Google Cloud でデプロイして実行するアプリケーションを簡単に構築できるようにします。
Skaffold を使用してローカル開発ループを管理します。
Cloud Deploy は、Cloud Build を介して Skaffold を使用して、マニフェストをレンダリングおよびデプロイします。この統合は、
skaffold.yaml
ファイルを保持する必要があることを意味しますが、それ以外ではローカル開発フローに Skaffold を組み込む必要はありません。ただし、継続的な開発に活用できます。Cloud Build を使用してアプリケーションをビルドします。
Cloud Build を使用すると、ソースコード リポジトリへの commit からトリガーできる CI パイプラインを設定できます。Cloud Build の出力は、デプロイ可能なコンテナ イメージなどのアーティファクトです。Cloud Deploy への呼び出しを追加して、リリースを作成し、デリバリー パイプラインを呼び出すことができます。
アーティファクトを Artifact Registry に保存します。
Cloud Deploy は Artifact Registry からコンテナ イメージを取得します。これにより、アーティファクトと依存関係を一元的に保存できます。
コンテナ イメージを取得し、n 個のターゲットを順にデプロイするように、Cloud Deploy でデリバリー パイプラインを構成します。
デリバリー パイプラインで識別された各ターゲットは、アプリケーションが最終的にデプロイされる GKE クラスタ、Cloud Run、または GKE クラスタを表します。
GKE、Cloud Run、GKE Enterprise でアプリケーションを管理します。
GKE は、Kubernetes でコンテナ化されたアプリケーションを実行するための Google Cloud マネージド環境です。
Cloud Run を使用すると、サーバーレス環境でコンテナを実行できます。
GKE Enterprise では、クラウド環境とオンプレミス環境で一貫性のある開発と運用を行います。
Google Cloud Observability を使用してアプリケーションのパフォーマンスをモニタリングします。
Google Cloud Observability は、アプリケーションのモニタリングとロギングの統合を提供します。
次のステップ
デリバリー パイプラインを作成し、それを使用してアプリケーションをデプロイする方法については、クイックスタートを試してください。
Cloud Deploy のチュートリアルのいずれかをお試しください。
Cloud Deploy コンポーネントの連携方法について詳しく学習する。
オペレーショナル エクセレンスの原則を使用して自動配信の基盤を構築する方法について、Google Cloud Architecture Framework: オペレーショナル エクセレンスを確認する。
Google Cloud CI / CD ツールを組み合わせてソフトウェアを効果的に開発し、GKE に提供する方法を確認する。