Google Cloud Deploy の概要

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

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

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

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

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

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

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

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

Google Cloud Deploy の配信プロセス

以下では、単純な Google Cloud Deploy の継続的デリバリー シナリオで起こることを説明します。

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

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

    また、Google Cloud Deploy でレンダリングとデプロイのオペレーションを行うために必要な Skaffold構成も必要です。

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

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

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

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

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

    1 つ以上のコンテナ イメージを出力し、Google Cloud Deploy デリバリー パイプラインに提供する場合は、任意の CI ツールを使用できます。

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

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

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

  6. プロモーションは、プロモーション シーケンス内のすべてのターゲットを介して継続します。最後のものは prod です(または、アプリケーションをターゲットにするための最終的なターゲットに使用する名前)。

    リリースの作成とプロモーションのプロセスの詳細については、Google Cloud Deploy のサービス アーキテクチャをご覧ください。

Google Cloud Deploy では、パイプラインの実行中に指標を収集し、詳細を監査します。

プロモーション

リリースを昇格するには、パイプラインで定義されたプロモーション シーケンスの次のターゲットにデプロイします。Google Cloud Deploy への最初の呼び出しでは、release という rollout リソースが作成されます。これは、プロモーション シーケンスの最初のターゲットへのデプロイに使用されます。その後のリリース呼び出しのたびに、リリースが次のターゲットにロールアウトされます。

承認

ターゲットに昇格するには承認が必要であると指定できます。たとえば、本番環境ターゲットへの昇格の承認が必要な場合などです。ターゲットに対して承認を義務付けるには、ターゲット定義requireApproval プロパティを設定します。

ターゲットに承認が必要な場合、Google Cloud Deploy は、統合システムで使用できる Pub/Sub メッセージを生成します。たとえば、チケット発行システムがメッセージをサブスクライブして、承認ワークフローを開始できます。

昇格の詳細と昇格の承認の管理については、承認を要求するをご覧ください。

通知

Google Cloud Deploy では、次のイベントの Pub/Sub 通知が提供されます。

  • レンダリング: 開始、成功、失敗
  • デプロイ: 開始、成功、失敗
  • 承認が必要です
  • Approval で承認済み
  • 承認リクエストが拒否されました

Google Cloud Deploy は、Pub/Sub トピックを使用してこれらの通知を送信します。

詳細については、Google Cloud Deploy 通知の使用をご覧ください。

ロールバック

Google Cloud Deploy では、どのターゲットでも、デプロイされたアプリケーションをロールバックできます。Google Cloud Deploy におけるロールバックは、最後に正常にデプロイされたリリースに対するロールアウトをトリガーすることで構成されます。新しいロールアウトでは、デプロイに成功したのと同じパラメータが使用されます。

詳細については、デプロイのロールバックをご覧ください。

Skaffold と Google Cloud Deploy について

Google Cloud Deploy では、Skaffold を使用してレンダリング、デプロイ、検証を行います。Skaffold を使用すると、ローカル開発ループを Google Cloud Deploy 継続的デリバリー パイプラインに接続することもできます。

Google Cloud Deploy と Skaffold を統合する方法については、Skaffold の概要をご覧ください。

他の Google Cloud ツールを使用した Google Cloud Deploy

Google Cloud Deploy は、CI/CD パイプラインのアップストリームのほぼすべてのツールをサポートしています。 つまり、任意の開発環境とソースコード リポジトリ、継続的インテグレーション(CI)システム、アーティファクト リポジトリを使用できます。

ダウンストリームでは、Google Cloud Deploy は Google Kubernetes Engine、Cloud Run、Anthos にデプロイします。

主に Google Cloud ツールを使用した場合、ソースから本番環境へのフローは次のようになります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Google Cloud のオペレーション スイートは、アプリケーションのモニタリングとロギングを統合します。

次のステップ