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

関数のソースコードを Cloud Run にデプロイすると、そのソースは Cloud Storage バケットに保存されます。その後 Cloud Build はコードを自動的にビルドしてコンテナ イメージにし、そのイメージをイメージ レジストリに push します。各ビルドは独自のワーカー上で実行されます。Cloud Run は、関数を実行するためにコンテナを実行する必要がある場合に、このイメージにアクセスします。

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

始める前に

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 . \
  --function FUNCTION_ENTRY_POINT \
  --build-worker-pool WORKER_POOL

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

  • SERVICE: 関数の名前。
  • FUNCTION_ENTRY_POINT: ソースコード内の関数のエントリ ポイント。
  • WORKER_POOL: プライベート プールの名前。

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

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

gcloud

関数の Cloud Build ワーカープールを消去するには:

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

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

  • SERVICE: 関数の名前。
  • FUNCTION_ENTRY_POINT: ソースコード内の関数のエントリ ポイント。
  • WORKER_POOL: 削除するプライベート プールの名前。