Panoramica del processo di creazione
Quando esegui il deployment del codice sorgente della tua funzione nelle funzioni Cloud Run, 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. Le funzioni Cloud Run accedono a questa immagine quando deve eseguire il container per eseguire la funzione. Se la tua funzione utilizza ancora Container Registry, dovresti passare ad Artifact Registry il prima possibile.
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 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 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 corrente 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 viene 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 proteggi i tuoi dati con CMEK, il bucket si chiama
gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH
. - Il bucket non ha un periodo di conservazione.
- Se utilizzi la crittografia predefinita, questo bucket è denominato
Caratteristiche del processo di compilazione
Il processo di compilazione presenta 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 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 relativo ai prezzi per ulteriori dettagli.
Per informazioni sui prezzi di Cloud Storage, consulta la pagina Prezzi. Cloud Storage offre un livello gratuito: consulta il documento relativo ai 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, 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 la riga di comando gcloud o la console Google Cloud per accedere ai log, che sono disponibili tramite Cloud Logging.
gcloud
Esegui il deployment della funzione utilizzando il
gcloud functions deploy
comando.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
- Nella finestra Panoramica delle funzioni di Cloud Run, fai clic sul nome la funzione che stai esaminando.
- Fai clic sulla scheda Dettagli.
- Nel riquadro Informazioni generali, fai clic su Log di build del container per aprire il riquadro Esplora log.
- 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.
Registry delle immagini
Le funzioni Cloud Run utilizzano Artifact Registry per archiviare le immagini create dal codice sorgente della funzione. Le immagini vengono archiviate in un repository chiamato REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts
nello stesso progetto in cui è creata la funzione.
Per specificare un repository Artifact Registry autogestito, esegui questo comando:
gcloud
gcloud functions deploy FUNCTION \ --docker-registry=artifact-registry \ --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
.
Quando specifichi un repository Artifact Registry in un progetto o una regione diversa, potresti dover prendere in considerazione configurazioni aggiuntive:
Configurazioni IAM:
- Assicurati che l'account di servizio di compilazione abbia accesso autorizzato in lettura e scrittura a REPOSITORY.
Configurazioni di rete:
- Assicurati che la destinazione REPOSITORY sia raggiungibile dalla configurazione del progetto corrente.
Configurazioni di Controlli di servizio VPC:
- Assicurati che l'account di servizio di compilazione possa raggiungere il targetREPOSITORY all'interno del perimetro VPC-SC.
Vincoli relativi alla residenza dei dati:
- Tieni presente che se specifichi un valore REPOSITORY in una regione diversa da dove si trova la tua funzione porterà al trasferimento di dati tra regioni.
Console Google Cloud
Vai alla pagina Funzioni Cloud Run nella console Google Cloud:
Vai alla pagina Funzioni Cloud RunFai clic sul nome della funzione per la quale vuoi utilizzare Artifact Registry.
Fai clic su Modifica.
Fai clic su Runtime, build... (Runtime, build...) per espandere le opzioni di configurazione avanzate.
Fai clic su Sicurezza e repository immagine dalla barra dei menu per aprire la scheda Sicurezza.
In Repository di immagini, seleziona una delle opzioni seguenti, 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.
Per Artifact Registry gestito dal cliente, utilizza il menu a discesa Artifact Registry per selezionare il repository Artifact Registry che ti interessa o segui le istruzioni per crearne uno nuovo.
Fai clic su Avanti.
Fai clic su Esegui il deployment.
Passa ad Artifact Registry
Functions può pubblicare immagini in Artifact Registry modificando il repository impostazioni:
gcloud
gcloud beta functions deploy FUNCTION \ --docker-registry=artifact-registry \ [FLAGS...]
Console Google Cloud
Vai alla pagina Funzioni Cloud Run nella console Google Cloud:
Vai alla pagina Funzioni Cloud RunFai clic sul nome della funzione per la quale vuoi utilizzare Artifact Registry.
Fai clic su Modifica.
Fai clic su Runtime, build... (Runtime, build...) per espandere le opzioni di configurazione avanzate.
Fai clic su Sicurezza e repository immagine dalla barra dei menu per aprire la scheda Sicurezza.
In Repository di immagini, seleziona una delle opzioni seguenti, 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.
Per Artifact Registry gestito dal cliente, utilizza il menu a discesa Artifact Registry per selezionare il repository Artifact Registry che ti interessa o segui le istruzioni per crearne uno nuovo.
Fai clic su Avanti.
Fai clic su Esegui il deployment.
Per informazioni più dettagliate sui prezzi, vedi Prezzi delle funzioni Cloud Run.
Proteggi la build con i pool privati
Per consentire alle funzioni di utilizzare le dipendenze (ad esempio i pacchetti npm), 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, puoi utilizzare la funzionalità Pool di worker privati di Cloud Build.
In generale, segui questi passaggi per configurare il tuo pool privato:
- Crea il tuo pool di worker privato. Consulta Creazione e gestione di 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 dalla funzione, devi concedere alle funzioni Cloud Run l'agente di servizio Account di servizio (
service-FUNCTION_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
) il ruolocloudbuild.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 del progetto in cui si trova il pool di worker. Per ulteriori informazioni, consulta Eseguire le build in un pool privato.
Esegui il deployment della funzione da compilare 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 in uso e PRIVATE_POOL_NAME è il nome del pool.
Per interrompere l'utilizzo di un determinato pool privato e utilizzare il pool Cloud Build predefinito, utilizza il flag --clear-build-worker-pool
al momento del 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 in uso.
Console Google Cloud
Nella pagina Panoramica delle funzioni Cloud Run, seleziona Crea funzione.
Nella sezione Runtime, build…, fai clic sulla scheda Build e inserisci il nome completo della risorsa del tuo pool privato nella casella di testo Crea pool di worker.
Per saperne di più, consulta Eseguire le build in un pool privato.
Proteggi la tua build con un account di servizio personalizzato
Le funzioni Cloud Run acquisiscono il codice sorgente e lo inviano a Cloud Build per la containerizzazione. La funzione containerizzata viene archiviata in Artifact Registry di cui è stato eseguito il deployment in Cloud Run as a Service. Per impostazione predefinita, Cloud Build assegna un account di servizio che agisce come principale durante l'esecuzione della build. A partire da luglio 2024, i nuovi progetti di un'organizzazione utilizzeranno l'account di servizio predefinito di Compute Engine come principale che esegue una compilazione. Per maggiori dettagli, consulta Modifica dell'account di servizio predefinito di Cloud Build. Per motivi di sicurezza, l'account di servizio predefinito di Compute Engine non dispone delle autorizzazioni sufficienti per eseguire la compilazione.
Per i progetti Google Cloud creati prima di luglio 2024, Cloud Build utilizza la classe l'account di servizio Cloud Build legacy. Questo account di servizio è stato progettato aiutare gli utenti a eseguire una vasta gamma di casi d'uso che potrebbero essere troppo permissivi per le esigenze del tuo progetto. Se vuoi spostare i progetti esistenti da questo account di servizio, puoi seguire questi passaggi per proteggere ulteriormente l'ambiente di compilazione delle funzioni:
- Impedisci l'utilizzo dell'account di servizio Cloud Build legacy per la creazione.
- Impedisce l'utilizzo dell'account di servizio Compute predefinito per la build.
- Configura un nuovo account di servizio con autorizzazioni con ambito appropriato da utilizzare per la compilazione.
- Utilizza l'account di servizio configurato per la compilazione.
Impedisci l'utilizzo dell'account di servizio Cloud Build legacy per la build
Puoi verificare che il progetto stia utilizzando il servizio Cloud Build legacy ispeziona i dettagli della build della funzione. L'account di servizio di compilazione predefinito ha il seguente formato:
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
.
Puoi disattivare forzatamente l'utilizzo di questo account di servizio impostando il vincolo del criterio dell'organizzazione cloudbuild.useBuildServiceAccount
su Not Enforced
. In alternativa, la rimozione di tutte le concessioni dei ruoli limiterà la sua capacità di accedere alle risorse Google Cloud.
Impedire l'utilizzo dell'account di servizio Compute predefinito per la compilazione
L'account di servizio Compute predefinito ha il formato
PROJECT_NUMBER-compute@developer.gserviceaccount.com
.
Puoi disabilitarne l'utilizzo predefinito per la build impostando il parametro
criterio dell'organizzazione cloudbuild.useComputeServiceAccount
a Not Enforced
.
In alternativa, la disattivazione di questo account di servizio ne impedisce l'utilizzo per accedere alle risorse Google Cloud.
Fornisci un account di servizio per la creazione di funzioni
Come parte della configurazione di una funzione, è possibile specificare un account di servizio di build durante il deployment della funzione. Quando l'account di servizio Cloud Build legacy e l'account di servizio Compute predefinito non può essere usato per la build, è necessario specificare un account di servizio di build per eseguire il deployment di una funzione.
Consulta Account di servizio personalizzato per Cloud Build per configurare e utilizzare un account di servizio di compilazione per la tua funzione.