Organízate con las colecciones Guarda y clasifica el contenido según tus preferencias.

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.

Proxies de Envoy con recursos HTTPRoute y Mesh
Proxies de Envoy conHTTPRoute yMesh recursos (haz clic en la imagen para ampliarla)

Comprueba que hayas seguido los requisitos previos en estas guías:

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.

  1. Crea la especificación de recursos Mesh y guárdala en un archivo denominado mesh.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.

  1. 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 ,

  1. Crea la plantilla de instancia con un servicio HTTP helloworld en el puerto 80.

    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"
    
  2. 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
    
  3. Crea una comprobación del estado.

    gcloud compute health-checks create http http-helloworld-health-check
    
  4. 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
    
  5. 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
    
  6. 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.

  1. Crea la especificación HTTPRoute y guárdala en un archivo denominado http_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"
    
  2. Crea el recurso HTTPRoute mediante la especificación del archivo http_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.

  1. 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
    
  2. 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
    
  3. Inicia sesión en la VM.

    gcloud compute ssh td-vm-client
    
  4. 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.