Options de configuration d'une VM Compute Engine avec déploiement Envoy automatique
Ce guide fournit des informations sur les options et tâches supplémentaires permettant le déploiement automatisé d'Envoy.
Options de création de modèles d'instance supplémentaires
Lorsque vous créez un modèle d'instance pour le déploiement automatisé du proxy Envoy, vous pouvez utiliser les paramètres suivants pour définir certains aspects du déploiement et le comportement des proxys.
Réglage | Valeur et description | Obligatoire ou facultatif |
---|---|---|
--service-proxy |
enabled Détermine si le proxy et l'agent de service sont installés et configurés sur la VM. |
Obligatoire si vous souhaitez déployer et configurer automatiquement le proxy de service. Si vous omettez ce paramètre, le proxy de service n'est ni installé ni configuré. |
--service-proxy:serving-ports |
Liste de ports séparés par un point-virgule. Port(s) sur lequel/lesquels votre application/charge de travail est diffusée. Le proxy de service intercepte le trafic entrant, puis le transmet au(x) port(s) de diffusion spécifiés sur localhost. |
Facultatif Si vous omettez cette option, le proxy de service gère uniquement le trafic sortant de votre charge de travail. Il ne gère pas le trafic entrant. |
--service-proxy:proxy-port |
Un seul port. Port sur lequel le proxy de service écoute. La VM intercepte le trafic et le redirige vers ce port pour qu'il soit géré par le proxy de service. |
Facultatif. Si vous omettez cette option, la valeur par défaut est 15001 . |
--service-proxy:network |
Nom d'un réseau VPC valide. Réseau VPC Google Cloud utilisé par le plan de contrôle du proxy de service pour générer une configuration dynamique pour le proxy de service. |
Obligatoire si la VM se trouve sur plusieurs réseaux. Sinon, cette option est facultative. Si vous l'omettez, la valeur spécifiée à l'aide du paramètre --network lors de la création du modèle d'instance de VM est utilisée. |
--service-proxy:tracing |
ON ou OFF Active le proxy de service pour générer des informations de traçage distribué. Si ce paramètre est défini sur ON , le plan de contrôle du proxy de service génère une configuration qui active le traçage basé sur les ID.Pour plus d'informations, reportez-vous à la documentation generate_request_id du proxy Envoy. |
Facultatif. Si vous omettez cette option, le traçage n'est pas activé. |
--service-proxy:access-log |
Chemin du fichier des journaux d'accès envoyés au proxy de service par le plan de contrôle. Toutes les requêtes entrantes et sortantes sont enregistrées dans ce fichier. Pour plus d'informations, reportez-vous à la documentation sur le journal d'accès aux fichiers du proxy Envoy. |
Facultatif. Il n'existe pas de valeur par défaut. Si vous ne spécifiez pas le chemin d'accès au fichier, les journaux ne sont pas créés. |
--service-proxy:intercept-all-outbound-traffic (Bêta) |
Active l'interception de tout le trafic sortant par le proxy de service, puis redirige vers un hôte externe. Utilisez gcloud beta avec cette option. |
Facultatif. |
--service-proxy:exclude-outbound-ip-ranges (Bêta) |
Liste des adresses IP ou des plages CIDR séparées par un point-virgule (;) qui doivent être exclues de la redirection, entre guillemets ("). Ne s'applique que lorsque l'option intercept-all-outbound-traffic est définie. Utilisez gcloud beta avec cette option.Par exemple : exclude-outbound-ip-ranges="8.8.8.8;129.168.10.0/24" |
Facultatif. |
--service-proxy:exclude-outbound-port-ranges (Bêta) |
Liste des ports ou plages de ports, séparés par un point-virgule (;), spécifiés entre guillemets ("), qui doivent être exclus de la redirection. Ne s'applique que lorsque l'option intercept-all-outbound-traffic est définie. Utilisez gcloud beta avec cette option.Par exemple : exclude-outbound-port-ranges="81;8080-8090" |
Facultatif. |
--service-proxy:scope (Bêta) |
L'option scope définit une limite de configuration logique pour la ressource Gateway .
Lorsqu'une VM démarre, le proxy de service communique avec Cloud Service Mesh pour récupérer les informations de routage correspondant aux routes associées à la passerelle portant ce nom de champ d'application. Lorsque scope est spécifié, la valeur du réseau est ignorée. Vous ne pouvez pas spécifier les valeurs scope et mesh en même temps. Utilisez gcloud beta avec cette option. |
Facultatif. |
--service-proxy:mesh (Bêta) |
L'option mesh définit une limite de configuration logique pour une ressource Mesh .
Lorsqu'une VM démarre, le proxy de service communique avec Cloud Service Mesh pour récupérer les informations de routage correspondant aux routes associées au Mesh avec ce nom de maillage. Lorsque mesh est spécifié, la valeur du réseau est ignorée. Vous ne pouvez pas spécifier les valeurs scope et mesh en même temps. Utilisez gcloud beta avec cette option. |
Facultatif. |
--service-proxy:project-number (Bêta) |
L'option project-number spécifie le projet dans lequel les ressources Mesh et Gateway sont créées. Si non spécifiée, le projet où l'instance existe est utilisé. Ceci ne s'applique qu'aux nouvelles API de routage de service. |
Facultatif. |
--service-proxy-labels |
Paires clé/valeur au format key=value .Libellés que vous pouvez appliquer à votre proxy de service. Ils sont reflétés dans les métadonnées d'amorçage de votre proxy Envoy. Les libellés peuvent être n'importe quelle paire key=value que vous souhaitez définir en tant que métadonnées de proxy (par exemple, à utiliser avec le filtrage des configurations). Vous pouvez utiliser ces options pour appliquer des libellés d'application et de version, par exemple app=review ou version=canary . Vous pouvez également les utiliser conjointement.
|
Facultatif. |
Par exemple, la commande gcloud
suivante crée un modèle d'instance nommé proxy-it
. Le proxy Envoy et l'agent de service sont installés sur les instances créées à partir de ce modèle.
gcloud compute instance-templates create proxy-it \ --service-proxy enabled
Dans l'exemple suivant, le modèle d'instance est nommé proxy-it
. Le proxy Envoy et l'agent du proxy de service sont installés, le port de diffusion et le port du proxy sont définis, le traçage est activé et un libellé est défini.
gcloud compute instance-templates create proxy-it \ --service-proxy enabled,serving-ports=8080,proxy-port=15001,tracing=ON \ --service-proxy-labels version=canary
Le schéma suivant représente le flux du trafic lorsque vous spécifiez 8080
comme port de diffusion. Les connexions TCP entrantes vers le port 8080
sont interceptées par les règles iptables et redirigées vers le proxy Envoy, qui les transmet ensuite à l'application de votre VM qui écoute sur le port TCP 8080
. Autres caractéristiques :
- Toutes les connexions sortantes vers les adresses IP virtuelles des services configurés dans Cloud Service Mesh sont interceptées par iptables, qui configure netfilter. Netfilter garantit que le trafic correspondant qui traverse la pile réseau est intercepté et redirigé vers le proxy Envoy. Le trafic est ensuite équilibré en fonction de la configuration de Cloud Service Mesh.
- Toutes les autres connexions entrantes ne sont pas interceptées par les règles iptables, mais transmises directement aux services de la VM.
- Toutes les connexions aux points de terminaison externes sont directement transmises aux adresses IP externes sans être interceptées.
- L'ensemble du trafic UDP est transmis directement à la destination sans être intercepté par les règles iptables.
Ce flux est illustraté dans le schéma suivant.
Les flux de trafic représentés dans le schéma sont les suivants :
- Le trafic entrant par le port de destination
80
n'est pas intercepté, mais acheminé directement vers le service qui écoute sur le port. - Le trafic entrant par le port de destination
8080
, intercepté et redirigé vers le port d'écoute Envoy. - Envoy transmet le trafic de (2) au service 2 qui écoute sur le port localhost
8080
. - Trafic sortant destiné à l'adresse IP virtuelle de la règle de transfert Cloud Service Mesh et son port, interceptés et redirigés vers le port d'écouteur Envoy.
- Envoy transfère le trafic depuis (4) vers le point de terminaison du backend de la destination Service de backend Cloud Service Mesh
- Le trafic sortant destiné à l'adresse IP virtuelle et au port autres que Cloud Service Mesh, interceptées et acheminées directement vers un service externe.
Utiliser des libellés
Si vous souhaitez spécifier des libellés à utiliser avec le filtrage des métadonnées Cloud Service Mesh ou activer la journalisation des accès pour les proxys Envoy, utilisez les paramètres --service-proxy-labels
ou --service-proxy access-log
.
Exemple :
gcloud compute instance-templates create td-vm-template-auto \ --service-proxy enabled,access-log=/var/log/envoy/access.log,network=default \ --service-proxy-labels myapp=review,version=canary
Le proxy Envoy peut intercepter les ports de vérification de l'état des services sur les VM. Dans ce cas, les vérifications de l'état font état de votre application et des proxys Envoy. Le trafic n'est pas dirigé vers la VM si le proxy Envoy ne s'exécute pas correctement. Exemple :
gcloud compute instance-templates create td-vm-template-auto \ --service-proxy=enabled,serving-ports="80;8080"
Utiliser le processus de mise à jour de groupe d'instances géré
Si vous avez configuré les proxys Envoy à l'aide du processus automatisé, vous pouvez mettre à jour votre groupe d'instances géré à l'aide du processus de mise à jour de groupes d'instances gérés. Utilisez ce processus pour :
- Ajouter les composants du proxy de service à un groupe d'instances géré existant et l'enregistrer dans un réseau Cloud Service Mesh.
- mettre à jour les composants du proxy de service sur les VM.
Avant d'effectuer la mise à jour progressive, procédez comme suit :
- Définissez le drainage de connexion pour le service de backend sur une valeur d'au moins 30 secondes.
- Définissez le paramètre
--min-ready
sur 3 minutes ou plus lorsque vous appelez l'outil de mise à jour. Le paramètre--min-ready
oblige le groupe d'instances géré à attendre la mise à jour d'une VM avant de procéder à la mise à jour de la VM suivante. Sans cela, la VM nouvellement créée n'a pas le temps de démarrer Envoy ni l'agent du proxy de service, et la mise à jour se poursuit trop rapidement.
Pour effectuer une mise à jour progressive du groupe d'instances géré, procédez comme suit :
- Créez un modèle d'instance comme décrit ci-dessus avec les informations du proxy de service. Pour procéder à la mise à jour, vous pouvez utiliser la version d'origine du modèle d'instance si elle contient les informations du proxy de service et que vous souhaitez effectuer une mise à jour vers la version stable la plus récente du logiciel du proxy.
- Effectuez une mise à jour progressive du groupe d'instances géré. Assurez-vous de définir
REPLACE
en tant qu'action minimale que le programme de mise à jour doit effectuer. Le groupe d'instances installe la dernière version du logiciel du proxy et la configure comme spécifié dans le modèle d'instance.
Vous pouvez également supprimer les composants du proxy de service d'un groupe d'instances géré à l'aide du processus de mise à jour :
Créez un modèle d'instance sans spécifier l'option
--service-proxy
.Effectuez une mise à jour progressive à l'aide du processus de mise à jour du groupe d'instances géré.
Cette action supprime le proxy Envoy de vos VM. Si ce groupe d'instances géré était le seul MIG associé au service de backend, vous pouvez supprimer La configuration Cloud Service Mesh que vous avez créée lors de la configuration Cloud Service Mesh.