Panoramica del processo di creazione

Quando esegui il deployment del codice sorgente della tua funzione in Cloud Functions, l'origine viene archiviata 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 di immagini. Cloud Functions accede a questa immagine quando deve eseguire il container per eseguire la funzione.

Il processo di creazione dell'immagine è completamente automatico e non richiede alcun input diretto da parte tua. Tutte le risorse utilizzate nel processo di compilazione vengono eseguite nel tuo progetto utente.

L'esecuzione del processo di compilazione all'interno del progetto significa che:

  • Hai accesso diretto a tutti i log di build.

  • Non è prevista una quota di tempo di build preimpostata, anche se Cloud Build ha una propria quota di contemporaneità predefinita.

  • Puoi visualizzare l'immagine container attuale e quelle di cui è stato eseguito il deployment in precedenza, entrambe archiviate in Artifact Registry.

  • Cloud Storage viene utilizzato direttamente nel progetto e la directory del codice sorgente per le funzioni è archiviata in un bucket all'interno del progetto. Tieni presente quanto segue:

    • Se utilizzi la crittografia predefinita, questo bucket si chiama gcf-sources-PROJECT_NUMBER-REGION.
    • Se stai proteggendo i tuoi dati con CMEK, il bucket è denominato gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH.
    • Il bucket non ha un periodo di conservazione.

Caratteristiche del processo di compilazione

Il processo di compilazione ha le seguenti caratteristiche:

  • L'API Cloud Build deve essere abilitata per il tuo progetto.

    Per abilitare l'API manualmente, fai clic sul link qui sopra, seleziona il tuo progetto dal menu a discesa e segui le istruzioni per abilitare l'interfaccia utente.

  • Poiché l'intero processo di compilazione si svolge nel contesto del tuo progetto, il progetto è soggetto ai prezzi delle risorse incluse:

    • Per i prezzi di Cloud Build, consulta la pagina Prezzi. Questo processo utilizza le dimensioni predefinite delle istanze di Cloud Build, in quanto queste vengono preparate e sono disponibili più rapidamente. Cloud Build offre un livello gratuito: rivedi il documento sui prezzi per ulteriori dettagli.

    • Per i prezzi di Cloud Storage, consulta la pagina Prezzi. Cloud Storage offre un livello gratuito: consulta il documento sui prezzi per ulteriori dettagli.

    • Per i prezzi di Artifact Registry, consulta la pagina Prezzi.

    • Per i prezzi di Container Registry (deprecato), consulta la pagina Prezzi.

  • Poiché il processo di compilazione è soggetto a fatturazione, al progetto deve essere collegato un account di fatturazione Cloud.

visualizza i log delle immagini di build

Un vantaggio chiave del processo dell'immagine di build nel progetto utente è l'accesso ai log di build. Puoi utilizzare gcloud CLI o la console Google Cloud per accedere ai log, disponibili tramite Cloud Logging.

gcloud

  1. Esegui il deployment della funzione utilizzando il comando gcloud functions deploy.

  2. L'URL dei log viene visualizzato nella risposta nella finestra del terminale. Ad esempio:

    Deploying function (may take a while - up to 2 minutes)...⠹
    **For Cloud Build Stackdriver Logs**, visit:
    https://console.cloud.google.com/logs/viewer?project=&advancedFilter=resource.type%
    3Dbuild%0Aresource.labels.build_id%3D38d5b662-2315-45dd-8aa2-
    380d50d4f5e8%0AlogName%3Dprojects%2F%
    2Flogs%2Fcloudbuild
    Deploying function (may take a while - up to 2 minutes)...done.
    

Console Google Cloud

  1. Nella finestra Panoramica di Cloud Functions, fai clic sul nome della funzione che stai esaminando.
  2. Fai clic sulla scheda Dettagli.
  3. Nel riquadro Informazioni generali, fai clic sul link Log di build del container per aprire il riquadro Esplora log.
  4. Fai clic su una riga per visualizzare i dettagli della relativa voce di log. Se si tratta di una voce di errore associata a un file, questi dettagli includono il nome, la riga e la colonna del file.

Registro di immagini

Cloud Functions (2nd gen) utilizza esclusivamente Artifact Registry per archiviare le immagini create dal codice sorgente della funzione. Le immagini sono archiviate in un repository denominato REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts.

