ソースコードを 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 ソース デベロッパー(
roles/run.sourceDeveloper
) - サービス アカウント ユーザー(
roles/iam.serviceAccountUser
)
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 のプライベート ワーカープール機能を使用できます。
通常、次の手順でプライベート プールを設定します。
- プライベート ワーカープールを作成します。 プライベート プールの作成と管理をご覧ください。
VPC Service Controls の境界を構成します。VPC Service Controls の使用をご覧ください。
プライベート ワーカープールが 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 に置き換えます。詳細については、プライベート プールでのビルドの実行をご覧ください。
ソースからサービスをデプロイして、プライベート プールを使用してビルドします。
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 は、削除するプライベート プールの名前に置き換えます。