Ce tutoriel explique comment déployer une fonction HTTP en important un fichier ZIP de code source de fonction dans un bucket Cloud Storage, à l'aide de Terraform pour provisionner les ressources. Terraform est un outil Open Source qui vous permet de provisionner des ressources Google Cloud à l'aide de fichiers de configuration déclaratifs.
Ce tutoriel utilise une fonction HTTP Node.js comme exemple, mais il fonctionne également avec les fonctions HTTP Python, Go et Java. Les instructions sont identiques, quel que soit l'environnement d'exécution que vous utilisez.
Lorsque vous effectuez un déploiement avec Terraform, vous devez importer le fichier source compressé de votre fonction dans un bucket Cloud Storage (source_archive_bucket
), et également spécifier le nom de l'objet Cloud Storage (source_archive_object
) dans la configuration Terraform. Pour en savoir plus, consultez le guide de spécifications Terraform.
Les fonctions Cloud Run copient le fichier source que vous importez dans le source_archive_bucket
dans un bucket de votre projet dont le nom suit le format gcf-v2-sources-PROJECT_NUMBER-REGION
(fonctions Cloud Run) ou gcf-sources-PROJECT_NUMBER-REGION
Cloud Run Functions (1st gen). Cette configuration varie en fonction de la dépendance CMEK.
Objectifs
- Découvrez comment utiliser Terraform pour déployer une fonction HTTP.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
For details, see Cloud Run functions pricing.
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- 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
-
Préparez votre environnement de développement.
Les utilisateurs qui déploient des fonctions doivent disposer du rôle IAM Développeur Cloud Functions (
roles/cloudfunctions.developer
) ou d'un rôle comprenant les mêmes autorisations. Consultez également la section Configuration supplémentaire pour le déploiement.Pour obtenir les autorisations d'accès au bucket Cloud Storage, demandez à votre administrateur d'accorder le rôle Administrateur Storage (
roles/storage.admin
) à l'identité IAM qui déploie la fonction. Pour en savoir plus sur les rôles et les autorisations Cloud Storage, consultez la page IAM pour Cloud Storage.
Si la gcloud CLI est déjà installée, mettez-le à jour en exécutant la commande suivante :
gcloud components update
Rôles requis
Configurer votre environnement
Dans ce tutoriel, vous exécutez des commandes dans Cloud Shell. Cloud Shell est un environnement de shell dans lequel Google Cloud CLI est déjà installée avec des valeurs prédéfinies pour votre projet actuel. L'initialisation de Cloud Shell peut prendre quelques minutes.
Préparer l'application
Dans Cloud Shell, procédez comme suit :
Clonez le dépôt de l'exemple d'application sur votre instance Cloud Shell:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git
Accédez au répertoire contenant les exemples de code Cloud Run Functions :
cd terraform-docs-samples/functions/basic
L'exemple Node.js utilisé dans ce tutoriel est une fonction HTTP de base "Hello World". Voici le fichier
main.tf
:
Initialiser Terraform
Dans le répertoire terraform-docs-samples/functions/basic
contenant le fichier main.tf
, exécutez cette commande pour ajouter les plug-ins nécessaires et créez le répertoire .terraform
:
terraform init
Appliquer la configuration Terraform
Dans le même répertoire terraform-docs-samples/functions/basic
contenant le fichier main.tf
, déployez la fonction en appliquant la configuration. Lorsque vous y êtes invité, saisissez yes
:
terraform apply
Tester la fonction
Une fois le déploiement de la fonction terminé, notez la propriété URI ou recherchez-la à l'aide de la commande suivante :
gcloud functions describe function-v2 --gen2 --region=us-central1 --format="value(serviceConfig.uri)"
Envoyez une requête à cette URL pour afficher le message "Hello World" de votre fonction. Notez que la fonction est déployée en nécessitant une authentification. Par conséquent, vous devez fournir des identifiants dans votre requête:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" YOUR_FUNCTION_URL
Effectuer un nettoyage
Une fois le tutoriel terminé, vous pouvez supprimer tous les éléments que vous avez créés afin d'éviter tous frais supplémentaires.
Terraform vous permet de supprimer toutes les ressources définies dans le fichier de configuration en exécutant la commande terraform destroy
dans le répertoire terraform-docs-samples/functions/basic
contenant votre fichier main.tf
:
terraform destroy
Saisissez yes
pour autoriser Terraform à supprimer vos ressources.