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 が実行するオペレーションのタイムアウトは 1 時間です。このタイムアウトは、ターゲット構成の実行環境の仕様で変更できます。
以下のセクションでは、これらの値を変更する状況と、変更方法へのリンクについて説明します。
Cloud Build ワーカープールについて
Cloud Deploy 実行環境では、次のいずれかを使用できます。
-
デフォルトのワーカープールは、公共のインターネットにアクセスできる安全なホスト環境です。レンダリング、デプロイ、プリデプロイ、ポストデプロイ、検証のオペレーションが、他のワークロードから分離され、そのプール内で実行されます。
プライベート プール
プライベート ワーカープールは、デフォルトのワーカープールよりもカスタマイズが可能な専用のプライベート プールです。このカスタマイズには、プライベート ネットワーク内のリソースへのアクセス機能などがあります。デフォルトのワーカープールと同様に、プライベート ワーカープールは Cloud Build によってホストされ、完全に管理されます。これらのプールは、インフラストラクチャのセットアップ、アップグレード、スケーリングを必要とすることなく、スケールアップまたはゼロへのスケールダウンができます。
Cloud Build のプライベート プールの概要では、デフォルトのワーカープールとプライベート ワーカープールについて詳しく説明しています。また、機能の比較表も含まれています。
Cloud Deploy の実行環境の変更
Cloud Deploy の実行環境は、次の状況で変更される可能性があります。
他の組織から分離された環境で、レンダリング、デプロイ、プリデプロイ、ポストデプロイ、検証のオペレーション、またはこの 5 つの組み合わせを実行する必要があります。
これらのオペレーションを、公共のインターネットに接続されていない環境で実行する必要がある。
レンダリングとデプロイに別々の環境を必要とする。
デフォルトのサービス アカウントで使用可能な権ではなく、自分に固有の権限を持つ専用のサービス アカウントを使用する。
レンダリングされたマニフェストをデフォルトの Cloud Storage バケットとは異なる場所に保存する必要があります。
実行環境の 3 つの部分(ワーカープール、サービス アカウント、ストレージ)の構成は、各ターゲットの YAML 構成でターゲットごとに行います。
デフォルト プールからプライベート プールへの変更
ワーカーターゲット プールをターゲットごとに構成して、プールがそのターゲットのみを対象としたRENDER
、DEPLOY
、PREDEPLOY
、POSTDEPLOY
、または VERIFY
(またはこれら 5 つの組み合わせ)用に使用されるようにします。
レンダリングとデプロイの両方のオペレーションにデフォルトのワーカープールを使用するために行う必要があることはありません。
以下は、DEPLOY
用のプライベート ワーカープールと、RENDER
、PREDEPLOY
、POSTDEPLOY
、VERIFY
用にデフォルトのワーカープールを指定するターゲット構成の例です。
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 クラスタは、限定公開クラスタである必要があります。
限定公開クラスタにプライベート プールを設定するには、このチュートリアルをご覧ください。
次のステップ
Cloud Deploy ターゲットの構成の詳細を確認する。
Cloud Build のプライベート プールについて確認する。
Cloud Deploy でサービス アカウントを使用する方法について学習する。