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 VPC Service Controls, devi personalizzare il pool di worker. Questa pagina è pertinente per gli sviluppatori di piattaforme che eseguono il deployment di servizi o funzioni Cloud Run dal codice sorgente utilizzando l'interfaccia a riga di comando Google Cloud e configurano i pool privati utilizzati da Cloud Build. I flag dell'interfaccia a riga di comando gcloud per i pool di worker di compilazione sono supportati per i deployment di origine (--source
) e non per i deployment di immagini contenitore (--image
).
Prima di iniziare
Abilita l'API Cloud Run Admin e l'API Cloud Build:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Dopo aver attivato l'API Cloud Run Admin, l'account di servizio predefinito di Compute Engine viene creato automaticamente.
Ruoli obbligatori
Tu o il tuo amministratore dovete concedere all'account di deployment e all'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
) nel tuo progetto - Utente account di servizio (
roles/iam.serviceAccountUser
) nell'identità servizio Cloud Run
Fai clic per visualizzare i ruoli richiesti per l'account di servizio Cloud Build
Cloud Build utilizza automaticamente l'account di servizio predefinito di Compute Engine come account di servizio Cloud Build predefinito per compilare il codice sorgente e la risorsa Cloud Run, a meno che tu non sostituisca questo comportamento. Affinché Cloud Build possa compilare le sorgenti, chiedi all'amministratore di concedere il ruolo Cloud Run Builder (roles/run.builder
) all'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 numero Google Cloud
del progetto e PROJECT_ID
con l'ID Google Cloud
del progetto. Per istruzioni dettagliate su come trovare l'ID progetto e il numero del progetto, consulta Creazione e gestione dei progetti.
La propagazione del ruolo del compilatore Cloud Run all'account di servizio predefinito di Compute Engine richiede un paio di minuti.
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 conGoogle Cloud API, come le librerie client di Cloud, consulta la guida alla configurazione dell'identità di 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 worker privato si trova in un progetto diverso da quello del 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 worker 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 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 build utilizzando un pool privato:
gcloud
Per specificare un pool privato da compilare durante il deployment dal codice fonte, utilizza il flag
--build-worker-pool
: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 il punto di ingresso della 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 cancellare il pool di worker di Cloud Build per i deployment di origine, utilizza il flag --clear-build-worker-pool
:
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.
Se stai eseguendo il deployment di una funzione, aggiungi il flag --function
con il punto di ingresso della funzione dal codice sorgente.