Questo tutorial mostra come eseguire il deployment di una funzione Pub/Sub 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 Node.js come esempio, ma funziona anche con funzioni Python, Go e Java. Le istruzioni sono uguali indipendentemente da quale di queste piattaforme di runtime utilizzi. Consulta le pagine di riferimento di Hashicorp per informazioni dettagliate sull'utilizzo di Terraform con l'API Cloud Functions v2.
Obiettivi
- Scopri come utilizzare Terraform per eseguire il deployment di una funzione Pub/Sub.
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 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 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
- Concedi
roles/run.invoker
eroles/cloudbuild.builds.builder
all'account di servizio Compute predefinito. -
Prepara l'ambiente di sviluppo.
Se hai già installato gcloud CLI, aggiornalo eseguendo il seguente comando:
gcloud components update
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 il codice di esempio delle funzioni Cloud Run:
cd terraform-docs-samples/functions/pubsub
L'esempio Node.js utilizzato in questo tutorial è una funzione Pub/Sub di base "Hello World". Ecco il file
main.tf
:
Inizializza Terraform
Nella directory terraform-docs-samples/functions/pubsub
contenente il
main.tf
file, esegui questo comando per aggiungere i plug-in necessari e compilare la
.terraform
directory:
terraform init
Convalida la configurazione di Terraform
Visualizza l'anteprima della configurazione Terraform. Questo passaggio è facoltativo, ma ti consente di verificare che la sintassi di main.tf
sia corretta. Questo comando mostra un'anteprima delle risorse che verranno create:
terraform plan
Applica la configurazione Terraform
Esegui il deployment della funzione applicando la configurazione. Quando richiesto, inserisci yes
:
terraform apply
Attivazione della funzione
Per testare la funzione Pub/Sub:
Pubblica un messaggio nell'argomento (in questo esempio, il nome dell'argomento è
functions2-topic
):gcloud pubsub topics publish TOPIC_NAME --message="Friend"
Leggi i log della funzione per visualizzare il risultato, dove
FUNCTION_NAME
è il nome della funzione (in questo esempio, il nome della funzione èfunction
):gcloud functions logs read FUNCTION_NAME
Dovresti vedere l'output dei log che include il nuovo messaggio "Amico".
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
:
terraform destroy
Inserisci yes
per consentire a Terraform di eliminare le risorse.