Solution de démarrage rapide : application Web d'e-commerce déployée sur Kubernetes

Last reviewed 2023-08-29 UTC

Ce guide vous aide à comprendre, déployer et utiliser la solution de démarrage rapide Application Web d'e-commerce déployée sur Kubernetes. Cette solution montre comment créer et exécuter une application d'e-commerce simple pour une entreprise de commerce, avec un site Web de magasin visible publiquement. Elle vous explique comment créer une application capable de s'adapter aux pics d'utilisation (par exemple, lors des pics d'activité, tels qu'une vente) et de gérer les requêtes en fonction de l'emplacement du visiteur, ce qui permet à la boutique en ligne de proposer un service cohérent à une clientèle distribuée géographiquement.

L'application est déployée sous la forme de plusieurs petits services, ou microservices, qui s'exécutent sur des clusters Kubernetes gérés par Google dans Google Cloud. Chaque service effectue une tâche spécifique, telle que la fourniture de l'interface Web ou la gestion du panier.

Cette solution est un bon point de départ si vous avez besoin de la configurabilité et de la flexibilité offertes par les fonctionnalités de Kubernetes lors de la gestion de votre site Web. Une telle architecture de microservices est particulièrement utile si vous disposez d'une équipe d'ingénieurs plus importante, car elle permet à différentes équipes ou développeurs de créer et de gérer différentes parties de l'application séparément. Si ce n'est pas le cas de votre entreprise ou si vous n'êtes pas sûr, vous pouvez également essayer notre solution d'application Web d'e-commerce déployée sur Cloud Run. Elle utilise Cloud Run pour déployer une application de boutique en ligne similaire sans avoir besoin de Kubernetes, et n'utilise pas de microservices.

Ce document part du principe que vous maîtrisez les concepts de base du cloud, mais pas nécessairement Google Cloud. L'expérience de Terraform est utile.

À propos de Cymbal Shops

L'application utilisée dans cette solution est une boutique en ligne de démonstration pour une chaîne de commerce imaginaire appelée Cymbal Shops, qui propose un site Web permettant aux visiteurs de parcourir les produits de l'entreprise, d'ajouter des produits à leur panier, d'effectuer leur règlement et d'acheter des produits : vous pourrez les essayer vous-même après avoir déployé la solution (même si, malheureusement, il n'est pas possible d'acheter les produits.). Grâce à sa solution de site Web qui n'est pas plus lente pour certains visiteurs, Cymbal Shops reçoit des clients aux États-Unis et en Europe. Cymbal Shops effectue également souvent des ventes et a de nombreux clients à l'occasion des fêtes. Le site a donc besoin que son site Web puisse faire face aux pics de trafic sans ralentir ni rencontrer d'autres problèmes, et sans avoir à investir dans les ressources cloud dont il n'a pas besoin.

Produits utilisés

La solution utilise les produits Google Cloud suivants :

  • Google Kubernetes Engine (GKE) : environnement géré permettant de déployer, gérer et faire évoluer des applications en conteneur à l'aide de l'infrastructure Google.
  • Multi Cluster Ingress : service hébergé par Google permettant de déployer des ressources d'équilibrage de charge partagées entre les clusters et entre les régions.

Pour en savoir plus sur la configuration de ces produits et leur interaction, consultez la section suivante.

Architecture

La solution déploie une application e-commerce avec une interface Web accessible au public. Le schéma suivant illustre l'architecture des ressources Google Cloud déployées par la solution :

Schéma de la solution de démarrage rapide Kubernetes pour les applications Web d'e-commerce déployées sur Kubernetes

Processus de requête

Voici le flux de traitement des requêtes pour l'application déployée. Les étapes du flux sont numérotées comme indiqué dans le schéma de l'architecture précédente.

  1. Un utilisateur interagit avec le site Web Cymbal Shops dans son navigateur, lequel envoie une requête HTTP à un équilibreur de charge Google Cloud. Cet équilibreur de charge est situé à la périphérie du réseau Google et dirige le trafic vers la destination appropriée dans Google Cloud.
  2. La requête de l'utilisateur est dirigée vers l'un des deux clusters GKE sur lesquels l'interface de l'application s'exécute. Par défaut, il s'agit du cluster le plus proche de l'utilisateur. Dans le schéma ci-dessus, le cluster le plus proche de l'utilisateur se trouve en Europe. C'est là que la requête aboutit. Vous en apprendrez plus sur cette configuration à l'aide du service Multi Cluster Ingress dans la section suivante.
  3. La requête est gérée par un ou plusieurs des microservices de backend qui composent le reste de l'application Cymbal Shops.
  4. Le fichier cartservice de l'application stocke l'état du panier de l'utilisateur lorsqu'il consulte le site, à l'aide d'une base de données Redis. Une base de données Redis n'est déployée que sur le cluster américain.

