Cloud Deploy の実行環境の使用

Cloud Deploy の実行環境は、Cloud Deploy がレンダリング、プリデプロイ、デプロイ、検証、ポストデプロイのオペレーションを実行する環境です。実行環境は次のコンポーネントで構成されます。

  • Cloud Deploy がレンダリング、プリデプロイ、デプロイ、検証、ポストデプロイのオペレーションを実行する Cloud Build ワーカープール(デフォルトまたはプライベート)

  • これらのアクションを実行するために Cloud Deploy を呼び出すサービス アカウント(デフォルトまたは代替)

  • レンダリングされたマニフェストの Cloud Storage 内の保存場所(デフォルトまたは代替)

  • オペレーションの Cloud Build タイムアウト(デフォルトまたはカスタム)

この記事では、Cloud Deploy のデフォルトの実行環境、サービス アカウント、ストレージ、およびこれらのデフォルトを変更する理由と方法について説明します。

デフォルト

Cloud Deploy がレンダリングとデプロイを実行し、レンダリングされたマニフェストなどのアセットを保存するために使用するデフォルトの方法は次のとおりです。

  • デフォルトのワーカープール

    デフォルトでは、Cloud Deploy は、デフォルトの Cloud Build ワーカープールで実行されます。ただし、Cloud Build のプライベート ワーカープールを使用するように Cloud Deploy を構成できます。

    ワーカープールの詳細については、Cloud Build のデフォルト プールとプライベート プールの概要をご覧ください。

  • デフォルトの実行サービス アカウント

    デフォルトでは、Cloud Deploy は、デフォルトの Compute Engine サービス アカウントを使用します。

  • Cloud Deploy のデフォルトの保存場所

    この値は、Cloud Deploy がレンダリングされたマニフェストを保存する Cloud Storage バケットです。デフォルトでは、Cloud Deploy は Cloud Deploy リソースと同じリージョンに Cloud Storage バケットを作成します。

    <location>.deploy-artifacts.<project ID>.appspot.com

  • Cloud Build のデフォルトのタイムアウト

    デフォルトでは、Cloud Build が Cloud Deploy で実行するオペレーションには 1 時間のタイムアウトが設定されます。このタイムアウトは、ターゲット構成の実行環境の仕様で変更できます。

  • Skaffold、gcloud CLI、kubectl のデフォルトの詳細度

    デフォルトでは、これらのツールのログレベルはそれぞれのデフォルト(通常は warn または同等のデフォルト)に設定されます。debug または同等のものに変更できます。

以降のセクションでは、これらの値のいずれかを変更する状況と、変更手順へのリンクについて説明します。

Cloud Build ワーカープールについて

Cloud Deploy 実行環境では、次のいずれかを使用できます。

  • Cloud Build のデフォルト プール

    デフォルトのワーカープールは、公共のインターネットにアクセスできる安全なホスト環境です。レンダリング、デプロイ、プリデプロイ、ポストデプロイ、検証のオペレーションが、他のワークロードから分離され、そのプール内で実行されます。

  • プライベート プール

    プライベート ワーカープールは、デフォルトのワーカープールよりもカスタマイズが可能な専用のプライベート プールです。このカスタマイズには、プライベート ネットワーク内のリソースにアクセスする機能が含まれることがあります。デフォルトのワーカープールと同様に、プライベート ワーカープールは Cloud Build によってホストされ、完全に管理されます。これらのプールは、インフラストラクチャのセットアップ、アップグレード、スケーリングを必要とすることなく、スケールアップまたはゼロへのスケールダウンができます。

    Cloud Build のプライベート プールの概要では、デフォルトのワーカープールとプライベート ワーカープールの詳細と、機能の比較表を説明しています。

Cloud Deploy の実行環境を変更する

