Quando esegui il deployment del codice sorgente in Cloud Run, questo viene archiviato in un bucket Cloud Storage. Cloud Build quindi compila automaticamente il codice in un'immagine container ed esegue il push dell'immagine in un registry di immagini. Ogni build viene eseguita su un proprio worker. Cloud Run importa l'immagine creata durante il deployment.
Se vuoi personalizzare il pool di worker di compilazione utilizzato da Cloud Build per un contesto di compilazione protetto da Controlli di servizio VPC, devi personalizzare il pool di worker. Questa pagina è pertinente per gli sviluppatori di piattaforme che eseguono il deployment dall'origine a Cloud Run, ad esempio quando eseguono il deployment di una funzione, e configurano i pool privati utilizzati da Cloud Build.
Prima di iniziare
Abilita l'API Cloud Build:
gcloud services enable cloudbuild.googleapis.com
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire il deployment dal codice sorgente, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Cloud Run Source Developer (
roles/run.sourceDeveloper
) -
Utente account di servizio (
roles/iam.serviceAccountUser
)
Per un elenco dei ruoli e delle autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il servizio Cloud Run interagisce con le API Google Cloud, come le librerie client di Cloud, consulta la guida alla configurazione dell'identità del servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta le autorizzazioni di deployment e gestisci l'accesso.
Proteggi la tua build con i pool privati
Per impostazione predefinita, Cloud Build ha accesso a internet illimitato durante il processo di compilazione. Se hai configurato un perimetro Controlli di servizio VPC (VPC SC) e vuoi limitare l'accesso della compilazione solo alle dipendenze memorizzate all'interno del perimetro (ad esempio i pacchetti npm), puoi utilizzare la funzionalità Pool di worker privati di Cloud Build.
In generale, per configurare il pool privato:
- Crea il tuo pool di worker privato. Consulta Creazione e gestione dei pool privati.
Configura il perimetro dei Controlli di servizio VPC. Consulta Utilizzo dei Controlli di servizio VPC.
Se il pool di lavoro privato si trova in un progetto diverso rispetto al servizio Cloud Run, devi concedere all'agente di servizio (
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
) di Cloud Run il ruolo Utente pool di lavoro Cloud Build (cloudbuild.workerPoolUser
) in modo che il servizio Cloud Build possa accedere al pool di lavoro.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 del 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 alla compilazione utilizzando un pool privato:
gcloud
Per specificare un pool privato da compilare durante il deployment dal codice sorgente:
gcloud beta 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 --function
con l'entry point alla funzione dal codice sorgente.
Eliminare i pool di worker di compilazione
Puoi eliminare i pool di worker di compilazione per i servizi esistenti.
gcloud
Per svuotare il pool di worker di Cloud Build per i deployment di origine:
gcloud beta 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 da eliminare.