Cloud Deploy 実行環境の使用

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

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

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

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

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

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

デフォルト

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

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

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]"

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

VPC Service Controls の境界で Cloud Deploy を使用する

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

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

制限事項

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

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

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

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

次のステップ