Composants et configuration

L'application Cymbal Shops s'exécute sur les clusters Google Kubernetes Engine (GKE). Kubernetes est un système Open Source permettant d'automatiser le déploiement, le scaling et la gestion des applications conteneurisées, où l'application est empaquetée (ou conteneurisée) avec ses dépendances d'une manière indépendante de son environnement. Un cluster Kubernetes est un ensemble de machines, appelées nœuds, que vous utilisez pour exécuter vos conteneurs. GKE avec Autopilot est le service Kubernetes évolutif et entièrement automatisé de Google, où vos clusters sont constitués de machines virtuelles Compute Engine sur Google Cloud.

La solution Cymbal Shops comprend les composants suivants :

  • Trois clusters GKE, comme suit :
    • Un cluster, appelé cluster de configuration, permettant de gérer le service d'entrée multicluster pour l'application. Un objet Multi Cluster Ingress est un service qui vous permet d'équilibrer la charge du trafic sur un ensemble de clusters spécifié, avec une seule adresse IP virtuelle pour votre application.
    • Deux clusters dans différentes régions pour exécuter les microservices Cymbal Shops. Chaque cluster possède des services Cymbal Shops identiques, qui s'exécutent dans les mêmes espaces de noms Kubernetes. Cela permet au contrôleur d'entrée multicluster de traiter les deux services d'interface comme s'il s'agissait du même service. Le cluster est choisi pour envoyer le trafic en fonction de la proximité avec le visiteur du site Web. Vous pouvez également utiliser l'objet Multi Cluster Ingress pour vous assurer que le trafic n'est envoyé qu'aux clusters sains, effectuer des déploiements progressifs lors de la mise à niveau, etc.
  • Les trois clusters GKE disposent d'Autopilot activé. Autopilot est une fonctionnalité de GKE qui vous permet de créer des clusters dans lesquels Google gère la configuration de vos clusters, y compris vos nœuds, le scaling, la sécurité et d'autres paramètres préconfigurés. Pour Cymbal Shops, cela signifie que lorsqu'il y a plus de visiteurs sur le site que d'habitude, les clusters peuvent automatiquement faire évoluer la quantité de processeurs, de mémoire et d'espace de stockage utilisée en fonction des besoins de l'application. Lorsque le mode Autopilot est activé, l'administrateur de la plate-forme Cymbal Shops n'a pas besoin de demander (et de payer) plus de ressources cloud qu'il n'en a besoin la plupart du temps, ni de risquer d'avoir des clusters trop peu dotés en ressources pour faire face à l'augmentation du trafic les jours de forte affluence.

Coût

Consultez la page Application Web d'e-commerce déployée sur Kubernetes pour obtenir un coût mensuel estimé en fonction des emplacements des ressources par défaut et du temps d'utilisation estimé. Pour en savoir plus sur la tarification de GKE, Autopilot et Multi Cluster Ingress, consultez la page des tarifs de GKE.

Avant de commencer

Pour déployer cette solution, vous devez d'abord disposer d'un projet Google Cloud et de certaines autorisations IAM.

Créer ou choisir un projet Google Cloud

Lors du déploiement de la solution, vous devez choisir le projet Google Cloud dans lequel les ressources vont être déployées. Lorsque vous décidez d'utiliser un projet existant ou d'en créer un, prenez en compte les facteurs suivants :

  • Si vous créez un projet pour la solution, vous pouvez supprimer le projet lorsque vous n'en avez plus besoin et éviter de continuer à payer des frais. Si vous utilisez un projet existant, vous devez supprimer le déploiement lorsque vous n'en avez plus besoin.
  • L'utilisation d'un nouveau projet permet d'éviter les conflits avec les ressources précédemment provisionnées, telles que les ressources utilisées pour les charges de travail de production.

Si vous souhaitez déployer la solution dans un nouveau projet, créez-le avant de commencer le déploiement.

Pour créer un projet, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page de sélection du projet.

    Accéder au sélecteur de projet

  2. Pour commencer à créer un projet Google Cloud, cliquez sur Créer un projet.

  3. Attribuez un nom à votre projet. Notez l'ID de projet que vous avez généré.

  4. Modifiez les autres champs si nécessaire.

  5. Pour créer le projet, cliquez sur Créer.

Obtenir les autorisations IAM requises

