Google Cloud Deploy のサービス アーキテクチャ

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このドキュメントでは、Google Cloud Deploy と、アプリケーションのデプロイに使用する Google の外部システムとの関係について説明します。これらのシステムは、他の Google Cloud サービスやサードパーティ ツールです。

概要

次の図は、Google Cloud Deploy とそれに依存する個々のシステムの関係を示しています。

Cloud Deploy コンポーネント間の関係

次の図に示すように、Google Cloud Deploy は以下のシステムとやり取りします。

  • CI システム

    Google Cloud Deploy は、CI プロセスからの 1 つの出力が、リリースを作成するための Google Cloud Deploy API または CLI の呼び出しである限り、ほとんどの CI ツールをサポートしています。

  • Cloud Build

    Google Cloud Deploy は、Cloud Build を呼び出してマニフェストをレンダリングし、ターゲット ランタイムにデプロイします。

  • Skaffold

    Google Cloud Deploy は Cloud Build を介して Skaffold を使用し、マニフェストをレンダリングしてデプロイすることで、アプリケーションをデプロイします。

  • Cloud Storage

    Google Cloud Deploy は、レンダリング ソースとレンダリングされたマニフェストを Cloud Storage バケットに保存します。

  • Google Cloud のオペレーション スイートCloud Audit Logs

    Google Cloud のオペレーション スイートにより、Google Cloud Deploy のログデータが収集され、利用可能になります。

    監査ログもご覧ください。

  • Pub/Sub

    Google Cloud Deploy は、複数の Pub/Sub トピックにメッセージを公開します。このサービスを使用して、外部のワークフロー、テスト、その他の関連システムと統合できます。

    詳細については、Google Cloud Deploy 通知のサブスクライブ をご覧ください。

  • ターゲット ランタイム

    Google Cloud Deploy は skaffold apply と Cloud Build を使用して、アプリケーションをターゲット ランタイム(GKE または Anthos)にデプロイします。

Google Cloud Deploy リソース

次の図は、Google Cloud Deploy がアプリケーションの配信に使用するリソースと、それらのリソース間の関係を示しています。

Cloud Deploy リソース間の関係

上の図に示すように、リソース間の関係は次のとおりです。

  • デリバリー パイプラインは 0 個以上のリリースを生成し、1 つ以上のターゲットを参照できます。

  • リリースには、パイプライン インスタンス(リリースの作成時に構成された配信パイプラインの「スナップショット」とターゲット)が含まれています。

  • 各リリースは 0 個以上のロールアウトを生成し、ゼロ個以上のアーティファクトを参照できます。

    各ロールアウトには少なくとも 1 つのフェーズが含まれ、ロールアウト内の論理的にグループ化されたオペレーション(ジョブ)のコレクションを表します(デプロイまたはデプロイと検証など)。

    各フェーズには 1 つ以上のジョブが含まれます。ジョブは、ロールアウトで実行される内容(デプロイまたは検証)を表します。各ジョブには、1 つ以上のジョブ実行(デプロイの試行など)を含めることができます。ジョブ実行は、ロールアウトの子リソースです。

  • 各ロールアウトは 1 つのターゲットに関連付けられます。

  • 各ターゲットは、1 つの GKE クラスタ、Anthos クラスタ、またはアプリケーションのその他のランタイム ターゲットに関連付けられます。

  • ターゲットは、1 つ以上のデリバリー パイプラインに関連付けることができます。

  • アーティファクトは、ロールアウトの一環としてターゲット ランタイムにデプロイされる CI プロセス(コンテナ イメージなど)からの出力です。

さらに、ロールアウトには 1 つ以上のフェーズがあり、フェーズには 1 つ以上のジョブ、1 つ以上のジョブ実行があります。

リソースのロールアウト

この図に示すように、ロールアウトには次のものが含まれます。

  • フェーズ

    フェーズには 1 つ以上のジョブ(デプロイ、デプロイと検証など)が含まれます。 各ロールアウトには 1 つ以上のフェーズがあります。フェーズはロールアウトのサブメッセージです。

  • Jobs

    ロールアウト時に実行される特定のオペレーション(デプロイ、検証など)。ジョブは、ロールアウト内のサブメッセージです。

  • JobRun

    ジョブのインスタンス(検証など)。各ジョブには、0 個以上の JobRun を含めることができます。JobRun はロールアウトの子リソースです。

