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 funziona anche con funzioni HTTP Python, Go e Java. Le istruzioni sono le stesse indipendentemente da quale di questi runtime utilizzi.
Quando esegui il deployment con Terraform, devi caricare il file sorgente compresso della funzione in un bucket Cloud Storage (source_archive_bucket
) e specificare anche il nome dell'oggetto Cloud Storage (source_archive_object
) nella configurazione Terraform. Per ulteriori informazioni, consulta la guida alle specifiche di Terraform.
Le funzioni Cloud Run copiano il file di origine caricato in source_archive_bucket
in un bucket del progetto con un nome che segue il formato gcf-v2-sources-PROJECT_NUMBER-REGION
(funzioni Cloud Run) o gcf-sources-PROJECT_NUMBER-REGION
Funzioni Cloud Run (1ª generazione.). 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 utilizzi 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Prepara l'ambiente di sviluppo.
Gli utenti che eseguono il deployment delle funzioni devono disporre del ruolo IAM Sviluppatore Cloud Functions (
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 Amministratore archiviazione (
roles/storage.admin
). Per ulteriori dettagli sui ruoli e sulle autorizzazioni di Cloud Storage, consulta IAM per Cloud Storage.
Se hai già installato gcloud CLI, aggiornalo eseguendo il seguente comando:
gcloud components update
Ruoli obbligatori
Configurazione dell'ambiente
In questo tutorial esegui i comandi in Cloud Shell. Cloud Shell è un ambiente shell in cui è già installato Google Cloud CLI, inclusi i valori già impostati per il progetto corrente. L'inizializzazione di Cloud Shell può richiedere diversi minuti:
Preparazione della richiesta
In Cloud Shell, esegui i seguenti passaggi:
Clona il repository dell'app di esempio nell'istanza Cloud Shell:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git
Passa alla directory che contiene i codici di esempio delle funzioni Cloud Run:
cd terraform-docs-samples/functions/basic
L'esempio Node.js utilizzato in questo tutorial è una funzione HTTP di base "Hello World". Ecco il file
main.tf
:
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
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 funzione. Tieni presente che la funzione viene dispiattata richiedendo autenticazione. Pertanto, devi fornire le credenziali nella richiesta:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" YOUR_FUNCTION_URL
Esegui la pulizia
Dopo aver completato il tutorial, puoi eliminare tutto ciò che hai creato per evitare di 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.