Questo tutorial mostra come eseguire il deployment di una funzione HTTP caricando un file ZIP del codice sorgente della funzione in un bucket Cloud Storage e utilizzando Terraform per il provisioning delle risorse. Terraform è uno strumento open source che consente di eseguire il provisioning delle risorse Google Cloud con file di configurazione dichiarativi.
Questo tutorial utilizza una funzione HTTP Node.js come esempio, ma è valido anche per le funzioni HTTP Python, Go e Java. Le istruzioni sono le stesse indipendentemente dal runtime utilizzato.
Quando esegui il deployment con Terraform, devi caricare il file ZIP del codice sorgente della funzione in un bucket Cloud Storage (source_archive_bucket) e devi anche specificare il nome dell'oggetto Cloud Storage (source_archive_object) nella configurazione Terraform. Per saperne di più, consulta la guida alle specifiche di Terraform.
Cloud Run Functions copia il file del codice sorgente che carichi in source_archive_bucket in un bucket del tuo progetto con un nome bucket nel formato gcf-v2-sources-PROJECT_NUMBER-REGION(Cloud Run Functions) o gcf-sources-PROJECT_NUMBER-REGION Cloud Run Functions (1ª gen.). Questa configurazione varia a seconda della dipendenza CMEK.
Obiettivi
- Scopri come utilizzare Terraform per eseguire il deployment di una funzione HTTP.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
For details, see Cloud Run functions pricing.
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Prepara l'ambiente di sviluppo.
Gli utenti che eseguono il deployment delle funzioni devono disporre del ruolo IAM Cloud Functions Developer (
roles/cloudfunctions.developer) o di un ruolo che includa le stesse autorizzazioni. Consulta anche Configurazione aggiuntiva per il deployment.Per ottenere le autorizzazioni per accedere al bucket Cloud Storage, chiedi all'amministratore di concedere all'identità IAM che esegue il deployment della funzione il ruolo Storage Admin (
roles/storage.admin). Per maggiori dettagli su ruoli e autorizzazioni di Cloud Storage, consulta IAM per Cloud Storage.Clona il repository dell'app di esempio nell'istanza di Cloud Shell:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git
Passa alla directory che contiene gli esempi di codice campione di Cloud Run Functions:
cd terraform-docs-samples/functions/basic
L'esempio Node.js utilizzato in questo tutorial è una semplice funzione HTTP "Hello World". Ecco il file
main.tf:Al termine del deployment della funzione, annota la proprietà URI o cercala utilizzando il seguente comando:
gcloud functions describe function-v2 --gen2 --region=us-central1 --format="value(serviceConfig.uri)"Invia una richiesta a questo URL per visualizzare il messaggio "Hello World" della tua funzione. Tieni presente che il deployment della funzione richiede l'autenticazione. Pertanto, devi fornire le credenziali nella richiesta:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" YOUR_FUNCTION_URL
Se hai già installato gcloud CLI, aggiornala eseguendo questo comando:
gcloud components update
Ruoli obbligatori
Configurazione dell'ambiente
In questo tutorial, esegui i comandi in Cloud Shell. Cloud Shell è un ambiente shell con Google Cloud CLI già inclusa e installata e con valori già impostati per il progetto corrente. L'inizializzazione di Cloud Shell può richiedere diversi minuti:
Preparazione dell'applicazione
In Cloud Shell, segui questi passaggi:
Inizializza Terraform
Nella directory terraform-docs-samples/functions/basic contenente il file main.tf, esegui questo comando per aggiungere i plug-in necessari e creare la directory .terraform:
terraform init
Applica la configurazione Terraform
Nella stessa directory terraform-docs-samples/functions/basic contenente il file main.tf, esegui il deployment della funzione applicando la configurazione. Quando richiesto, inserisci yes:
terraform apply
Testa la funzione
Esegui la pulizia
Al termine del tutorial, puoi eliminare tutto ciò che hai creato per non incorrere in ulteriori costi.
Terraform ti consente di rimuovere tutte le risorse definite nel file di configurazione eseguendo il comando terraform destroy nella directory terraform-docs-samples/functions/basic contenente il file main.tf:
terraform destroy
Inserisci yes per consentire a Terraform di eliminare le risorse.