次のような状況では、Cloud Deploy の実行環境を変更する可能性があります。

  • 限定公開の Google Kubernetes Engine クラスタにデプロイする

  • 他の組織から分離された環境で、レンダリング、デプロイ、プリデプロイ、ポストデプロイ、検証のオペレーション、またはこの 5 つの組み合わせを実行する必要があります。

  • これらのオペレーションを、公共のインターネットに接続されていない環境で実行する必要がある。

  • レンダリングとデプロイに別々の環境を必要とする。

  • デフォルトのサービス アカウントで使用可能な権ではなく、自分に固有の権限を持つ専用のサービス アカウントを使用する。

  • レンダリングされたマニフェストをデフォルトの Cloud Storage バケットとは異なる場所に保存する必要があります。

実行環境の 3 つの部分(ワーカープール、サービス アカウント、ストレージ)の構成は、各ターゲットの YAML 構成でターゲットごとに行われます。

デフォルト プールからプライベート プールへの変更

ワーカーターゲット プールをターゲットごとに構成して、プールがそのターゲットのみを対象としたRENDERDEPLOYPREDEPLOYPOSTDEPLOY、または VERIFY(またはこれら 5 つの組み合わせ)用に使用されるようにします。

レンダリングとデプロイの両方のオペレーションにデフォルトのワーカープールを使用するために行う必要があることはありません。

以下は、DEPLOY 用のプライベート ワーカープールと、RENDERPREDEPLOYPOSTDEPLOYVERIFY 用にデフォルトのワーカープールを指定するターゲット構成の例です。

executionConfigs:
- usages:
  - DEPLOY
  privatePool:
    workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
- usages:
  - RENDER
  - PREDEPLOY
  - VERIFY
  - POSTDEPLOY

ターゲットのプライベート プールを構成する方法の詳細については、デリバリー パイプラインの構成ドキュメントをご覧ください。

デフォルトからカスタムの実行サービス アカウントへの変更

ワーカープールと同様に、ターゲットごとにレンダリングまたはデプロイ(あるいはその両方)に使用する代替サービス アカウントを指定できます。これを行うには、workerPool 要素の後に、次の行をターゲット構成に追加します。

serviceAccount: "[name]@[project_name].iam.gserviceaccount.com"

Cloud Deploy サービス アカウントのドキュメントで説明されているように、指定したサービス アカウントには clouddeploy.jobRunner ロールが含まれている必要があります。

この構成の詳細については、ターゲットの定義をご覧ください。

保存場所の変更

ストレージ バケットを Cloud Deploy のデフォルトから変更するには、workerPool スタンザのターゲット定義に次の行を追加します。

artifactStorage: "gs://[bucket_name]/[dir]"

この構成では、レンダリングされたマニフェストを保存する場所を変更しますが、レンダリング ソースが保存される場所には影響しません。

Skaffold、gcloud CLI、kubectl のログのレベルを変更する

Skaffold、gcloud CLI、kubectl のログレベルをそれぞれのデフォルトから debug(または同等のデフォルト)に変更するには、実行構成で verbosetrue に設定します。次に例を示します。

executionConfigs:
- usages:
  - [RENDER | PREDEPLOY|  DEPLOY | VERIFY | POSTDEPLOY]
  workerPool:
  serviceAccount:
  artifactStorage:
  executionTimeout:
  verbose: true

VPC Service Controls の境界内での Cloud Deploy の使用

Cloud Deploy は VPC Service Controls をサポートしています。

VPC Service Controls クイックスタートに沿ってサービス境界を設定できます。

制限事項

  • ターゲットの実行環境には、デフォルトのワーカープールではなく、Cloud Build のプライベート ワーカープールを使用する必要があります。

  • ワーカープールを含むプロジェクトと、Cloud Deploy リソースを含むプロジェクトは、同じ VPC Service Controls セキュリティ境界内に維持する必要があります。

  • VPC Service Controls の境界にデプロイする GKE クラスタは、すべて限定公開クラスタである必要があります。

    限定公開クラスタの限定公開プールを設定するには、このチュートリアルをご覧ください。

次のステップ