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 crea 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 vuoi personalizzare il pool di worker di build che Cloud Build utilizza per un contesto di build protetto dai Controlli di servizio VPC, devi personalizzare il pool di worker. Questa pagina è pertinente per gli sviluppatori di piattaforme che eseguono il deployment di servizi Cloud Run o funzioni 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    Dopo aver abilitato l'API Cloud Run Admin, viene creato automaticamente l'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 creare e implementare dal codice sorgente, chiedi all'amministratore di concederti i seguenti ruoli IAM:

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 predefinito di Compute Engine sul 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 del tuo 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 all'account di servizio Compute Engine predefinito richiede un paio di 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 ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.

Proteggere la build con pool privati

Per impostazione predefinita, Cloud Build ha accesso a internet illimitato durante il processo di build. Se hai configurato un perimetro 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:

  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 tuo pool di worker privato si trova in un progetto diverso dal tuo servizio Cloud Run, devi concedere all'agente di servizio Cloud Run (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com) il ruolo Utente worker pool Cloud Build (cloudbuild.workerPoolUser) in modo che il servizio Cloud Build possa accedere al worker pool.

    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.
  4. Esegui il deployment del servizio dall'origine alla build utilizzando un pool privato:

    gcloud

    Per specificare un pool privato da creare 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 stai eseguendo il deployment di una funzione, aggiungi il flag --function con il punto di ingresso 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 stai eseguendo il deployment di una funzione, aggiungi il flag --function con il punto di ingresso della funzione dal codice sorgente.