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 でのロールバックは、正常にデプロイしたときに使用したパラメータを使用して、最後に正常にデプロイされたリリースに対してロールアウトをトリガーするかどうかで構成されます。

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

Skaffold と Google Cloud Deploy について

Google Cloud Deploy では、Skaffold を使用してレンダリング ツールを配信パイプラインから分離します。これにより、デリバリー パイプラインの定義に影響を与えることなく、マニフェスト レンダリングをより柔軟に行うことができます。Skaffold を使用すると、ローカル開発ワークスペースを簡単に構成し、Google Cloud Deploy の継続的デリバリー パイプラインで使用できます。

基本については、Skaffold クイックスタートをご覧ください。

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

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

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

ほとんどの 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 クラスタまたは Anthos クラスタを表します。

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

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

    Anthos は、クラウド環境とオンプレミス環境で一貫性のある開発と運用エクスペリエンスを提供します。

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

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

次のステップ