リリースの提供に向けた連携の仕組み

このセクションでは、Google Cloud Deploy がこのドキュメントに記載されているコンポーネントとやり取りして、リリースとしてのアプリケーションの配信を自動化する方法について説明します。

  1. CI システムが Google Cloud Deploy デリバリー パイプラインを呼び出します。

    CI プロセスが CLI または API を使用して Google Cloud Deploy を呼び出し、ビルド アーティファクトまたはイメージへの参照を渡す新しいリリースを作成します。

    CI システムの統合の詳細については、Google Cloud Deploy と他のシステムの統合をご覧ください。

  2. 新しいリリースが作成されると、Google Cloud Deploy は次の処理を行います。

    1. リリースの一部としてデリバリー パイプラインのインスタンスを保存します。

      このパイプライン インスタンスは、デリバリー パイプラインの構成が変更されても、このリリースでは変更されません。詳細については、リリースあたりのパイプライン インスタンスをご覧ください。

      また、Skaffold バージョンはリリースの一部として保存されます。ほとんどの場合、これがデフォルトの Skaffold バージョンになりますが、他のバージョンも指定できるため、その情報は保存されます。

    2. Cloud Storage から Skaffold レンダリング ソースを取得する Cloud Build を呼び出します。

      Google Cloud Deploy は、デフォルトまたは代替の Cloud Storage バケットにレンダリング ソースを保存します。

    3. skaffold diagnose(リリースの作成時に保存された Skaffold バージョンを使用)を呼び出して、有効なマニフェストを 1 つ生成します。

    4. skaffold render を呼び出し、提供されたイメージまたはビルド アーティファクトを使用してマニフェストをレンダリングします。

      Google Cloud Deploy では、spec.templates.spec.containers.image のイメージ名を、gcloud deploy releases create コマンドで指定された、またはこのコマンドで参照されるビルド アーティファクト ファイル内の完全なイメージパス(ダイジェストまたはタグを含む)に置き換えます。

      Google Cloud Deploy は、レンダリングされたマニフェストをデフォルトまたは代替の Cloud Storage バケットに保存します。

      Google Cloud Deploy は、デフォルトまたは代替の実行環境を使用してこれらのアクションを実行します。

    5. skaffold apply を呼び出して、ロールアウトを自動的に最初のターゲットにデプロイします。

      これは、CLI から Google Cloud Deploy を呼び出してリリースを作成する場合にのみ該当します。

      最初のターゲットにデプロイするプロセスは、次のステップで説明する昇格と同じです。

    6. verify がデリバリー パイプライン構成内のターゲット用の true で、検証が Skaffold 構成で指定されている場合、skaffold verify を呼び出します。

  3. リリースを次のターゲットに昇格させると、Cloud Build は Cloud Storage からターゲット固有のマニフェストを取得します。次に Cloud Build は skaffold apply を呼び出して、レンダリングされたマニフェストを指定のターゲット ランタイムに適用します。

    ターゲットで承認が必要な場合は、CLI またはコンソールを使用して承認または拒否できます。

    また、Google Cloud Deploy は Pub/Sub メッセージを生成し、承認ワークフローを自動的に開始するために登録できます。

    Google Cloud Deploy は、このリリースに関連付けられた Skaffold バージョンとパイプライン インスタンスを使用し、このステップをデフォルト環境またはカスタム実行環境で実行します。

    このプロセスは、昇格だけでなく、ロールバックや再デプロイにも適用されます。

  4. このサービスは、Google Cloud Deploy オペレーション全体を通して、複数の Pub/Sub トピックに通知を送信します(たとえば、ロールアウトが承認を必要とする場合)。

    この統合やその他の統合については、Google Cloud Deploy と外部システムの統合で詳しく説明されています。

  5. このサービスは、Google Cloud Deploy オペレーションを通して、プラットフォーム ログと監査ログを Google Cloud のオペレーション スイートと Cloud Audit Logs に書き込みます。

これらすべての手順を通して、Identity and Access Management を使用して、フロー制御とリソースへのアクセスが制限されます。

次のステップ