Cloud Functions (1ª generazione.) usa Artifact Registry per impostazione predefinita. Container Registry è in fase di ritiro.

Artifact Registry deve trovarsi nello stesso progetto della funzione. Puoi creare o aggiornare una funzione basata su Artifact Registry come segue:

gcloud

Per Artifact Registry gestito dal cliente, esegui il comando seguente:

gcloud functions deploy FUNCTION \
--docker-repository=REPOSITORY
[FLAGS...]

Sostituisci quanto segue:

  • FUNCTION: il nome della funzione.
  • REPOSITORY: il nome completo del repository Artifact Registry nel seguente formato: projects/PROJECT_NAME/locations/LOCATION/repositories/REPOSITORY.

Per Artifact Registry gestito da Google, utilizza:

gcloud functions deploy FUNCTION \
--docker-registry=artifact-registry
[FLAGS...]

Console Google Cloud

  1. Vai alla pagina Cloud Functions nella console Google Cloud:
    Vai alla pagina Cloud Functions

  2. Fai clic sul nome della funzione per la quale vuoi utilizzare Artifact Registry.

  3. Fai clic su Modifica.

  4. Fai clic su Runtime, build... (Runtime, build...) per espandere le opzioni di configurazione avanzate.

  5. Fai clic su Sicurezza e repository immagine dalla barra dei menu per aprire la scheda Sicurezza.

  6. In Repository di immagini, seleziona una delle seguenti opzioni, a seconda del tipo di Artifact Registry in uso:

    • Artifact Registry gestito dal cliente. Utilizza questa opzione se configuri il tuo repository Docker.
    • Artifact Registry gestito da Google. Usa questa opzione se vuoi usare un repository Docker gestito da Google anziché configurarne uno tuo.
  7. Per Artifact Registry gestito dal cliente, utilizza il menu a discesa Artifact Registry per selezionare il repository Artifact Registry che ti interessa oppure segui i prompt e creane uno nuovo.

  8. Fai clic su Avanti.

  9. Fai clic su Esegui il deployment.

Per informazioni più dettagliate sui prezzi, consulta la pagina Prezzi di Cloud Functions.

Proteggi la build con i pool privati

Per consentire alle tue funzioni di utilizzare le dipendenze (ad esempio, pacchetti npm), Cloud Build ha per impostazione predefinita 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 build solo alle dipendenze archiviate all'interno del perimetro, puoi utilizzare la funzionalità Pool di worker privati di Cloud Build.

In generale, segui questi passaggi per configurare il pool privato:

  1. Crea il tuo pool di worker privato. Consulta Creazione e gestione di 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 dalla funzione, devi concedere all'account di servizio (service-FUNCTION_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) l'agente di servizio di Cloud Functions il ruolo 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-FUNCTION_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
        --role roles/cloudbuild.workerPoolUser
    

    dove FUNCTION_PROJECT_NUMBER è il numero del progetto in cui viene eseguita la funzione e PRIVATE_POOL_PROJECT_ID è l'id del progetto in cui si trova il pool di worker. Per ulteriori informazioni, vedi Esecuzione di build in un pool privato.

  4. Esegui il deployment della funzione per creare utilizzando un pool privato:

gcloud

gcloud functions deploy FUNCTION_NAME \
  --runtime RUNTIME \
  --build-worker-pool PRIVATE_POOL_NAME
  [FLAGS...]

dove FUNCTION_NAME è il nome della funzione, RUNTIME è il runtime che stai utilizzando e PRIVATE_POOL_NAME è il nome del tuo pool.

Per interrompere l'utilizzo di un determinato pool privato e utilizzare invece il pool di Cloud Build predefinito, utilizza il flag --clear-build-worker-pool durante il nuovo deployment.

gcloud functions deploy FUNCTION_NAME \
  --runtime RUNTIME \
  --clear-build-worker-pool
  [FLAGS...]

dove FUNCTION_NAME è il nome della funzione e RUNTIME è il runtime che stai utilizzando.

Console Google Cloud

  1. Nella pagina Panoramica di Cloud Functions, seleziona Crea funzione.

  2. Nella sezione Runtime, build..., fai clic sulla scheda Crea e inserisci il nome completo della risorsa del tuo pool privato nella casella di testo Crea pool di worker.

Per maggiori informazioni, consulta Eseguire le build in un pool privato.