Panoramica del processo di creazione

Quando esegui il deployment del codice sorgente della tua funzione in Cloud Functions, l'origine in un bucket Cloud Storage. Cloud Build quindi automaticamente crea il tuo codice in un'immagine container e ne esegue il push 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 input da parte tua. Tutte le risorse utilizzate nel processo di compilazione vengono eseguite in il 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 esiste una quota preimpostata per il tempo di creazione, anche se Cloud Build ha la sua della tua quota di contemporaneità predefinita.

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

  • Cloud Storage viene utilizzato direttamente nel progetto e nel codice sorgente delle funzioni è archiviata in un bucket all'interno del progetto. Nota le seguenti:

    • Se utilizzi la crittografia predefinita, questo bucket è denominato 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 devono essere abilitati per il tuo progetto.

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

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

    • Per i prezzi di Cloud Build, consulta la pagina Prezzi . Questo processo utilizza la dimensione predefinita dell'istanza di Cloud Build, poiché queste vengono pre-addestrate e sono disponibili più rapidamente. Cloud Build offre un Livello gratuito: consulta il documento sui prezzi per ulteriori i dettagli.

    • Per i prezzi di Cloud Storage, consulta la pagina Prezzi. Cloud Storage offre un Livello gratuito: rivedi i prezzi per ulteriori dettagli.

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

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

  • Poiché il processo di compilazione è soggetto a fatturazione, il progetto deve disporre di un account di fatturazione Cloud collegati.

visualizza i log delle immagini di build

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

gcloud

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

  2. L'URL dei log viene visualizzato come parte della risposta nel tuo terminale finestra. 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 la funzione che stai esaminando.
  2. Fai clic sulla scheda Dettagli.
  3. Nel riquadro Informazioni generali, fai clic su 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 un voce di errore associata a un file, questi dettagli includono nome, riga e la colonna del file.

Registro di immagini

Cloud Functions utilizza Artifact Registry per archiviare immagini create dal codice sorgente della funzione. Le immagini vengono archiviate in un repository denominato REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts.

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: Artifact Registry completo nome del repository, nel formato seguente: 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 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. Utilizza questa opzione se desideri utilizzare un repository Docker gestito da Google anziché configurarne uno tuo.
  7. Per Artifact Registry gestito dal cliente, utilizza la classe Artifact registry per selezionare il repository Artifact Registry desiderato, o seguire le istruzioni e crearne uno nuovo.

  8. Fai clic su Avanti.

  9. Fai clic su Esegui il deployment.

Per informazioni più dettagliate sui prezzi, vedi Prezzi di Cloud Functions.

Proteggi la build con i pool privati

Per consentire alle tue funzioni di utilizzare le dipendenze (ad esempio, pacchetti npm), Per impostazione predefinita, Cloud Build ha accesso illimitato a internet durante la creazione e il processo di sviluppo. Se hai configurato un perimetro dei Controlli di servizio VPC (VPC SC) e vuoi limitare l'accesso della build solo alle dipendenze archiviate all'interno del perimetro, puoi usare nei pool di worker privati di Cloud Build funzionalità.

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'agente di servizio Cloud Functions Account di servizio (service-FUNCTION_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) il ruolo cloudbuild.workerPoolUser, in modo che Cloud Build possono 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 di nel progetto in cui si trova il pool di worker. Vedi Eseguire build in una piscina privata per ulteriori informazioni.

  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, mentre PRIVATE_POOL_NAME è il nome del pool.

Per interrompere l'utilizzo di un determinato pool privato e utilizzare invece quello predefinito per il pool di Cloud Build, usa il flag --clear-build-worker-pool quando rieseguire il 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... (Runtime, build...) fai clic sulla scheda Crea e inserisci il nome completo della risorsa pool privato nella casella di testo Crea pool di worker.

Per ulteriori informazioni, vedi Esegui build in un pool privato.