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 volessi personalizzare il pool di worker di build che Cloud Build utilizza per un contesto di build protetto dai Controlli di servizio VPC, personalizzeresti il pool di worker. Questa pagina è pertinente per gli sviluppatori di piattaforme che eseguono il deployment di servizi o funzioni Cloud Run dall'origine utilizzando Google Cloud CLI e configurando pool privati utilizzati da Cloud Build. I flag gcloud CLI dei pool di worker di build sono supportati per i deployment delle origini (--source) e non per i deployment delle immagini container (--image).
Prima di iniziare
-
Enable the Cloud Run Admin API and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.Una volta abilitata 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 all'account di deployment e al account di servizio Cloud Build i seguenti ruoli IAM.
Fai clic per visualizzare i ruoli richiesti per l'account di deployment
Per ottenere le autorizzazioni necessarie per compilare ed eseguire il deployment dal codice sorgente, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Cloud Run Source Developer (
roles/run.sourceDeveloper) sul tuo progetto - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) sul tuo progetto - Service Account User (
roles/iam.serviceAccountUser) sull'identità di servizio Cloud Run
Fai clic per visualizzare i ruoli richiesti per il account di servizio Cloud Build
Cloud Build utilizza automaticamente l'account di servizio predefinito di Compute Engine come service account Cloud Build predefinito per creare il codice sorgente e la risorsa Cloud Run, a meno che tu non esegua l'override di questo comportamento. Per consentire a Cloud Build di creare le tue origini, chiedi all'amministratore di concedere il ruolo Cloud Run Builder (roles/run.builder) al account di servizio Compute Engine predefinito 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 numero del tuo progetto Google Cloude PROJECT_ID con l'ID progetto Google Cloud. Per istruzioni dettagliate su come trovare l'ID progetto e il numero di progetto,
vedi Creazione
e gestione dei progetti.
La concessione del ruolo Cloud Run Builder al account di servizio Compute Engine predefinito richiede alcuni minuti per la propagazione.
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, 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 service agent Cloud Run (
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com) il ruolo Utente di 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 da utilizzare 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 tuo servizio.
- WORKER_POOL con il nome del pool privato.
Se esegui il deployment di una funzione, aggiungi il flag
--functioncon l'entry point della funzione dal codice sorgente.
Elimina i worker pool 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 delle origini, utilizza
il flag --clear-build-worker-pool:
gcloud run deploy SERVICE \ --source . \ --clear-build-worker-pool WORKER_POOL
Sostituisci:
- SERVICE con il nome del tuo servizio.
- WORKER_POOL con il nome del pool privato che vuoi eliminare.
Se esegui il deployment di una funzione, aggiungi il flag --function con l'entry point della funzione dal codice sorgente.