ビルド ワーカープールを設定する(ソースデプロイ)

ソースコードを Cloud Run にデプロイすると、そのソースは Cloud Storage バケットに保存されます。その後 Cloud Build はコードを自動的にビルドしてコンテナ イメージにし、そのイメージをイメージ レジストリに push します。各ビルドは独自のワーカー上で実行されます。Cloud Run は、デプロイ時にビルドされたイメージをインポートします。

Cloud Build が VPC Service Controls で保護されたビルド コンテキストに使用するビルドワーカー プールをカスタマイズする場合は、ワーカープールをカスタマイズします。このページは、関数のデプロイや、Cloud Build で使用されるプライベート プールの構成など、ソースから Cloud Run にデプロイするプラットフォーム デベロッパーを対象としています。

始める前に

Cloud Build API を有効にします。

gcloud services enable cloudbuild.googleapis.com

必要なロール

ソースからデプロイするために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールCloud Run IAM 権限をご覧ください。Cloud Run サービスが Google Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限アクセスの管理をご覧ください。

プライベート プールでビルドを保護する

デフォルトでは、ビルドプロセス中に Cloud Build はインターネットに無制限にアクセスできます。VPC Service Controls(VPC SC)境界を設定し、ビルドのアクセスを境界内に保存された依存関係(npm パッケージなど)に制限する場合は、Cloud Build のプライベート ワーカープール機能を使用できます。

通常、次の手順でプライベート プールを設定します。

  1. プライベート ワーカープールを作成します。 プライベート プールの作成と管理をご覧ください。
  2. VPC Service Controls の境界を構成します。VPC Service Controls の使用をご覧ください。

  3. プライベート ワーカープールが Cloud Run サービスとは異なるプロジェクトにある場合、Cloud Run のサービス エージェントservice-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com)に Cloud Build WorkerPool ユーザーcloudbuild.workerPoolUser)ロールを付与し、Cloud Build サービスがワーカープールにアクセスできるようにする必要があります。

    gcloud projects add-iam-policy-binding PRIVATE_POOL_PROJECT_ID \
        --member serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \
        --role roles/cloudbuild.workerPoolUser

    次のように置き換えます。

    • PROJECT_NUMBER は、サービスが実行されるプロジェクト番号に置き換えます。
    • PRIVATE_POOL_PROJECT_ID は、ワーカープールが配置されているプロジェクトの ID に置き換えます。詳細については、プライベート プールでのビルドの実行をご覧ください。
  4. ソースからサービスをデプロイして、プライベート プールを使用してビルドします。

gcloud

ソースコードからデプロイする際にビルドするプライベート プールを指定するには:

gcloud beta run deploy SERVICE \
  --source . \
  --build-worker-pool WORKER_POOL

次のように置き換えます。

  • SERVICE は、サービスの名前に置き換えます。
  • WORKER_POOL は、プライベート プールの名前に置き換えます。

関数をデプロイする場合は、ソースコードから関数のエントリ ポイントを指定して --function フラグを追加します。

ビルド ワーカープールを削除する

既存のサービスのビルドワーカー プールを削除できます。

gcloud

ソースデプロイの Cloud Build ワーカープールを消去するには:

gcloud beta run deploy SERVICE \
  --source . \
  --clear-build-worker-pool WORKER_POOL

次のように置き換えます。

  • SERVICE は、サービスの名前に置き換えます。
  • WORKER_POOL は、削除するプライベート プールの名前に置き換えます。