Pour démarrer le processus de déploiement, vous devez disposer des autorisations IAM (Identity and Access Management) répertoriées dans le tableau suivant. Si vous disposez du rôle de base roles/owner pour le projet dans lequel vous prévoyez de déployer la solution, vous disposez déjà de toutes les autorisations nécessaires. Si vous ne disposez pas du rôle roles/owner, demandez à votre administrateur de vous accorder ces autorisations (ou des rôles qui les incluent).

Autorisation IAM requise Rôle prédéfini incluant les autorisations requises

serviceusage.services.enable

Administrateur Service Usage
(roles/serviceusage.serviceUsageAdmin)

iam.serviceAccounts.create

Administrateur de compte de service
(roles/iam.serviceAccountAdmin)

resourcemanager.projects.setIamPolicy

Administrateur de projet IAM
(roles/resourcemanager.projectIamAdmin)
config.deployments.create
config.deployments.list
Administrateur Cloud Infrastructure Manager
(roles/config.admin)

Compte de service créé pour la solution

Si vous démarrez le processus de déploiement via la console, Google crée un compte de service pour déployer la solution en votre nom (et pour supprimer le déploiement ultérieurement si vous le souhaitez). Certaines autorisations IAM sont attribuées temporairement à ce compte de service. En d'autres termes, les autorisations sont révoquées automatiquement une fois les opérations de déploiement et de suppression de la solution terminées. Nous vous recommandons de supprimer le compte de service après avoir supprimé le déploiement, comme décrit plus loin dans ce guide.

Afficher les rôles attribués au compte de service

Ces rôles sont listés ici si un administrateur de votre projet ou de votre organisation Google Cloud a besoin de ces informations.

  • roles/container.admin
  • roles/gkehub.editor
  • roles/compute.networkAdmin
  • roles/iam.serviceAccountAdmin
  • roles/iam.serviceAccountUser
  • roles/resourcemanager.projectIamAdmin
  • roles/serviceusage.serviceUsageAdmin

Déployer la solution

Pour vous aider à déployer cette solution avec un minimum d'efforts, une configuration Terraform est fournie dans GitHub. La configuration Terraform définit toutes les ressources Google Cloud requises pour la solution.

Vous pouvez déployer la solution en utilisant l'une des méthodes suivantes :

  • Via la console : utilisez cette méthode si vous souhaitez essayer la solution avec la configuration par défaut et voir comment elle fonctionne. Cloud Build déploie toutes les ressources requises pour la solution. Lorsque vous n'avez plus besoin de la solution déployée, vous pouvez la supprimer via la console. Toutes les ressources que vous créez après le déploiement de la solution devront peut-être être supprimées séparément.

    Pour utiliser cette méthode de déploiement, suivez les instructions de la section Déployer via la console.

  • À l'aide de la CLI Terraform : utilisez cette méthode si vous souhaitez personnaliser la solution, ou automatiser le provisionnement et la gestion des ressources à l'aide de l'approche Infrastructure as Code (IaC). Téléchargez la configuration Terraform depuis GitHub, personnalisez éventuellement le code si nécessaire et déployez la solution à l'aide de la CLI Terraform. Après avoir déployé la solution, vous pouvez continuer à la gérer à l'aide de Terraform.

    Pour utiliser cette méthode de déploiement, suivez les instructions de la section Déployer à l'aide de la CLI Terraform.

Déployer via la console

Pour déployer la solution préconfigurée, suivez la procédure suivante.

  1. Dans le catalogue de solutions Google Cloud pour un démarrage rapide, accédez à la page Application Web d'e-commerce déployée sur Kubernetes.

    Accéder à l'application Web d'e-commerce déployée sur la solution Kubernetes

  2. Examinez les informations fournies sur la page, telles que l'estimation du coût de la solution et le temps de déploiement estimé.

  3. Lorsque vous êtes prêt à déployer la solution, cliquez sur Déployer.

    Un guide interactif détaillé s'affiche.

  4. Suivez la procédure du guide interactif.

    Notez le nom que vous saisissez pour le déploiement. Ce nom sera requis ultérieurement lorsque vous supprimerez le déploiement.

    Lorsque vous cliquez sur Déployer, la page Déploiements de solutions s'affiche. Le champ État de cette page indique En cours de déploiement.

  5. Attendez que la solution soit déployée.

    Si le déploiement échoue, le champ État indique Échec. Vous pouvez utiliser le journal Cloud Build pour diagnostiquer les erreurs. Pour en savoir plus, consultez la section Erreurs lors du déploiement via la console.

    Une fois le déploiement terminé, le champ État indique Déployé.

