Cloud Deploy の概要

Cloud Deployは、定義したプロモーション シーケンスでの一連のターゲット環境へのアプリケーションの配信を自動化するマネージド サービスです。更新したアプリケーションをデプロイする場合は、リリースを作成します。リリースのライフサイクルは、デリバリー パイプラインによって管理されます。

Cloud Deploy パイプラインの仕組み

Cloud Deploy デリバリー パイプラインには次の情報が含まれます。

  • デリバリー パイプラインを参照する際に使用する名前と説明。

  • プロモーション シーケンス。構成したターゲットへのデプロイ順序を記述します。

  • 必要に応じて、ラベルとアノテーション

  • 必要に応じて、ターゲット定義自体。

ターゲットは、同じデリバリー パイプライン構成ファイルまたは 1 つ以上の個別のファイルで定義できます。複数のデリバリー パイプラインで同じターゲットを使用できますが、特定のターゲットを使用できるのは 1 つのデリバリー パイプラインで 1 回だけです。

Cloud Deploy の配信プロセス

単純な Cloud Deploy の継続的デリバリーのシナリオの詳細については、以下をご覧ください。

  1. デリバリー パイプラインYAML 構成ファイルで定義します。

    この構成ファイルでは、一連のターゲットにアプリケーションをデプロイするプロモーション シーケンスを定義します。

    また、Cloud Deploy でレンダリングとデプロイのオペレーションを実行するには、Skaffold構成が必要です。

  2. ターゲットはパイプライン構成ファイルまたは別のファイルで定義します。

  3. パイプラインを Cloud Deploy サービスに登録します。

    アプリケーションがアプリケーションを認識したので、定義したプロモーション シーケンスに従ってターゲットへのデプロイを管理します。

  4. CI プロセスの出力には、デリバリー パイプラインを開始するための Cloud Deploy の呼び出しが含まれます。

    この呼び出しによって、各ターゲットのレンダリングされたマニフェストを表す release リソースが作成されます。各リソースは、指定されたレンダリング ソース(skaffold.yaml)とデプロイする特定のコンテナ イメージへの参照を使用して生成されます。 リリースを作成する最初の呼び出しでは、Cloud Deploy は自動的に rollout リソースを作成します。これにより、リリースを最初のターゲット環境に関連付けます。 このロールアウトに基づいて、アプリケーションが最初のターゲットにデプロイされます。

    Cloud Deploy デリバリー パイプラインに提供するために 1 つ以上のコンテナ イメージが出力される限り、任意の CI ツールを使用できます。

    さらに、リリースを作成してデリバリー パイプラインを起動する呼び出しを CI ツールから行う必要はありません。これは、スクリプトまたは CI プロセスの完了に応答する任意のシステムから取得できます。

  5. アプリケーションを次のターゲットにデプロイする準備ができたら、Cloud Deploy を呼び出してアプリケーションをプロモートします。

    いずれの場合も、プロモーションを呼び出すと、Cloud Deploy は新しいロールアウトを作成します。

  6. プロモーションは、プロモーション シーケンス内のすべてのターゲットを介して継続します。最後のものは 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 ツールを使用した場合、ソースから本番環境へのフローは次のようになります。

  1. Cloud Code を使用してアプリケーション ソースを作成します。

    Cloud Code は、よく利用されているいくつかの IDE(VS Code、IntelliJ、Cloud Shell)を拡張し、Google Cloud でデプロイして実行するアプリケーションを簡単に構築できるようにします。

  2. Skaffold を使用してローカル開発ループを管理します。

    Cloud Deploy は、Cloud Build を介して Skaffold を使用して、マニフェストをレンダリングおよびデプロイします。この統合は、skaffold.yaml ファイルを保持する必要があることを意味しますが、それ以外ではローカル開発フローに Skaffold を組み込む必要はありません。ただし、継続的な開発に活用できます。

  3. Cloud Build を使用してアプリケーションをビルドします。

    Cloud Build では、ソースコード リポジトリへの commit からトリガーできる CI パイプラインを設定できます。Cloud Build からの出力は、デプロイ可能なコンテナ イメージを含むアーティファクトになります。Cloud Deploy の呼び出しを追加して、リリースを作成し、デリバリー パイプラインを呼び出すことができます。

  4. Artifact Registry にアーティファクトを保存します。

    Cloud Deploy では、Artifact Registry からコンテナ イメージを取得します。これにより、アーティファクトと依存関係を一元的に保存できます。

  5. コンテナ イメージを取得し、n 個のターゲットを順にデプロイするように、Cloud Deploy でデリバリー パイプラインを構成します。

    デリバリー パイプラインで識別される各ターゲットは、アプリケーションが最終的にデプロイされる GKE クラスタ、Cloud Run、または GKE クラスタを表します。

  6. GKE、Cloud Run、GKE Enterprise でアプリケーションを管理します。

    GKE は、Kubernetes でコンテナ化されたアプリケーションを実行するための Google Cloud マネージド環境です。

    Cloud Run を使用すると、サーバーレス環境でコンテナを実行できます。

    GKE Enterprise では、クラウド環境とオンプレミス環境で一貫性のある開発と運用を行います。

  7. Google Cloud Observability を使用してアプリケーションのパフォーマンスをモニタリングします。

    Google Cloud Observability は、アプリケーションのモニタリングとロギングの統合を提供します。

次のステップ