Configurer des VM Compute Engine avec déploiement Envoy automatique
Ce document s'applique aux anciennes API. Si vous effectuez le déploiement avec les nouvelles API de routage de services, qui sont en version bêta, consultez la page Configuration de Cloud Service Mesh pour les proxys Envoy avec des services HTTP.
Avant de suivre les instructions de ce guide, effectuez les tâches préalables décrites dans la section Préparer la configuration des API de routage de service avec Envoy et des charges de travail sans proxy.
Ce guide explique comment déployer automatiquement un plan de données constitué de proxys side-car Envoy, comment le configurer à l'aide de Cloud Service Mesh et comment vérifier votre configuration pour vous assurer qu'il fonctionne correctement. Ce processus implique les actions suivantes :
- Activer l'API Cloud OS Config.
- Créer un service de test
- Déployer un plan de données simple sur Compute Engine à l'aide de proxys Envoy (Envoy version 1.18.4, qui n'est compatible qu'avec xDS v3)
- Configurer Cloud Service Mesh à l'aide des API Compute Engine, ce qui permet à Cloud Service Mesh de configurer vos proxys side-car Envoy
- Vous connecter à une VM qui exécute un proxy Envoy et envoyer une requête à un backend à équilibrage de charge via le proxy Envoy
Les exemples de configuration dans ce document sont présentés à des fins de démonstration. Pour un environnement de production, vous devrez peut-être déployer des composants supplémentaires en fonction de votre environnement et des conditions requises.
Activer l'API Cloud OS Config
Assurez-vous d'activer l'API Cloud OS Config. Sans cela, vous ne pourrez pas installer les composants requis sur vos VM.
Procédez comme suit :
Console
- Dans la console Google Cloud, accédez à la page API et services.
Accéder à la page "Bibliothèque d'API" - Sélectionnez le projet adéquat.
- Dans le champ de recherche, saisissez API Cloud OS Config et appuyez sur Entrée.
- Sélectionnez API Cloud OS Config.
- Cliquez sur Activer.
gcloud
gcloud services enable osconfig.googleapis.com
Créer le service de test Hello World
Cette section explique comment créer un service de test simple qui renvoie le nom d'hôte de la VM qui a diffusé la requête du client. Le service de test n'est pas complexe. Il s'agit d'un serveur Web déployé sur un groupe d'instances géré Compute Engine.
Créer le modèle d'instance pour le service de test Hello World
Le modèle d'instance que vous créez configure un exemple de serveur Web Apache2 à l'aide du paramètre startup-script
.
Console
- Dans la console Google Cloud, accédez à la page Modèles d'instances.
- Cliquez sur Créer un modèle d'instance.
- Dans les champs, saisissez les informations suivantes :
- Nom :
td-demo-hello-world-template
- Disque de démarrage : choisissez un système d'exploitation et une version.
- Compte de service : compte de service par défaut de Compute Engine
- Niveaux d'accès : autorisez l'accès complet à toutes les API Cloud
- Nom :
- Cliquez sur Gestion, sécurité, disques, réseau et location unique.
1 Dans l'onglet Mise en réseau, dans le champ Tags réseau, ajoutez le tag
td-http-server
. Dans l'onglet Gestion, copiez le script suivant dans le champ Script de démarrage.
#!/bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
Cliquez sur Créer.
gcloud
Vous avez le choix entre plusieurs versions de système d'exploitation. Cet exemple utilise la valeur par défaut Debian 10.
Pour créer le modèle d'instance, procédez comme suit :
gcloud compute instance-templates create td-demo-hello-world-template \ --machine-type=n1-standard-1 \ --boot-disk-size=20GB \ --image-family=debian-10 \ --image-project=debian-cloud \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=td-http-server \ --metadata=startup-script="#! /bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart sudo mkdir -p /var/www/html/ echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html"
Créer le groupe d'instances géré pour le service Hello World
Dans cette section, vous allez indiquer que le groupe d'instances géré comporte toujours deux instances du service de test. Cette présentation vous est fournie à des fins de démonstration. Cloud Service Mesh est compatible avec les groupes d'instances gérés avec autoscaling.
Console
- Dans la console Google Cloud, accédez à la page Groupes d'instances.
- Cliquez sur Créer un groupe d'instances.
- Sélectionnez Nouveau groupe d'instances géré (sans état). Pour plus d'informations, consultez la page Groupes d'instances gérés (MIG) sans état ou avec état.
- Saisissez
td-demo-hello-world-mig
pour le nom du groupe d'instances géré, puis sélectionnez la zoneus-central1-a
. - Sous "Modèle d'instance", sélectionnez
td-demo-hello-world-template
, qui est le modèle d'instance que vous avez créé. - Sous Mode autoscaling, sélectionnez
Off:do not autoscale
. - Sous Nombre d'instances maximum, spécifiez que vous souhaitez créer au moins deux instances dans le groupe.
- Cliquez sur Créer.
gcloud
Utilisez gcloud CLI pour créer un groupe d'instances géré avec le modèle d'instance que vous avez créé précédemment.
gcloud compute instance-groups managed create td-demo-hello-world-mig \ --zone us-central1-a \ --size=2 \ --template=td-demo-hello-world-template
Créer le modèle d'instance et le groupe d'instances géré dans lequel Envoy est déployé
Suivez les instructions de cette section pour créer un modèle d'instance et un groupe d'instances géré pour Cloud Service Mesh avec des proxys Envoy déployés automatiquement. Les groupes d'instances gérés créent des VM de backend à l'aide de l'autoscaling.
Composants logiciels exécutés sur vos VM
Les composants suivants sont installés sur vos VM lorsque vous créez un modèle d'instance avec --service-proxy=enabled
.
- Le proxy Envoy, configuré par Cloud Service Mesh, est téléchargé à partir d'un bucket Cloud Storage dédié. Le bucket contient une compilation du proxy Envoy fournie par Google.
- L'agent du proxy de services, qui initialise le proxy Envoy et ses composants. L'agent de service configure l'interception du trafic et surveille l'état du proxy Envoy lorsqu'une VM est en cours d'exécution. L'agent du proxy de service se télécharge également à partir d'un bucket Cloud Storage.
La seule version Envoy disponible est le binaire stable Istio Envoy le plus récent, hébergé dans un emplacement Cloud Storage dédié. Cette version d'Envoy est compatible avec les images Compute Engine Debian, CentOS 7/8 et RHEL 7/8. Lors de l'autoréparation et du scaling à la hausse, le groupe d'instances géré installe une version récente d'Envoy sur la VM. Dans certains cas, cette version peut être plus récente que celle qui est déployée sur les instances de VM créées précédemment. Cela peut entraîner une incohérence dans les versions installées sur les VM d'un groupe d'instances géré. Les versions incohérentes fonctionnent correctement ensemble. Si une mise à jour de sécurité est appliquée à Envoy, nous vous recommandons de mettre à niveau le groupe d'instances géré à l'aide d'un remplacement progressif.
Créer le modèle d'instance
Un modèle d'instance spécifie la configuration des instances de VM créées dans un groupe d'instances géré. Les options que vous transmettez au modèle d'instance installent Envoy et configurent vos instances de VM de sorte qu'elles soient prêtes pour Cloud Service Mesh.
Vous pouvez utiliser Debian 10/11, CentOS 7/8 ou RHEL 7/8 pour l'image de disque de démarrage dans le modèle d'instance.
Pour créer un modèle d'instance de ce type, procédez comme suit :
gcloud compute instance-templates create td-vm-template-auto \ --image-family=[ debian-10 | centos-7 | centos-8 | rhel-7 | rhel-8 ] \ --image-project=[ debian-cloud | centos-cloud |rhel-cloud ] \ --service-proxy=enabled
Pour personnaliser votre déploiement d'Envoy, consultez le guide de référence sur le déploiement automatisé d'Envoy.
Créer un groupe d'instances géré
Console
- Dans la console Google Cloud, accédez à la page Groupes d'instances.
- Cliquez sur Créer un groupe d'instances.
- Saisissez
td-vm-mig-us-central1
pour le nom du groupe d'instances géré, puis sélectionnez la zoneus-central1-a
. - Dans la section Type de groupe, sélectionnez Groupe d'instances géré.
- Dans la section Modèle d'instance, sélectionnez
td-vm-template-auto
, le modèle d'instance que vous avez créé. - Spécifiez
2
pour le nombre d'instances que vous souhaitez créer dans le groupe. - Cliquez sur Créer pour créer le groupe.
gcloud
Utilisez gcloud CLI pour créer un groupe d'instances géré avec le modèle d'instance que vous avez créé précédemment.
gcloud compute instance-groups managed create td-vm-mig-us-central1 \ --zone us-central1-a --size=2 --template=td-vm-template-auto
Configurer Cloud Service Mesh avec les composants d'équilibrage de charge Google Cloud
Les instructions de cette section vous expliquent comment configurer Cloud Service Mesh de sorte que vos proxys Envoy équilibrent le trafic sortant sur deux instances backend. Vous configurez les composants suivants :
- Une vérification de l'état Pour en savoir plus sur les vérifications d'état, consultez les pages Concepts de la vérification d'état et Créer des vérifications d'état.
- Une règle de pare-feu pour permettre aux vérifications d'état d'atteindre les backends. Pour en savoir plus, consultez la page Concepts de la vérification d'état.
- Un service de backend Pour en savoir plus sur les services de backend, consultez la page Services de backend.
- Une carte des règles de routage. Comprend la création d'une règle de transfert et d'un mappage d'URL. Pour en savoir plus, consultez les sections Utiliser des règles de transfert et Utiliser des mappages d'URL.
Créer une vérification d'état
Suivez les instructions ci-dessous pour créer une vérification d'état. Pour en savoir plus, consultez la section Créer des vérifications d'état.
Console
- Accédez à la page "Vérifications d'état" dans Google Cloud Console.
Accéder à la page "Vérifications d'état" - Cliquez sur Créer une vérification d'état.
- Dans le champ du nom, saisissez
td-vm-health-check
. - Comme protocole, sélectionnez HTTP.
- Cliquez sur Create (Créer).
gcloud
Créez la vérification d'état.
gcloud compute health-checks create http td-vm-health-check
Créer la règle de pare-feu
Suivez les instructions ci-dessous afin de créer la règle de pare-feu requise pour les tests de vérification de l'état. Pour en savoir plus, consultez la section Règles de pare-feu pour les vérifications d'état.
Console
- Accédez à la page Stratégies de pare-feu de la console Google Cloud.
Accéder à la page "Stratégies de pare-feu" - Cliquez sur Créer une règle de pare-feu.
- Sur la page Créer une règle de pare-feu, fournissez les informations suivantes :
- Nom :
fw-allow-health-checks
- Réseau : choisissez le réseau VPC.
- Priorité : saisissez un nombre pour la priorité ou 1 000 par défaut.
- Sens du trafic : choisissez Entrée.
- Action en cas de correspondance : sélectionnez Autoriser.
- Cibles : sélectionnez Tags cibles spécifiés, puis saisissez
td-http-server
dans la zone de texte Tags cibles. - Filtre source: choisissez le type de plage d'adresses IP approprié.
- Plages d'adresses IP sources :
35.191.0.0/16,130.211.0.0/22
- Filtre de destination: sélectionnez le type d'adresse IP.
- Protocoles et ports: cliquez sur Ports et protocoles spécifiés, puis cochez
tcp
et saisissez le port80
.
- Nom :
gcloud
Créez la règle de pare-feu pour la vérification de l'état.
gcloud compute firewall-rules create fw-allow-health-checks \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags td-http-server \ --rules tcp:80
Créer un service de backend
Créez le service de backend : Si vous utilisez la Google Cloud CLI, vous devez la désigner en tant que service de backend global avec un schéma d'équilibrage de charge de type INTERNAL_SELF_MANAGED. Ajoutez la vérification d'état et un groupe d'instances géré ou non géré au service de backend. Notez que cet exemple utilise le groupe d'instances géré avec le modèle de VM Compute Engine qui exécute l'exemple de service HTTP créé dans la section Créer le groupe d'instances géré.
Console
Accédez à la page Cloud Service Mesh de la console Google Cloud.
Dans l'onglet Services, cliquez sur Créer un service.
Cliquez sur Continuer.
Pour le nom du service, saisissez
td-vm-service
.Sélectionnez le réseau VPC approprié.
Assurez-vous que le type de backend est bien défini sur Groupes d'instances.
Sélectionnez
td-demo-hello-world-mig
, le groupe d'instances géré que vous avez créé contenant les backends du service de testHello World
.Saisissez les numéros de port appropriés.
Sélectionnez Utilisation ou Taux comme mode d'équilibrage. La valeur par défaut est Taux.
Cliquez sur OK.
Sélectionnez la vérification d'état que vous avez créée ou cliquez sur Créer une autre vérification d'état et veillez à sélectionner HTTP comme protocole.
Dans le champ Délai avant expiration du drainage de connexion, définissez la valeur sur
30
secondes ou plus.Cliquez sur Continuer.
Cliquez sur Créer.
gcloud
Créez le service de backend :
gcloud compute backend-services create td-vm-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --connection-draining-timeout=30s \ --health-checks td-vm-health-check
Ajoutez les backends au service de backend.
gcloud compute backend-services add-backend td-vm-service \ --instance-group td-demo-hello-world-mig \ --instance-group-zone us-central1-a \ --global
Créer la carte des règles de routage
La carte des règles de routage définit la manière dont Cloud Service Mesh achemine le trafic dans votre maillage. Dans le cadre de la carte des règles de routage, vous configurez une adresse IP virtuelle et un ensemble de règles de gestion du trafic associées, telles que le routage basé sur l'hôte. Lorsqu'une application envoie une requête à l'adresse IP virtuelle, le proxy Envoy :
- intercepte la requête ;
- l'évalue en fonction des règles de gestion du trafic dans le mappage d'URL ;
- émet un service de backend basé sur le nom d'hôte de la requête ;
- choisit un backend ou un point de terminaison associé au service de backend sélectionné ;
- envoie le trafic vers ce backend ou point de terminaison.
Pour en savoir plus sur la gestion du trafic, consultez la page Gestion avancée du trafic.
Console
Dans la console Google Cloud, la création de proxys cibles est associée à la création de règles de transfert. Lorsque vous créez la règle de transfert, Google Cloud crée automatiquement un proxy HTTP cible et l'associe au mappage d'URL.
Accédez à la page Cloud Service Mesh de la console Google Cloud.
Dans l'onglet Cartes des règles de routage, cliquez sur Créer une carte des règles de routage.
Saisissez un nom.
Cliquez sur Ajoutez une règle de transfert.
Pour le nom de la règle de transfert, saisissez
td-vm-forwarding-rule
.Sélectionnez votre réseau.
Sélectionnez votre adresse IP interne. Le trafic envoyé à l'adresse IP interne est intercepté par le proxy Envoy et envoyé au service approprié conformément aux règles d'hôte et de chemin d'accès.
La règle de transfert est créée en tant que règle de transfert mondiale avec le paramètre
load-balancing-scheme
défini surINTERNAL_SELF_MANAGED
.Dans le champs Adresse IP personnalisée, saisissez
10.0.0.1
. Lorsque votre VM envoie du trafic à cette adresse IP, le proxy Envoy l'intercepte et le dirige vers le point de terminaison du service de backend approprié conformément aux règles de gestion du trafic définies dans le mappage d'URL.Chaque règle de transfert sur un réseau VPC doit correspondre à une adresse IP et un port uniques par réseau VPC. Si vous créez plusieurs règles de transfert avec la même adresse IP et le même port dans un réseau VPC particulier, seule la première règle de transfert est valide. Les autres sont ignorées. Si
10.0.0.1
n'est pas disponible sur votre réseau, choisissez une adresse IP différente.Assurez-vous que le port est défini sur la valeur
80
.Cliquez sur Enregistrer.
Dans la section Règles de routage, sélectionnez Règle d'hôte et de chemin d'accès simple.
Dans la section "Règles d'hôte et de chemin d'accès", sélectionnez
td-vm-service
comme service.Cliquez sur "Ajouter une règle d'hôte et de chemin d'accès".
Dans le champ Hôtes, saisissez
hello-world
.Dans le champ Service, sélectionnez
td-vm-service
.Cliquez sur Enregistrer.
gcloud
Créez un mappage d'URL qui utilise le service de backend
td-vm-service
par défaut.gcloud compute url-maps create td-vm-url-map \ --default-service td-vm-service
Créez un outil de mise en correspondance des chemins d'accès et une règle d'hôte pour acheminer le trafic de votre service en fonction du nom d'hôte et d'un chemin. Cet exemple utilise
td-vm-service
comme nom de service et un outil de mise en correspondance des chemins d'accès par défaut qui correspond à toutes les requêtes de chemin pour cet hôte (/*
).gcloud compute url-maps add-path-matcher td-vm-url-map \ --default-service td-vm-service \ --path-matcher-name td-vm-path-matcher
gcloud compute url-maps add-host-rule td-vm-url-map \ --path-matcher-name=td-vm-path-matcher \ --hosts=hello-world
Créez le proxy HTTP cible.
gcloud compute target-http-proxies create td-vm-proxy \ --url-map=td-vm-url-map
Créez la règle de transfert.
La règle de transfert doit être mondiale et être créée avec la valeur
load-balancing-scheme
définie surINTERNAL_SELF_MANAGED
.gcloud compute forwarding-rules create td-vm-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=10.0.0.1 \ --target-http-proxy=td-vm-proxy \ --ports=80 \ --network=default
À ce stade, Cloud Service Mesh est configuré pour équilibrer la charge des services spécifiés dans le mappage d'URL sur les backends du groupe d'instances géré.
Vérifier la configuration
Dans cette dernière partie du guide de configuration de Cloud Service Mesh pour les VM Compute Engine, vous allez vérifier que le trafic envoyé depuis la VM cliente destinée à la règle de transfert VIP est intercepté et redirigé vers le proxy Envoy, lequel achemine votre requête vers les VM hébergeant le service Hello World
.
Pour ce faire, connectez-vous à la VM cliente configurée pour intercepter le trafic et le rediriger vers Envoy. Envoyez une requête curl
à l'adresse IP virtuelle associée à votre carte de règles de routage. Envoy inspecte la requête curl
, détermine le service auquel il doit répondre, puis la transfère vers un backend associé à ce service.
- Dans la console Google Cloud, accédez à la page Groupes d'instances.
- Sélectionnez le groupe d'instances
td-vm-mig-us-central1
. - Dans la section "Récapitulatif de la VM", sous Se connecter, cliquez sur SSH.
- Une fois connecté à la VM cliente, utilisez l'outil
curl
pour envoyer une requête au serviceHello World
via Envoy :
curl -H "Host: hello-world" http://10.0.0.1/
Lorsque vous exécutez cette commande à plusieurs reprises, vous devriez obtenir différentes réponses HTML contenant les noms d'hôte des backends dans le groupe d'instances géré Hello World
.
En effet, Envoy utilise l'équilibrage de charge "round robin" (à tour de rôle), l'algorithme d'équilibrage de charge par défaut, pour envoyer le trafic vers les backends du service Hello World
.
Étape suivante
- En savoir plus sur la gestion avancée du trafic.
- Découvrez comment configurer l'observabilité avec Envoy.
- Découvrez comment résoudre les problèmes de déploiement de Cloud Service Mesh.
- Découvrez les options de déploiement avancées dans le guide des options de déploiement automatisé d'Envoy.