Service Extensions permet aux équilibreurs de charge d'application compatibles d'envoyer des appels depuis le chemin de traitement des données vers des services de rappel de backend gérés par l'utilisateur. Cela permet aux équilibreurs de charge d'application d'utiliser une logique personnalisée dans le chemin de traitement. Cette page explique comment configurer un service de backend d'encart géré par l'utilisateur.
Pour obtenir une présentation des extensions de l'équilibreur de charge d'application, consultez Présentation des extensions Cloud Load Balancing.
Avant de commencer
Assurez-vous de disposer d'un rôle de propriétaire ou d'éditeur de projet, ou des rôles IAM Compute Engine suivants :
- Pour créer des instances :
compute.instanceAdmin.v1 - Pour créer des composants Cloud Load Balancing :
compute.networkAdmin
- Pour créer des instances :
Activez les API Compute Engine et Network Services.
Console
Dans la console Google Cloud , accédez à la page Activer l'accès aux API.
Suivez les instructions.
gcloud
Exécutez la commande
gcloud services enable:gcloud services enable compute.googleapis.com networkservices.googleapis.com
Créez et configurez un équilibreur de charge d'application compatible avec les extensions. Pour cet exemple, configurez un équilibreur de charge d'application interne régional avec des backends de groupes d'instances de VM. Utilisez les exemples de valeurs mentionnés.
Pour les extensions d'itinéraire uniquement. Configurez un service de backend supplémentaire et mettez à jour le mappage d'URL pour ajouter un outil de mise en correspondance des hôtes qui achemine le trafic vers ce service de backend pour tout le trafic dont l'hôte HTTP correspond à la condition spécifiée.
Console
Accédez à la page Créer une instance dans la console Google Cloud .
Accéder à la page Créer une instance
Spécifiez les exemples de valeurs suivants :
- Nom :
l7-ilb-backend2-vm - Tags :
allow-sshetload-balanced-backend - Zone :
us-west1-a - Réseau :
lb-network - Sous-réseau :
backend-subnet - Image :
debian-11 - Famille :
debian-cloud Options avancées > Gestion > Automatisation :
'#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl echo "Page served from second backend service" | tee /var/www/html/index.html systemctl restart apache2'
- Nom :
Créez un groupe d'instances non géré.
Spécifiez les exemples de valeurs suivants :
- Nom :
l7-ilb-backend-service2-ig - Zone :
us-west1-a
- Nom :
Ajoutez la nouvelle VM au groupe d'instances.
Pour Instances de VM, spécifiez
l7-ilb-backend2-vm.Dans la console Google Cloud , accédez à la page Équilibrage de charge.
Mettez à jour l'équilibreur de charge en créant un service de backend et en y ajoutant un backend.
Pour le service de backend, spécifiez les exemples de valeurs suivants :
- Nom :
l7-ilb-backend-service2 - Protocole :
HTTP - Vérification de l'état > Nom :
l7-ilb-basic-check - Vérification de l'état > Région :
us-west1
Pour le backend, spécifiez les exemples de valeurs suivants :
- Groupe d'instances :
l7-ilb-backend-service2-ig - Mode Équilibré :
Utilization
- Nom :
Ajoutez un outil de mise en correspondance des hôtes au mappage d'URL du service de backend.
Spécifiez les exemples de valeurs suivants :
- Nom :
l7-ilb-map - Hôte :
service-extensions.com - Chemin d'accès :
callouts - Protocole :
HTTP - Backend :
l7-ilb-backend-service2
- Nom :
gcloud
Créez une instance de VM. Utilisez la commande
gcloud compute instances createavec les exemples de valeurs suivants :gcloud compute instances create l7-ilb-backend2-vm \ --zone=us-west1-a \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-11 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl echo "Page served from second backend service" | tee /var/www/html/index.html systemctl restart apache2'Créez un groupe d'instances non géré. Utilisez la commande
gcloud compute instance-groups unmanaged createavec les exemples de valeurs suivants :gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \ --zone us-west1-a
Ajoutez la nouvelle VM au groupe d'instances. Utilisez la commande
gcloud compute instance-groups unmanaged add-instancesavec les exemples de valeurs suivants :gcloud compute instance-groups unmanaged add-instances l7-ilb-backend-service2-ig \ --zone=us-west1-a \ --instances=l7-ilb-backend2-vm
Créez un service de backend. Utilisez la commande
gcloud compute backend-services createavec les exemples de valeurs suivants :gcloud compute backend-services create l7-ilb-backend-service2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=l7-ilb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1
Ajoutez un backend au service de backend : Utilisez la commande
gcloud compute backend-services add-backendavec les exemples de valeurs suivants :gcloud compute backend-services add-backend l7-ilb-backend-service2 \ --balancing-mode=UTILIZATION \ --instance-group=l7-ilb-backend-service2-ig \ --instance-group-zone=us-west1-a \ --region=us-west1
Ajoutez un outil de mise en correspondance des hôtes au mappage d'URL du service de backend. Utilisez la commande
gcloud compute url-maps add-path-matcheravec les exemples de valeurs suivants :gcloud compute url-maps add-path-matcher l7-ilb-map \ --path-matcher-name=callouts \ --default-service=l7-ilb-backend-service2 \ --new-hosts=service-extensions.com \ --region=us-west1
Configurer un service de backend d'appel
Pour cet exemple, un serveur d'extension de base basé sur Python implémentant l'API gRPC ext_proc d'Envoy est disponible. Un conteneur Docker avec ce serveur est disponible à l'adresse us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main dans le dépôt GitHub Service Extensions de Google Cloud. Ce dépôt contient plusieurs autres exemples Python et Go de serveurs ext_proc pour effectuer des tâches telles que la mutation d'en-tête et la mutation de corps.
Pour créer et configurer un service de backend d'accroche, procédez comme suit :
Créez une instance de machine virtuelle (VM) pour le service de backend d'appel qui exécute l'exemple de serveur d'extension Python.
Console
Créez une instance à l'aide d'une image de conteneur.
Accédez à la page Créer une instance dans la console Google Cloud .
Spécifiez les exemples de valeurs suivants :
- Nom :
callouts-vm - Zone :
us-west1-a - Réseau :
lb-network - Sous-réseau :
backend-subnet - Tags :
allow-sshetload-balanced-backend - Image du conteneur :
us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main
- Nom :
gcloud
Créez une instance à l'aide d'une image de conteneur. Utilisez la commande
gcloud compute instances create-with-containeravec les exemples de valeurs suivants :gcloud compute instances create-with-container callouts-vm \ --container-image=us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main \ --network=lb-network \ --subnet=backend-subnet \ --zone=us-west1-a \ --tags=allow-ssh,load-balanced-backend
Ajoutez la VM à un groupe d'instances non géré.
Console
Créez un groupe d'instances non géré.
Dans la console Google Cloud , accédez à la page Groupes d'instances.
Accéder à la page Groupes d'instances
Spécifiez les exemples de valeurs suivants :
- Nom :
callouts-ig - Zone :
us-west1-a
- Nom :
Définissez un port pour le groupe d'instances.
Pour Mappage de port, spécifiez les noms et valeurs de port suivants :
http:80etgrpc:443.Ajoutez la nouvelle VM au groupe d'instances.
Pour Instances de VM, spécifiez
callouts-vm.
gcloud
Créez un groupe d'instances non géré. Utilisez la commande
gcloud compute instance-groups unmanaged createavec les exemples de valeurs suivants :gcloud compute instance-groups unmanaged create callouts-ig \ --zone=us-west1-a
Définissez un port pour le groupe d'instances : Utilisez la commande
gcloud compute instance-groups unmanaged set-named-portsavec les exemples de valeurs suivants :gcloud compute instance-groups unmanaged set-named-ports callouts-ig \ --named-ports=http:80,grpc:443 \ --zone=us-west1-a
Ajoutez la nouvelle instance de VM au groupe d'instances non géré. Utilisez la commande
gcloud compute instance-groups unmanaged add-instancesavec les exemples de valeurs suivants :gcloud compute instance-groups unmanaged add-instances callouts-ig \ --zone=us-west1-a \ --instances=callouts-vm
Créez un service de backend d'appel et ajoutez un backend. Comme les autres serveurs de backend, les serveurs d'appel peuvent avoir besoin de règles de pare-feu pour autoriser le trafic proxy.
Console
Créez un service de backend d'appel qui utilise le protocole HTTP/2 et qui dispose d'une vérification de l'état d'état HTTP.
Dans la console Google Cloud , accédez à la page Backends d'Cloud Load Balancing.
Ajoutez un service de backend régional avec les exemples de valeurs suivants :
- Nom :
l7-ilb-callout-service - Région :
us-west1 - Type d'équilibreur de charge :
Regional external Application Load Balancer (EXTERNAL_MANAGED) - Protocole :
HTTP2 - Nom du port :
grpc - Vérification de l'état > Nom :
callouts-hc - Vérification de l'état > Numéro de port :
80 - Règle de sécurité de backend Cloud Armor :
None
- Nom :
Ajoutez le groupe d'instances avec le serveur d'extension en tant que backend au service de backend. Le groupe d'instances exécute le service
ext_proc.Spécifiez les exemples de valeurs suivants :
- Groupe d'instances :
callouts-ig - Mode Équilibré :
Utilization
- Groupe d'instances :
gcloud
Créez une vérification de l'état HTTP de base pour l'instance. Utilisez la commande
gcloud compute health-checks create httpavec les exemples de valeurs suivants :gcloud compute health-checks create http callouts-hc \ --region=us-west1 \ --port=80
Créez un service de backend d'appel qui utilise le protocole HTTP/2. Exécutez la commande
gcloud compute backend-services create.gcloud compute backend-services create l7-ilb-callout-service \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP2 \ --port-name=grpc \ --health-checks=callouts-hc \ --health-checks-region=us-west1 \ --region=us-west1
Ajoutez le groupe d'instances avec le serveur d'extension en tant que backend au service de backend. Le groupe d'instances exécute le service
ext_proc. Utilisez la commandegcloud compute backend-services add-backendavec les exemples de valeurs suivants :gcloud compute backend-services add-backend l7-ilb-callout-service \ --balancing-mode=UTILIZATION \ --instance-group=callouts-ig \ --instance-group-zone=us-west1-a \ --region=us-west1
Une fois le service de backend configuré, vous pouvez configurer les extensions route, authorization et traffic.
Étapes suivantes
- Configurer une extension de route
- Configurer une extension d'autorisation
- Configurer une extension de trafic