Lorsque vous n'avez plus besoin de la solution, vous pouvez supprimer le déploiement pour éviter de continuer à payer des frais pour les ressources Google Cloud. Pour en savoir plus, consultez la section Supprimer le déploiement.

Passez à la section Explorer Cymbal Shops pour savoir comment tester et explorer votre solution.

Déployer via la CLI Terraform

Cette section explique comment personnaliser la solution, ou automatiser son provisionnement et sa gestion à l'aide de la CLI Terraform. Les solutions que vous déployez à l'aide de la CLI Terraform ne s'affichent pas sur la page Déploiements de solutions de la console Google Cloud.

Lorsque vous n'avez plus besoin du déploiement, vous pouvez le supprimer à l'aide de la CLI Terraform, comme décrit dans la section Supprimer à l'aide de la CLI Terraform.

Configurer le client Terraform

Vous pouvez exécuter Terraform dans Cloud Shell ou sur votre hôte local. Ce guide explique comment exécuter Terraform dans Cloud Shell, où Terraform est préinstallé et configuré pour s'authentifier auprès de Google Cloud.

Le code Terraform de cette solution est disponible dans un dépôt GitHub.

  1. Clonez le dépôt GitHub dans Cloud Shell.

    Ouvrir dans Cloud Shell

    Une invite s'affiche pour confirmer le téléchargement du dépôt GitHub dans Cloud Shell.

  2. Cliquez sur Confirmer.

    Cloud Shell est lancé dans un onglet de navigateur distinct, et le code Terraform est téléchargé dans le répertoire $HOME/cloudshell_open de votre environnement Cloud Shell.

  3. Dans Cloud Shell, vérifiez si le répertoire de travail actuel est $HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra. Il s'agit du répertoire qui contient les fichiers de configuration Terraform pour la solution. Si vous devez accéder à ce répertoire, exécutez la commande suivante :

    cd $HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra
    
  4. Initialisez Terraform à l'aide de la commande suivante :

    terraform init
    

    Attendez que le message suivant s'affiche :

    Terraform has been successfully initialized!
    

Configurer les variables Terraform

Le code Terraform que vous avez téléchargé comprend des variables que vous pouvez utiliser pour personnaliser le déploiement en fonction de vos besoins. Par exemple, vous pouvez spécifier le projet Google Cloud et la région dans laquelle vous souhaitez déployer la solution.

  1. Assurez-vous que le répertoire de travail actuel est $HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra. Si ce n'est pas le cas, accédez à ce répertoire :

  2. Dans le même répertoire, créez un fichier texte nommé terraform.tfvars.

  3. Dans le fichier terraform.tfvars, copiez l'extrait de code suivant et définissez les valeurs des variables requises.

    • Suivez les instructions fournies en tant que commentaires dans l'extrait de code.
    • Cet extrait de code n'inclut que les variables pour lesquelles vous devez définir des valeurs. La configuration Terraform inclut d'autres variables ayant des valeurs par défaut. Pour examiner toutes les variables et les valeurs par défaut, consultez le fichier variables.tf disponible dans le répertoire $HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra.
    • Assurez-vous que chaque valeur que vous définissez dans le fichier terraform.tfvars correspond au type de la variable, comme déclaré dans le fichier variables.tf. Par exemple, si le type défini pour une variable dans le fichier variables.tf est bool, vous devez spécifier true ou false comme valeur de cette variable dans le fichier terraform.tfvars.
# This is an example of the terraform.tfvars file.
# The values in this file must match the variable types declared in variables.tf.
# The values in this file override any defaults in variables.tf.

# ID of the project in which you want to deploy the solution
project_id = "PROJECT_ID"

Pour en savoir plus sur les valeurs que vous pouvez attribuer à la variable project_id, consultez la section Identifier des projets.

Valider et examiner la configuration Terraform

  1. Assurez-vous que le répertoire de travail actuel est $HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra. Si ce n'est pas le cas, accédez à ce répertoire :

  2. Vérifiez que la configuration ne comporte aucune erreur :

    terraform validate
    

    Si la commande renvoie une erreur, apportez les corrections nécessaires dans la configuration, puis exécutez à nouveau la commande terraform validate. Répétez cette étape jusqu'à ce que la commande renvoie le message suivant :

    Success! The configuration is valid.
    
  3. Examinez les ressources définies dans la configuration :

    terraform plan
    
  4. Si vous n'avez pas créé le fichier terraform.tfvars comme décrit précédemment, Terraform vous invite à saisir des valeurs pour les variables qui n'ont pas de valeurs par défaut. Saisissez les valeurs requises.

    Le résultat de la commande terraform plan est une liste des ressources provisionnées par Terraform lorsque vous appliquez la configuration.

    Si vous souhaitez apporter des modifications, modifiez la configuration, puis exécutez à nouveau les commandes terraform validate et terraform plan.

