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.
HTTPRoute
undMesh
Ressourcen (zum Vergrößern klicken)Prüfen Sie, ob Sie die Voraussetzungen in den folgenden Anleitungen erfüllt haben:
- Einrichten von Traffic Director mit Envoy vorbereiten
- Leitfäden zur Einrichtung des Traffic Director-Dienstroutings
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.
Erstellen Sie die Ressourcenspezifikation
Mesh
und speichern Sie sie in einer Datei namensmesh.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.
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.
Erstellen Sie die Instanzvorlage mit einem
helloworld
-HTTP-Dienst an Port80
.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"
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
Erstellen Sie eine Systemdiagnose.
gcloud compute health-checks create http http-helloworld-health-check
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
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
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.
Erstellen Sie die Spezifikation
HTTPRoute
und speichern Sie sie in einer Datei namenshttp_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"
Erstellen Sie die Ressource
HTTPRoute
mithilfe der Spezifikation in der Dateihttp_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.
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
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
Melden Sie sich in der VM an.
gcloud compute ssh td-vm-client
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.