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 dall'origine a Cloud Run, ad esempio durante il deployment di una funzione, e la configurazione di 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 di cui hai bisogno di eseguire il deployment dall'origine, chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo 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 tuo servizio Cloud Run si interfaccia con Le API Google Cloud, come le librerie client di Cloud, consultano guida alla configurazione dell'identità dei servizi. Per ulteriori informazioni sulla concessione dei ruoli, consulta autorizzazioni di deployment e gestire l'accesso.
Proteggi la tua build con i pool privati
Per impostazione predefinita, Cloud Build ha accesso a internet illimitato durante la build e il processo di sviluppo. 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, segui questi passaggi 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 tuo Cloud Run, devi concedere al servizio Cloud Run Agente di servizio (
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
) l'utente pool di worker di Cloud Build (cloudbuild.workerPoolUser
) per consentire al servizio Cloud Build di per 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 in cui si trova il pool di worker. Consulta: Esecuzione delle build in un pool privato per ulteriori informazioni.
Esegui il deployment del servizio dall'origine alla compilazione utilizzando un pool privato:
gcloud
Per specificare un pool privato da creare durante il deployment dall'origine codice:
gcloud beta 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 --function
con la voce
puntano alla tua funzione dal codice sorgente.
Elimina pool di worker di build
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:
gcloud beta 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 preferisci eliminare.