Provisionner les ressources

Lorsqu'aucune autre modification n'est nécessaire dans la configuration, déployez les ressources.

  1. Assurez-vous que le répertoire de travail actuel est $HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra. Si ce n'est pas le cas, accédez à ce répertoire :

  2. Appliquez la configuration Terraform :

    terraform apply
    
  3. Si vous n'avez pas créé le fichier terraform.tfvars comme décrit précédemment, Terraform vous invite à saisir des valeurs pour les variables qui n'ont pas de valeurs par défaut. Saisissez les valeurs requises.

    Terraform affiche la liste des ressources qui seront créées.

  4. Lorsque vous êtes invité à effectuer les actions, saisissez yes.

    Terraform affiche les messages indiquant la progression du déploiement.

    Si le déploiement ne peut pas être terminé, Terraform affiche les erreurs à l'origine de l'échec. Consultez les messages d'erreur et mettez à jour la configuration pour corriger les erreurs, puis exécutez à nouveau la commande terraform apply. Pour obtenir de l'aide concernant la résolution des erreurs Terraform, consultez la section Erreurs lors du déploiement de la solution à l'aide de la CLI Terraform.

    Une fois toutes les ressources créées, Terraform affiche le message suivant :

    Apply complete!
    

Lorsque vous n'avez plus besoin de la solution, vous pouvez supprimer le déploiement pour éviter de continuer à payer des frais pour les ressources Google Cloud. Pour en savoir plus, consultez la section Supprimer le déploiement.

Passez à la section Explorer Cymbal Shops pour savoir comment tester et explorer votre solution.

Découvrir Cymbal Shops

Félicitations, vous venez de déployer le site Web de Cymbal Shops ! Vous pouvez consulter le site Web de Cymbal Shops pour découvrir la manière dont la solution fonctionne dans la console Google Cloud. Sachez qu'il faut environ cinq minutes après le déploiement réussi de l'application pour que le site apparaisse à l'adresse fournie.

Accéder au site Cymbal Shops

La manière dont vous trouvez le site Cymbal Shops dépend de la manière dont vous avez déployé la solution.

Déploiements de console

Si vous avez déployé la solution via la console, vous pouvez accéder au site directement depuis la page Déploiements de solutions.

  • Si vous venez de terminer le déploiement de la solution, cliquez sur Afficher l'application Web pour accéder au site. Sinon, cliquez sur le menu Actions pour le déploiement, puis sélectionnez Afficher l'application Web.

Déploiements Terraform

Si vous avez déployé la solution à l'aide de la CLI Terraform, recherchez d'abord l'adresse IP de l'interface fournie par l'objet Multi Cluster Ingress. Pour ce faire, utilisez Google Cloud CLI (l'approche la plus simple) ou la console Google Cloud.

gcloud

  1. Assurez-vous de disposer de la dernière version de Google Cloud CLI. Nous vous recommandons d'exécuter la commande à partir de Cloud Shell, où l'outil est déjà installé.
  2. Exécutez la commande suivante pour obtenir l'adresse IP, en remplaçant PROJECT_ID par l'ID de votre projet Google Cloud :

    gcloud compute addresses list \
       --filter="name=('multi-cluster-ingress-ip-address-1')" \
       --project=PROJECT_ID
    
  3. Copiez et collez l'adresse renvoyée par la commande dans votre navigateur pour accéder au site Web.

Console

  1. Accédez à la page Google Kubernetes Engine dans la console Google Cloud.

    Accéder à Google Kubernetes Engine

  2. Dans le menu de navigation, sélectionnez Navigateur d'objets.

  3. Dans la liste Navigateur d'objets, développez la section networking.gke.io, puis sélectionnez MultiClusterIngress. Vous devrez peut-être faire défiler la page vers le bas pour trouver cette section.

  4. Sur la page MultiClusterIngress, sélectionnez frontend-multi-cluster-ingress.

  5. Sur la page d'informations frontend-multi-cluster-ingress, recherchez l'adresse IP. Cliquez sur cette adresse pour accéder au site Web.

Explorer le site Web

Vous pouvez désormais interagir avec le site Web de Cymbal Shops comme le ferait ses clients, y compris pour parcourir les produits, ajouter des produits au panier et effectuer un achat en tant qu'invité.

Explorer votre solution

