Quando esegui il deployment del codice sorgente in Cloud Run, il codice viene archiviato in un bucket Cloud Storage. Cloud Build compila quindi automaticamente il codice in un'immagine container ed esegue il push dell'immagine in un registro delle immagini. Ogni build viene eseguita sul proprio worker. Cloud Run importa l'immagine creata durante il deployment.
Se vuoi personalizzare il pool di worker di build utilizzato da Cloud Build per un contesto di build protetto dai Controlli di servizio VPC, devi personalizzare il pool di worker. Questa pagina è pertinente per gli sviluppatori di piattaforme che eseguono il deployment di
Cloud Run servizi o
funzioni dall'origine utilizzando Google Cloud CLI,
e configurano i pool privati utilizzati da Cloud Build. I flag
dell'interfaccia alla gcloud CLI dei pool di worker di build sono supportati per
i deployment di origine (--source) e non
sono supportati per i deployment di immagini container (--image).
Prima di iniziare
-
Abilita l'API Cloud Run Admin e le API Cloud Build.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (
roles/serviceusage.serviceUsageAdmin), che contiene l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.Dopo aver abilitato l'API Cloud Run Admin, viene creato automaticamente il account di servizio predefinito di Compute Engine.
Ruoli obbligatori
Tu o il tuo amministratore dovete concedere al service account del deployer e al account di servizio Cloud Build i seguenti ruoli IAM.
Fai clic per visualizzare i ruoli richiesti per il service account del deployer
Per ottenere le autorizzazioni necessarie per creare ed eseguire il deployment dall'origine, chiedi all'amministratore di concederti i seguenti ruoli IAM ruoli:
- Cloud Run Source Developer (
roles/run.sourceDeveloper) nel tuo progetto - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) nel tuo progetto - Utente Service Account (
roles/iam.serviceAccountUser) nell'identità del servizio Cloud Run
Fai clic per visualizzare i ruoli richiesti per il account di servizio Cloud Build
Cloud Build utilizza automaticamente il
service account predefinito di Compute Engine come account di servizio Cloud Build predefinito per creare il codice sorgente e la
risorsa Cloud Run, a meno che tu non sostituisca questo comportamento. Affinché
Cloud Build possa creare le tue origini, chiedi all'amministratore di concedere
Cloud Run Builder
(roles/run.builder) al account di servizio predefinito di Compute Engine
nel tuo progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Sostituisci PROJECT_NUMBER con il tuo Google Cloud
numero del progetto e PROJECT_ID con il tuo Google Cloud
ID progetto. Per istruzioni dettagliate su come trovare l'ID progetto e il numero di progetto,
consulta Creazione
e gestione dei progetti.
La propagazione della concessione del ruolo Cloud Run Builder al account di servizio predefinito di Compute Engine richiede alcuni minuti per propagarsi.
Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.
Proteggi la build con i pool privati
Per impostazione predefinita, Cloud Build ha accesso illimitato a internet durante il processo di compilazione. Se hai configurato un perimetro dei Controlli di servizio VPC (VPC SC) e vuoi limitare l'accesso della build solo alle dipendenze archiviate all'interno del perimetro (ad esempio i pacchetti npm), puoi utilizzare la funzionalità pool di worker privati di Cloud Build.
In generale, segui questi passaggi per configurare il tuo pool privato:
- Crea il tuo pool di worker privato. Consulta la sezione Creazione e gestione dei pool privati.
Configura il perimetro dei Controlli di servizio VPC. Consulta Utilizzo dei Controlli di servizio VPC.
Se il tuo pool di worker privato si trova in un progetto diverso dal tuo servizio Cloud Run, devi concedere al Cloud Run service agent (
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com) il ruolo Utente WorkerPool Cloud Build (cloudbuild.workerPoolUser) in modo che il servizio Cloud Build possa accedere al pool di worker.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
Sostituisci:
- PROJECT_NUMBER con il numero di progetto in cui viene eseguito il servizio.
- PRIVATE_POOL_PROJECT_ID con l'ID del progetto in cui si trova il pool di worker. Per saperne di più, consulta Esecuzione delle build in un pool privato.
Esegui il deployment del servizio dall'origine per la build utilizzando un pool privato:
gcloud
Per specificare un pool privato per la build durante il deployment dal codice sorgente, utilizza il flag
--build-worker-pool:gcloud run deploy SERVICE \ --source . \ --build-worker-pool WORKER_POOL
Sostituisci:
- SERVICE con il nome del servizio.
- WORKER_POOL con il nome del pool privato.
Se stai eseguendo il deployment di una funzione, aggiungi il flag
--functioncon l'entry point della funzione dal codice sorgente.
Elimina i pool di worker di build
Puoi eliminare i pool di worker di build per i servizi esistenti.
gcloud
Per cancellare il pool di worker di Cloud Build per i deployment di origine, utilizza il flag --clear-build-worker-pool:
gcloud run deploy SERVICE \ --source . \ --clear-build-worker-pool WORKER_POOL
Sostituisci:
- SERVICE con il nome del servizio.
- WORKER_POOL con il nome del pool privato che vuoi eliminare.
Se stai eseguendo il deployment di una funzione, aggiungi il flag --function con l'entry point della funzione dal codice sorgente.