Cloud Deployは、定義したプロモーション シーケンスでの一連のターゲット環境へのアプリケーションの配信を自動化するマネージド サービスです。更新したアプリケーションをデプロイする場合は、リリースを作成します。リリースのライフサイクルは、デリバリー パイプラインによって管理されます。
Cloud Deploy パイプラインの仕組み
Cloud Deploy デリバリー パイプラインには次の情報が含まれます。
- デリバリー パイプラインを参照する際に使用する名前と説明。 
- プロモーション シーケンス。構成したターゲットへのデプロイ順序を記述します。 
- ラベルとアノテーション(省略可)。 
- ターゲット定義自体(省略可)。 
ターゲットは、同じデリバリー パイプライン構成ファイルまたは 1 つ以上の個別のファイルで定義できます。複数のデリバリー パイプラインで同じターゲットを使用できますが、特定のターゲットを使用できるのは 1 つのデリバリー パイプラインで 1 回だけです。
Cloud Deploy の配信プロセス
以下では、シンプルな Cloud Deploy 継続的デリバリー シナリオで発生する処理について説明します。
- デリバリー パイプラインは YAML 構成ファイルで定義します。 - この構成ファイルでは、一連のターゲットにアプリケーションをデプロイするプロモーション シーケンスを定義します。 - また、Cloud Deploy がレンダリングとデプロイのオペレーションを実行するために必要な Skaffold の構成も必要です。 
- ターゲットは、パイプライン構成ファイルまたは個別のファイルで定義します。 
- パイプラインを 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 Well-Architected Framework: オペレーショナル エクセレンスを確認する。 
- Google Cloud CI/CD ツールを組み合わせてソフトウェアを効果的に開発し、GKE に提供する方法を確認する。