Pour afficher les ressources Google Cloud déployées et leur configuration, effectuez une visite guidée interactive.

Commencer la visite

Supprimer le déploiement

Lorsque vous n'avez plus besoin du déploiement de la solution, supprimez-le pour éviter de continuer à payer des frais pour les ressources que vous avez créées.

Supprimer via la console

Suivez cette procédure si vous avez déployé la solution via la console.

  1. Dans la console Google Cloud, accédez à la page Déploiements de solutions.

    Accéder à la page "Déploiements de solutions"

  2. Sélectionnez le projet contenant le déploiement que vous souhaitez supprimer.

  3. Recherchez le déploiement que vous souhaitez supprimer.

  4. Cliquez sur Actions, puis sélectionnez Supprimer.

  5. Saisissez le nom du déploiement, puis cliquez sur Confirmer.

    Le champ État indique Suppression.

    Si la suppression échoue, consultez les conseils de dépannage de la section Erreur lors de la suppression d'un déploiement.

Lorsque vous n'avez plus besoin du projet Google Cloud que vous avez utilisé pour la solution, vous pouvez le supprimer. Pour en savoir plus, consultez la section Facultatif : supprimer le projet.

Suppression à l'aide de la CLI Terraform

Suivez cette procédure si vous avez déployé la solution à l'aide de la CLI Terraform.

  1. Dans Cloud Shell, assurez-vous que le répertoire de travail actuel est $HOME/cloudshell_open/terraform-ecommerce-microservices-on-gke/infra. Si ce n'est pas le cas, accédez à ce répertoire :

  2. Supprimez les ressources provisionnées par Terraform :

    terraform destroy
    

    Terraform affiche la liste des ressources qui seront supprimées.

  3. Lorsque vous êtes invité à effectuer les actions, saisissez yes.

    Terraform affiche des messages de progression. Une fois toutes les ressources supprimées, Terraform affiche le message suivant :

    Destroy complete!
    

    Si la suppression échoue, consultez les conseils de dépannage de la section Erreur lors de la suppression d'un déploiement.

Lorsque vous n'avez plus besoin du projet Google Cloud que vous avez utilisé pour la solution, vous pouvez le supprimer. Pour en savoir plus, consultez la section Facultatif : supprimer le projet.

(Facultatif) Supprimez le projet.

Si vous avez déployé la solution dans un nouveau projet Google Cloud dont vous n'avez plus besoin, supprimez-le en procédant comme suit :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Lorsque vous y êtes invité, saisissez l'ID du projet, puis cliquez sur Arrêter.

Si vous décidez de conserver le projet, supprimez le compte de service créé pour cette solution, comme décrit dans la section suivante.

Facultatif : supprimer le compte de service

Si vous avez supprimé le projet que vous avez utilisé pour la solution, ignorez cette section.

Comme mentionné précédemment dans ce guide, lorsque vous avez déployé la solution, un compte de service a été créé en votre nom. Certaines autorisations IAM ont été accordées temporairement au compte de service. Autrement dit, les autorisations ont été révoquées automatiquement après la fin des opérations de déploiement et de suppression de la solution, mais le compte de service n'est pas supprimé. Nous vous recommandons de supprimer ce compte de service.

  • Si vous avez déployé la solution via la console Google Cloud, accédez à la page Déploiements de solutions. (Si vous êtes déjà sur cette page, actualisez le navigateur.) Un processus est déclenché en arrière-plan pour supprimer le compte de service. Aucune autre action n'est nécessaire.

  • Si vous avez déployé la solution à l'aide de la CLI Terraform, procédez comme suit :

    1. Dans Google Cloud Console, accédez à la page Comptes de service.

      Accéder à la page "Comptes de service"

    2. Sélectionnez le projet que vous avez utilisé pour la solution.

    3. Sélectionnez le compte de service que vous souhaitez supprimer.

      L'ID d'adresse e-mail du compte de service créé pour la solution est au format suivant :

      goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
      

      L'ID d'adresse e-mail contient les valeurs suivantes :

      • DEPLOYMENT_NAME : nom du déploiement.
      • NNN : nombre aléatoire à trois chiffres.
      • PROJECT_ID : ID du projet dans lequel vous avez déployé la solution.
    4. Cliquez sur Supprimer.

Résoudre les erreurs

Les actions à effectuer pour diagnostiquer et résoudre les erreurs dépendent de la méthode de déploiement et de la complexité de l'erreur.

Erreurs lors du déploiement via la console

