Configuración de Traffic Director para proxies Envoy con servicios HTTP
En esta guía te explicamos cómo configurar Traffic Director con una malla de servicios basada en proxy, servicios HTTP y los recursos Mesh
y HTTPRoute
.
HTTPRoute
yMesh
recursos (haz clic en la imagen para ampliarla)Comprueba que hayas seguido los requisitos previos en estas guías:
- Pasos para configurar Traffic Director con Envoy
- Guías de configuración del enrutamiento del servicio Traffic Director
Configurar el recurso Mesh
Los proxies Envoy que se ejecutan como sidecar reciben la configuración de enrutamiento de servicios de Traffic Director. El nombre Mesh
es la clave que usa el proxy de sidecar para solicitar la configuración asociada al recurso Mesh
.
Traffic Director proporciona la configuración de enrutamiento al proxy. A continuación, el proxy de sidecar dirige el tráfico al servicio de backend correcto mediante parámetros de solicitud como el nombre de host, los encabezados y otros parámetros que se configuran en los recursos de Route
.
Crea la especificación de recursos
Mesh
y guárdala en un archivo denominadomesh.yaml
.name: sidecar-mesh interception_port: 15001
El puerto de interceptación se configura como 15001
de forma predeterminada si no se especifica en el archivo mesh.yaml
.
Crea el recurso
Mesh
con la especificación Mesh.yaml.gcloud alpha network-services meshes import sidecar-mesh \ --source=mesh.yaml \ --location=global
Una vez creado el recurso Mesh
, Traffic Director está listo para servir la configuración. Sin embargo, como todavía no hay ningún servicio definido, la configuración está vacía. El siguiente paso es definir tus servicios y tu archivo adjunto.
Configurar el servidor HTTP
A modo de ejemplo, crea un servicio de backend con máquinas virtuales con autoescalado y los grupos de instancias gestionados como backends. Las máquinas virtuales sirven anuncioshello world
frase, utilizando el protocolo HTTP en el puerto80
,
Crea la plantilla de instancia con un servicio HTTP
helloworld
en el puerto80
.gcloud compute instance-templates create td-httpd-vm-template \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=http-td-server \ --image-family=debian-10 \ --image-project=debian-cloud \ --metadata=startup-script="#! /bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype <html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html"
Crea un grupo de instancias gestionado basado en la plantilla.
gcloud compute instance-groups managed create http-td-mig-us-east1 \ --zone=${ZONE} \ --size=2 \ --template=td-httpd-vm-template
Crea una comprobación del estado.
gcloud compute health-checks create http http-helloworld-health-check
Crea una regla de cortafuegos para permitir las conexiones entrantes de comprobación del estado a las instancias de tu red.
gcloud compute firewall-rules create http-vm-allow-health-checks \ --network=default \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=35.191.0.0/16,209.85.152.0/22,209.85.204.0/22 \ --target-tags=http-td-server \ --rules=tcp:80
Crea un servicio de backend global con un esquema de balanceo de carga de
INTERNAL_SELF_MANAGED
y añade la comprobación del estado.gcloud compute backend-services create http-helloworld-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --protocol=HTTP \ --health-checks http-helloworld-health-check
Añade el grupo de instancias gestionado al servicio de backend. En el siguiente ejemplo se utilizará el grupo de instancias gestionado que has creado anteriormente. Las máquinas virtuales del grupo de instancias gestionado ejecutan el servicio HTTP de muestra que has creado.
gcloud compute backend-services add-backend http-helloworld-service \ --instance-group=http-td-mig-us-east1 \ --instance-group-zone=${ZONE} \ --global
Configurar enrutamiento con HTTPRoute
El recurso y los servicios de Mesh
están configurados. Conéctalos con un recurso HTTPRoute que asocie un nombre de host a un servicio de backend.
Crea la especificación
HTTPRoute
y guárdala en un archivo denominadohttp_route.yaml
.name: helloworld-http-route hostnames: - helloworld-gce meshes: - projects/$PROJECT_NUMBER/locations/global/meshes/sidecar-mesh rules: - action: destinations: - serviceName: "projects/$PROJECT_NUMBER/locations/global/backendServices/http-helloworld-service"
Crea el recurso
HTTPRoute
mediante la especificación del archivohttp_route.yaml
.gcloud alpha network-services http-routes import helloworld-http-route \ --source=http_route.yaml \ --location=global
Traffic Director está configurado para el tráfico de balanceo de carga de los servicios especificados en el recurso HTTPRoute de todas las VM del grupo de instancias gestionado.
Crear un cliente HTTP con una aplicación complementaria Envoy
Para verificar el despliegue, crea una máquina virtual de cliente con un proxy adicional de Envoy que solicite la configuración de Traffic Director creada anteriormente. El parámetro mesh
del comando gcloud
hace referencia al recurso Mesh
que ya has creado.
Crea una plantilla de instancia.
gcloud beta compute instance-templates create td-vm-client-template \ --image-family=debian-10 \ --image-project=debian-cloud \ --service-proxy=enabled,mesh=sidecar-mesh
Crea una máquina virtual con un proxy Envoy que esté conectado a Traffic Director.
gcloud compute instances create td-vm-client \ --zone=${ZONE} \ --source-instance-template td-vm-client-template
Inicia sesión en la VM.
gcloud compute ssh td-vm-client
Ejecuta el comando
curl
para verificar la conectividad HTTP con los servicios de prueba.curl -H "Host: helloworld-gce" http://10.0.0.1/
El comando debe devolver una respuesta de una de las VM del grupo de instancias gestionado, con su nombre de host impreso en la consola.