Imposta i pool di worker di compilazione (deployment dell'origine)

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:

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:

  1. Crea il tuo pool di worker privato. Consulta Creazione e gestione dei pool privati.
  2. Configura il perimetro dei Controlli di servizio VPC. Consulta Utilizzo dei Controlli di servizio VPC.

  3. 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.
  4. 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.