Si le déploiement échoue lorsque vous utilisez la console, procédez comme suit :

  1. Accédez à la page Déploiements de solutions.

    Si le déploiement a échoué, le champ État indique Échec.

  2. Afficher les détails des erreurs à l'origine de l'échec :

    1. Cliquez sur Actions.

    2. Sélectionnez Afficher les journaux Cloud Build.

  3. Consultez le journal Cloud Build et prenez les mesures appropriées pour résoudre le problème à l'origine de l'échec.

Erreurs lors du déploiement à l'aide de la CLI Terraform

Si le déploiement échoue lors de l'utilisation de Terraform, le résultat de la commande terraform apply inclut des messages d'erreur que vous pouvez consulter pour diagnostiquer le problème.

Les exemples des sections suivantes présentent des erreurs de déploiement que vous pouvez rencontrer lorsque vous utilisez Terraform.

Erreur lors de la création de la fonctionnalité : la ressource existe déjà

Si vous déployez cette solution dans un projet où Multi Cluster Ingress est déjà configuré, une erreur semblable à celle-ci s'affichera :

Error: Error creating Feature: Resource already exists - apply blocked by lifecycle params: &beta.Feature{Name:(*string)(0xc0017d1d00), Labels:map[string]string{}, ResourceState:(*beta.FeatureResourceState)(0xc001b9d890), Spec:(*beta.FeatureSpec)(0xc001792f00), State:(*beta.FeatureState)(0xc001792f50), CreateTime:(*string)(0xc001792fd0), UpdateTime:(*string)(0xc001792ff0), DeleteTime:(*string)(nil), Project:(*string)(0xc0017d1d40), Location:(*string)(0xc0017d1ca0)}.
running tf apply: terraform apply failed: running terraform failed: exit status 1

