Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Traffic Director-Einrichtung für Envoy-Proxys mit HTTP-Diensten

In dieser Anleitung wird gezeigt, wie Sie Traffic Director mit einem Envoy-Proxy-basierten Service Mesh, HTTP-Diensten sowie den Ressourcen Mesh und HTTPRoute konfigurieren.

Envoy-Proxys mit HTTPRoute- und Mesh-Ressourcen
Envoy-Proxys mitHTTPRoute undMesh Ressourcen (zum Vergrößern klicken)

Prüfen Sie, ob Sie die Voraussetzungen in den folgenden Anleitungen erfüllt haben:

Ressource Mesh konfigurieren

Envoy-Proxys, die als Sidecars ausgeführt werden, erhalten ihre Dienstrouting-Konfiguration von Traffic Director. Der Name Mesh ist der Schlüssel, mit dem der Sidecar-Proxy die mit der Ressource Mesh verknüpfte Konfiguration anfordert. Traffic Director stellt dem Proxy die Routingkonfiguration bereit. Der Sidecar-Proxy leitet dann den Traffic anhand von Anfrageparametern wie dem Hostnamen, Headern und anderen, die in den Route-Ressourcen konfiguriert sind, an den richtigen Back-End-Dienst weiter.

  1. Erstellen Sie die Ressourcenspezifikation Mesh und speichern Sie sie in einer Datei namens mesh.yaml.

    name: sidecar-mesh
    interception_port: 15001
    

Der Abfangport ist standardmäßig auf 15001 gesetzt, wenn Sie ihn nicht in der Datei mesh.yaml angeben.

  1. Erstellen Sie die Ressource Mesh mithilfe der Mesh.yaml-Spezifikation.

    gcloud alpha network-services meshes import sidecar-mesh \
      --source=mesh.yaml \
      --location=global
    

Nachdem die Ressource Mesh erstellt wurde, kann Traffic Director die Konfiguration bereitstellen. Da jedoch noch keine Dienste definiert sind, ist die Konfiguration leer. Im nächsten Schritt werden die Dienste und der Anhang definiert.

HTTP-Server konfigurieren

Zu Demonstrationszwecken erstellen Sie einen Back-End-Dienst mit automatisch skalierten VMs, der verwaltete Instanzgruppen als Back-Ends verwendet. Die VMs stellen eine hello world-Wortgruppe mit dem HTTP-Protokoll an Port 80 bereit.

  1. Erstellen Sie die Instanzvorlage mit einem helloworld-HTTP-Dienst an Port 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. Erstellen Sie anhand der Vorlage eine verwaltete Instanzgruppe.

    gcloud compute instance-groups managed create http-td-mig-us-east1 \
      --zone=${ZONE} \
      --size=2 \
      --template=td-httpd-vm-template
    
  3. Erstellen Sie eine Systemdiagnose.

    gcloud compute health-checks create http http-helloworld-health-check
    
  4. Erstellen Sie eine Firewallregel, um eingehende Systemdiagnosen für Instanzen in Ihrem Netzwerk zuzulassen.

    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. Erstellen Sie einen globalen Back-End-Dienst mit dem Load-Balancing-Schema INTERNAL_SELF_MANAGED und fügen Sie die Systemdiagnose hinzu.

    gcloud compute backend-services create http-helloworld-service \
      --global \
      --load-balancing-scheme=INTERNAL_SELF_MANAGED \
      --protocol=HTTP \
      --health-checks http-helloworld-health-check
    
  6. Fügen Sie dem Back-End-Dienst die verwaltete Instanzgruppe hinzu. Im folgenden Beispiel wird die verwaltete Instanzgruppe verwendet, die Sie zuvor erstellt haben. Die VMs in der verwalteten Instanzgruppe führen den von Ihnen erstellten HTTP-Beispieldienst aus.

    gcloud compute backend-services add-backend http-helloworld-service \
      --instance-group=http-td-mig-us-east1 \
      --instance-group-zone=${ZONE} \
      --global
    

Routing mit HTTPRoute einrichten

Die Ressource Mesh und die Dienste wurden konfiguriert. Stellen Sie eine Verbindung zu einer HTTPRoute-Ressource her, die einen Hostnamen mit einem Back-End-Dienst verknüpft.

  1. Erstellen Sie die Spezifikation HTTPRoute und speichern Sie sie in einer Datei namens 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. Erstellen Sie die Ressource HTTPRoute mithilfe der Spezifikation in der Datei http_route.yaml.

    gcloud alpha network-services http-routes import helloworld-http-route \
      --source=http_route.yaml \
      --location=global
    

Traffic Director ist jetzt so konfiguriert, dass das Load-Balancing des Traffics für die in der HTTPRoute-Ressource angegebenen Dienste auf die VMs in der verwalteten Instanzgruppe erfolgt.

HTTP-Client mit einem Envoy-Sidecar erstellen

Sie können die Bereitstellung überprüfen. Erstellen Sie dazu eine Client-VM mit einem Envoy-Sidecar-Proxy, der die zuvor erstellte Traffic Director-Konfiguration anfordert. Der Parameter mesh im Befehl gcloud bezieht sich auf die Ressource Mesh, die Sie bereits erstellt haben.

  1. Erstellen Sie eine Instanzvorlage.

    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. Erstellen Sie eine VM mit einem Envoy-Proxy, der mit Traffic Director verbunden ist.

    gcloud compute instances create td-vm-client \
      --zone=${ZONE} \
      --source-instance-template td-vm-client-template
    
  3. Melden Sie sich in der VM an.

    gcloud compute ssh td-vm-client
    
  4. Führen Sie den Befehl curl aus, um die HTTP-Konnektivität zu den Testdiensten zu prüfen.

    curl -H "Host: helloworld-gce" http://10.0.0.1/
    

Der Befehl sollte eine Antwort von einer der VMs in der verwalteten Instanzgruppe zurückgeben, wobei der Hostname in der Konsole ausgegeben wird.