En effet, cette solution déploie un nouveau cluster GKE de configuration dans le projet sélectionné. Un projet (plus précisément, le parc d'un projet) ne peut contenir qu'un seul cluster de configuration pour configurer un objet Multi Cluster Ingress. Pour résoudre ce problème, supprimez le cluster de configuration de l'objet Multi Cluster Ingress existant ou recommencez dans un nouveau projet.

Erreur : la tâche default/kubernetes-manifests-deployer-job est en état d'échec

Le fichier Terraform de cette solution déploie une tâche Kubernetes appelée kubernetes-manifests-deployer-job. Cette tâche Kubernetes déploie les ressources Kubernetes (microservices Cymbal Shops, base de données Redis, etc.) nécessaires à cette solution dans les trois clusters.

Étant donné que cette tâche Kubernetes est complexe et repose sur la préparation des trois clusters, elle peut parfois échouer avec un message d'erreur semblable à celui-ci :

kubernetes_job.kubernetes_manifests_deployer_job: Creation errored after 5m8s
...
Error: job: default/kubernetes-manifests-deployer-job is in failed state

Si vous recevez cette erreur, il est probable que certains, voire pas, l'infrastructure Google Cloud de la solution soit déjà provisionnée, même si le reste du déploiement n'a pas abouti. Nous vous recommandons de supprimer le projet afin d'éviter d'être facturé pour ces ressources, puis de relancer le déploiement dans un nouveau projet distinct.

Erreur "API non activée"

Si vous créez un projet, puis tentez immédiatement de déployer la solution dans le nouveau projet, le déploiement peut échouer avec l'erreur suivante :

Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.

Si cette erreur se produit, attendez quelques minutes, puis exécutez à nouveau la commande terraform apply.

Erreur lors de la suppression d'un déploiement

Dans certains cas, les tentatives de suppression d'un déploiement peuvent échouer :

  • Après avoir déployé une solution via la console, si vous modifiez une ressource provisionnée par la solution et que vous essayez de supprimer le déploiement, la suppression peut échouer. Le champ État de la page Déploiements de solutions indique Échec. Le journal Cloud Build affiche la cause de l'erreur.
  • Après avoir déployé une solution à l'aide de la CLI Terraform, si vous modifiez une ressource à l'aide d'une interface autre que Terraform (par exemple, la console), et que vous essayez de supprimer le déploiement, la suppression peut échouer. Les messages dans le résultat de la commande terraform destroy indiquent la cause de l'erreur.

Examinez les journaux et les messages d'erreur, identifiez et supprimez les ressources à l'origine de l'erreur, puis essayez à nouveau de supprimer le déploiement.

Si un déploiement effectué à partir de la console n'est pas supprimé et si vous ne pouvez pas diagnostiquer l'erreur à l'aide du journal Cloud Build, vous pouvez supprimer le déploiement à l'aide de la CLI Terraform, comme décrit dans la section suivante.

Supprimer un déploiement effectué à partir de la console à l'aide de la CLI Terraform

Cette section explique comment supprimer un déploiement effectué à partir de la console si des erreurs se produisent lorsque vous essayez de le supprimer via la console. Dans cette approche, vous téléchargez la configuration Terraform du déploiement que vous souhaitez supprimer, puis vous supprimez le déploiement à l'aide de la CLI Terraform.

  1. Identifiez la région dans laquelle le code Terraform, les journaux et d'autres données du déploiement sont stockés. Cette région peut être différente de celle que vous avez sélectionnée lors du déploiement de la solution.

    1. Dans la console Google Cloud, accédez à la page Déploiements de solutions.

      Accéder à la page "Déploiements de solutions"

    2. Sélectionnez le projet contenant le déploiement que vous souhaitez supprimer.

    3. Dans la liste des déploiements, identifiez la ligne correspondant au déploiement que vous souhaitez supprimer.

    4. Cliquez sur Afficher tout le contenu de la ligne.

    5. Dans la colonne Emplacement, notez le deuxième emplacement, comme indiqué dans l'exemple suivant :

      Emplacement du code, des journaux et d'autres artefacts du déploiement.

  2. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  3. Créez des variables d'environnement pour l'ID de projet, la région et le nom du déploiement que vous souhaitez supprimer :

    export REGION="REGION"
    export PROJECT_ID="PROJECT_ID"
    export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
    

    Dans ces commandes, remplacez les éléments suivants :

    • REGION : emplacement que vous avez noté précédemment dans cette procédure.
    • PROJECT_ID : ID du projet dans lequel vous avez déployé la solution.
    • DEPLOYMENT_NAME : nom du déploiement que vous souhaitez supprimer.
  4. Obtenez l'ID de la dernière révision du déploiement que vous souhaitez supprimer :

    export REVISION_ID=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .latestRevision -r)
        echo $REVISION_ID
    

    Le résultat ressemble à ce qui suit :

    projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
    
  5. Obtenez l'emplacement Cloud Storage de la configuration Terraform pour le déploiement :

    export CONTENT_PATH=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \
        | jq .applyResults.content -r)
        echo $CONTENT_PATH
    

    Voici un exemple de résultat de cette commande :

    gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
    
  6. Téléchargez la configuration Terraform de Cloud Storage vers Cloud Shell :

    gsutil cp -r $CONTENT_PATH $HOME
    cd $HOME/content/infra
    

    Attendez que le message Operation completed s'affiche, comme illustré dans l'exemple suivant :

    Operation completed over 45 objects/268.5 KiB
    
  7. Initialisez Terraform :

    terraform init
    

    Attendez que le message suivant s'affiche :

    Terraform has been successfully initialized!
    
  8. Supprimez les ressources déployées :

    terraform destroy
    

    Terraform affiche la liste des ressources qui seront supprimées.

    Si des avertissements concernant des variables non déclarées s'affichent, ignorez-les.

  9. Lorsque vous êtes invité à effectuer les actions, saisissez yes.

    Terraform affiche des messages de progression. Une fois toutes les ressources supprimées, Terraform affiche le message suivant :

    Destroy complete!
    
  10. Supprimez l'artefact de déploiement :

    curl -X DELETE \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
    
  11. Attendez quelques secondes, puis vérifiez que l'artefact de déploiement a été supprimé :

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .error.message
    

    Si le résultat indique null, attendez quelques secondes, puis exécutez à nouveau la commande.

    Une fois l'artefact de déploiement supprimé, un message s'affiche comme illustré dans l'exemple suivant :

    Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
    

Envoyer des commentaires

Les solutions pour un démarrage rapide sont fournies uniquement à titre d'information et ne constituent pas des produits officiellement compatibles. Google est susceptible de modifier ou supprimer des solutions sans préavis.

Pour résoudre les erreurs, consultez les journaux Cloud Build et la sortie Terraform.

Pour envoyer vos commentaires, procédez comme suit :

  • Pour obtenir de la documentation, des tutoriels intégrés à la console ou la solution, utilisez le bouton Envoyer des commentaires.
  • Pour obtenir le code Terraform non modifié, créez des problèmes dans le dépôt GitHub. Les problèmes GitHub sont examinés de la manière la plus optimale possible et ne sont pas destinés aux questions d'utilisation générales.
  • Pour les problèmes liés aux produits utilisés dans la solution, prenez contact avec Cloud Customer Care.

    Nous vous recommandons également de consulter la liste des problèmes (ouverts et fermés) dans le dépôt GitHub de la solution.

Étapes suivantes