Compute Engine-VMs mit automatischem Envoy-Deployment einrichten

Dieses Dokument bezieht sich auf ältere APIs. Wenn Sie die Bereitstellungen mit den neuen Service Routing APIs vornehmen, die sich in der Vorschau befinden, finden Sie weitere Informationen unter Cloud Service Mesh-Einrichtung für Envoy-Proxys mit HTTP-Diensten.

Bevor Sie den Anleitungen in diesem Leitfaden folgen, führen Sie die unter Einrichtung von Service Routing APIs mit Envoy und proxylosen Workloads vorbereiten beschriebenen vorbereitenden Aufgaben aus.

In diesem Leitfaden erfahren Sie, wie Sie eine aus Envoy-Sidecar-Proxys bestehende Datenebene automatisch bereitstellen, diese mit Cloud Service Mesh konfigurieren und die Einrichtung prüfen, damit sie ordnungsgemäß funktioniert. Dieser Prozess umfasst Folgendes:

  1. Cloud OS Config API aktivieren
  2. Testdienst erstellen
  3. Einfache Datenebene in Compute Engine mit Envoy-Proxys (Envoy-Version 1.18.4, unterstützt nur xDS v3) bereitstellen
  4. Cloud Service Mesh mit Compute Engine APIs einrichten, mit denen Cloud Service Mesh Ihre Envoy-Sidecar-Proxys konfigurieren kann
  5. Bei einer VM anmelden, auf der ein Envoy-Proxy ausgeführt wird, und durch einen Envoy-Proxy eine Anfrage an ein Back-End mit Load Balancing senden

Die Konfigurationsbeispiele in diesem Dokument dienen Demonstrationszwecken. In einer Produktionsumgebung müssen Sie möglicherweise je nach Umgebung und Anforderungen zusätzliche Komponenten bereitstellen.

Cloud OS Config API aktivieren

Prüfen Sie, ob die Cloud OS Config API aktiviert ist. Nur dann können Sie die erforderlichen Komponenten auf Ihren VMs installieren.

So gehen Sie dazu vor:

Console

  1. Rufen Sie in der Google Cloud Console zur Seite „APIs & Dienste” auf.
    Zur Seite „API-Bibliothek“
  2. Wählen Sie das richtige Projekt aus.
  3. Geben Sie in das Suchfeld Cloud OS Config API ein und drücken Sie die Eingabetaste.
  4. Wählen Sie Cloud OS Config API aus.
  5. Klicken Sie auf Aktivieren.

gcloud

gcloud services enable osconfig.googleapis.com

Hello World-Testdienst erstellen

In diesem Abschnitt erfahren Sie, wie Sie einen einfachen Testdienst erstellen, der den Hostnamen der VM zurückgibt, die die Anfrage vom Client bereitgestellt hat. Der Testdienst ist unkompliziert. Es ist ein Webserver, der über eine von Compute Engine verwaltete Instanzgruppe bereitgestellt wird.

Instanzvorlage für den Hello World-Testdienst erstellen

In der von Ihnen erstellten Instanzvorlage wird ein Beispiel für den apache2-Webserver mit dem Parameter startup-script konfiguriert.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzvorlagen auf.

    Instanzvorlagen aufrufen

  2. Klicken Sie auf Instanzvorlage erstellen.
  3. Geben Sie in den Feldern die folgenden Informationen ein:
    • Name: td-demo-hello-world-template
    • Bootlaufwerk: Wählen Sie ein Betriebssystem und eine Version aus.
    • Dienstkonto: Standarddienstkonto für Compute Engine
    • Zugriffsbereiche: Erlauben Sie vollen Zugriff auf alle Cloud APIs
  4. Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten. 1 Fügen Sie auf dem Tab Netzwerk im Feld Netzwerk-Tags das Tag td-http-server hinzu.
  5. Kopieren Sie auf dem Tab Verwaltung das folgende Skript in das Feld Startskript.

    #!/bin/bash
    sudo apt-get update -y
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
    
  6. Klicken Sie auf Erstellen.

gcloud

Sie können unter vielen Betriebssystemversionen auswählen. In diesem Beispiel wird der Standardwert Debian 10 verwendet.

So erstellen Sie die Instanzvorlage:

gcloud compute instance-templates create td-demo-hello-world-template \
  --machine-type=n1-standard-1 \
  --boot-disk-size=20GB \
  --image-family=debian-10  \
  --image-project=debian-cloud \
  --scopes=https://www.googleapis.com/auth/cloud-platform \
  --tags=td-http-server \
  --metadata=startup-script="#! /bin/bash
sudo apt-get update -y
sudo apt-get install apache2 -y
sudo service apache2 restart
sudo mkdir -p /var/www/html/
echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html"

Verwaltete Instanzgruppe für den Dienst Hello World erstellen

In diesem Abschnitt geben Sie an, dass die verwaltete Instanzgruppe immer zwei Instanzen des Testdienstes enthält. Dies ist zu Demonstrationszwecken. Cloud Service Mesh unterstützt automatisch skalierte verwaltete Instanzgruppen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie auf Instanzgruppe erstellen.
  3. Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus. Weitere Informationen finden Sie unter Zustandslose oder zustandsorientierte MIGs.
  4. Geben Sie td-demo-hello-world-mig als Name für die verwaltete Instanzgruppe ein und wählen Sie die Zone us-central1-a aus.
  5. Wählen Sie unter "Instanzvorlage" die Option td-demo-hello-world-template aus. Dies ist die von Ihnen erstellte Instanzvorlage.
  6. Wählen Sie Off:do not autoscale unter Autoscaling-Modus aus.
  7. Geben Sie unter Maximal Anzahl der Instanzen mindestens 2 als Anzahl der Instanzen an, die Sie in der Gruppe erstellen möchten.
  8. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie die gcloud CLI, um eine verwaltete Instanzgruppe mit der zuvor erstellten Instanzvorlage zu erstellen.

gcloud compute instance-groups managed create td-demo-hello-world-mig \
  --zone us-central1-a \
  --size=2 \
  --template=td-demo-hello-world-template

Instanzvorlage und verwaltete Instanzgruppe erstellen, in der Envoy bereitgestellt wird

Folgen Sie der Anleitung in diesem Abschnitt, um eine Instanzvorlage und eine verwaltete Instanzgruppe für Cloud Service Mesh mit automatisch bereitgestellten Envoy-Proxys zu erstellen. Verwaltete Instanzgruppen erstellen neue Back-End-VMs mithilfe von Autoscaling.

Auf den VMs ausgeführte Softwarekomponenten

Die folgenden Komponenten werden auf Ihren VMs installiert, wenn Sie eine Instanzvorlage mit --service-proxy=enabled erstellen.

  • Der von Cloud Service Mesh konfigurierte Envoy-Proxy wird aus einem dedizierten Cloud Storage-Bucket heruntergeladen. Der Bucket enthält einen von Google bereitgestellten Build des Envoy-Proxys.
  • Der Dienst-Proxy-Agent, der den Envoy-Proxy und die Komponenten des Proxys initialisiert. Der Dienst-Proxy-Agent richtet das Abfangen von Traffic ein und überwacht den Status des Envoy-Proxys, wenn eine VM ausgeführt wird. Der Dienst-Proxy-Agent wird ebenfalls aus einem Cloud Storage-Bucket heruntergeladen.

Die einzige verfügbare Envoy-Version ist die neueste Envoy-Binärdatei, die in einem dedizierten Cloud Storage-Speicherort gehostet wird. Diese Envoy-Version wird auf Compute Engine Debian-, CentOS 7/8- und RHEL 7/8-Images unterstützt. Während der automatischen Reparatur und der vertikalen Skalierung installiert die verwaltete Instanzgruppe eine aktuelle Version von Envoy auf der VM. In einigen Fällen kann diese Version aktueller sein als die bereitgestellte VM-Instanzen, die zuvor erstellt wurden. Dies kann zu Inkonsistenzen bei Versionen führen, die auf den VMs in einer verwalteten Instanzgruppe installiert sind. Die inkonsistenten Versionen funktionieren ordnungsgemäß zusammen. Wenn ein Sicherheitsupdate für Envoy verfügbar ist, empfehlen wir ein Upgrade der verwalteten Instanzgruppe mit einer rollierenden Ersetzung.

Instanzvorlage erstellen

Eine Instanzvorlage gibt die Konfiguration der VM-Instanzen an, die in einer verwalteten Instanzgruppe erstellt werden. Die Flags, die Sie an die Instanzvorlage übergeben, installieren Envoy und konfigurieren Ihre VM-Instanzen zur Vorbereitung auf Cloud Service Mesh.

Sie können Debian 10/11, CentOS 7/8 oder RHEL 7/8 für das Bootlaufwerk-Image in der Instanzvorlage verwenden.

So erstellen Sie eine solche Instanzvorlage:

  gcloud compute instance-templates create td-vm-template-auto \
    --image-family=[ debian-10 | centos-7 | centos-8 | rhel-7 | rhel-8 ]  \
    --image-project=[ debian-cloud | centos-cloud |rhel-cloud ] \
    --service-proxy=enabled
 

Informationen zum Anpassen Ihrer Envoy-Bereitstellung finden Sie unter Referenzleitfaden für die automatisierte Envoy-Bereitstellung.

Verwaltete Instanzgruppe erstellen

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zu den Instanzgruppen

  2. Klicken Sie auf Instanzgruppe erstellen.
  3. Geben Sie td-vm-mig-us-central1 als Name für die verwaltete Instanzgruppe ein und wählen Sie die Zone us-central1-a aus.
  4. Wählen Sie unter Gruppentyp die Option Verwaltete Instanzgruppe aus.
  5. Wählen Sie unter Instanzvorlage die erstellte Vorlage td-vm-template-auto aus.
  6. Geben Sie 2 als Anzahl der Instanzen an, die Sie in der Gruppe erstellen möchten.
  7. Klicken Sie auf Erstellen, um die neue Gruppe anzulegen.

gcloud

Verwenden Sie die gcloud CLI, um eine verwaltete Instanzgruppe mit der zuvor erstellten Instanzvorlage zu erstellen.

 gcloud compute instance-groups managed create td-vm-mig-us-central1 \
    --zone us-central1-a --size=2 --template=td-vm-template-auto

Cloud Service Mesh mit Google Cloud Load Balancing-Komponenten konfigurieren

In diesem Abschnitt erfahren Sie, wie Sie Cloud Service Mesh so konfigurieren, dass Ihre Envoy-Proxys das Load Balancing für ausgehenden Traffic zwischen zwei Back-End-Instanzen ausführen. Sie konfigurieren die folgenden Komponenten:

Systemdiagnose erstellen

Führen Sie zum Erstellen einer Systemdiagnose die folgenden Schritte aus. Weitere Informationen finden Sie unter Systemdiagnosen erstellen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite "Systemdiagnosen" auf.
    Zur Seite "Systemdiagnosen"
  2. Klicken Sie auf Systemdiagnose erstellen.
  3. Geben Sie als Name td-vm-health-check ein.
  4. Wählen Sie als Protokoll HTTP aus.
  5. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie die Systemdiagnose.

    gcloud compute health-checks create http td-vm-health-check
    

Firewallregel erstellen

Verwenden Sie folgende Anleitung, um die Firewallregel zu erstellen, die für die Systemdiagnoseprüfungen erforderlich ist. Weitere Informationen finden sich unter Firewallregeln für Systemdiagnosen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Firewallrichtlinien auf.
    Zur Seite „Firewall-Richtlinien“
  2. Klicken Sie auf Firewallregel erstellen.
  3. Geben Sie auf der Seite Firewallregel erstellen die folgenden Informationen an:
    • Name: fw-allow-health-checks
    • Netzwerk: Wählen Sie das VPC-Netzwerk.
    • Priorität: Geben Sie eine Zahl für die Priorität ein; der Standardwert ist 1.000.
    • Trafficrichtung: Wählen Sie Eingehend aus.
    • Aktion bei Übereinstimmung: Wählen Sie Zulassen aus.
    • Ziele: Wählen Sie Angegebene Ziel-Tags aus und geben Sie dann td-http-server in das Textfeld Ziel-Tags ein.
    • Quellfilter: Wählen Sie den richtigen IP-Bereichstyp aus.
    • Quell-IP-Bereiche: 35.191.0.0/16,130.211.0.0/22
    • Zielfilter: Wählen Sie den IP-Typ aus.
    • Protokolle und Ports: Klicken Sie auf Angegebene Ports und Protokolle, klicken Sie das Kästchen neben tcp an und geben Sie den Port 80 ein.

gcloud

  1. Erstellen Sie die Firewallregel für die Systemdiagnose.

    gcloud compute firewall-rules create fw-allow-health-checks \
      --action ALLOW \
      --direction INGRESS \
      --source-ranges 35.191.0.0/16,130.211.0.0/22 \
      --target-tags td-http-server \
      --rules tcp:80
    

Back-End-Dienst erstellen

Erstellen Sie den Backend-Dienst. Wenn Sie die Google Cloud CLI verwenden, müssen Sie sie als globalen Backend-Dienst mit dem Load-Balancing-Schema INTERNAL_SELF_MANAGED festlegen. Fügen Sie dem Backend-Dienst die Systemdiagnose und eine verwaltete oder nicht verwaltete Instanzgruppe hinzu. In diesem Beispiel wird die verwaltete Instanzgruppe mit der Compute Engine-VM-Vorlage verwendet, die den Beispiel-HTTP-Dienst ausführt, der unter Verwaltete Instanzgruppe erstellen erstellt wurde.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Cloud Service Mesh auf.

    Zur Seite „Cloud Service Mesh“

  2. Klicken Sie auf dem Tab Dienste auf Dienst erstellen.

  3. Klicken Sie auf Weiter.

  4. Geben Sie als Dienstname td-vm-service ein.

  5. Wählen Sie das richtige VPC-Netzwerk aus.

  6. Achten Sie darauf, dass der Back-End-Typ Instanzgruppen ist.

  7. Wählen Sie td-demo-hello-world-mig aus. Dies ist die von Ihnen erstellte verwaltete Instanzgruppe, die die Back-Ends für den Testdienst Hello World enthält.

  8. Geben Sie die richtigen Portnummern ein.

  9. Wählen Sie Auslastung oder Rate als Balancing-Modus aus. Der Standardwert ist Rate.

  10. Klicken Sie auf Fertig.

  11. Wählen Sie die erstellte Systemdiagnose aus oder klicken Sie auf Weitere Systemdiagnose erstellen und wählen Sie als Protokoll HTTP aus.

  12. Legen Sie unter Zeitlimit für Verbindungsausgleich den Wert auf mindestens 30 Sekunden fest.

  13. Klicken Sie auf Weiter.

  14. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie den Back-End-Dienst.

    gcloud compute backend-services create td-vm-service \
     --global \
     --load-balancing-scheme=INTERNAL_SELF_MANAGED \
     --connection-draining-timeout=30s \
     --health-checks td-vm-health-check
    
  2. Fügen Sie dem Back-End-Dienst die Back-Ends hinzu.

    gcloud compute backend-services add-backend td-vm-service \
      --instance-group td-demo-hello-world-mig \
      --instance-group-zone us-central1-a \
      --global
    

Routingregelzuordnung erstellen

Die Routingregelzuordnung definiert, wie Cloud Service Mesh den Traffic in Ihrem Mesh-Netzwerk weiterleitet. Im Rahmen der Routingregelzuordnung konfigurieren Sie eine virtuelle IP-Adresse (VIP) und eine Reihe zugehöriger Trafficverwaltungsregeln, z. B. hostbasiertes Routing. Wenn eine Anwendung eine Anfrage an die VIP sendet, führt der Envoy-Proxy folgende Schritte aus:

  1. Fängt die Anfrage ab
  2. Bewertet die Anfrage in Übereinstimmung mit den Trafficverwaltungsregeln in der URL-Zuordnung
  3. Wählt einen Back-End-Dienst anhand des Hostnamens in der Anfrage aus.
  4. Wählt ein Back-End oder einen Endpunkt aus, der dem ausgewählten Back-End-Dienst zugeordnet ist
  5. Sendet Traffic an dieses Back-End oder den Endpunkt

Weitere Informationen zur Trafficverwaltung finden Sie unter Erweiterte Trafficverwaltung.

Console

In der Google Cloud Console wird das Erstellen des Zielproxys mit dem Erstellen von Weiterleitungsregeln kombiniert. Wenn Sie die Weiterleitungsregel erstellen, erstellt Google Cloud automatisch einen Ziel-HTTP-Proxy und verknüpft ihn mit der URL-Zuordnung.

  1. Rufen Sie in der Google Cloud Console die Seite Cloud Service Mesh auf.

    Zur Seite „Cloud Service Mesh“

  2. Klicken Sie auf dem Tab Routingregelzuordnungen auf Routingregelzuordnung erstellen.

  3. Geben Sie einen Namen ein.

  4. Klicken Sie auf Weiterleitungsregel hinzufügen.

  5. Geben Sie als Name für die Weiterleitungsregel td-vm-forwarding-rule ein.

  6. Wählen Sie das Netzwerk aus.

  7. Wählen Sie Ihre Interne IP-Adresse aus. Der an diese IP-Adresse gesendete Traffic wird vom Envoy-Proxy abgefangen und gemäß den Host- und Pfadregeln an den entsprechenden Dienst gesendet.

    Die Weiterleitungsregel wird als globale Weiterleitungsregel erstellt, wobei load-balancing-scheme auf INTERNAL_SELF_MANAGED gesetzt ist.

  8. Geben Sie im Feld Benutzerdefinierte IP den Wert 10.0.0.1 ein. Wenn Ihre VM Traffic an diese IP-Adresse sendet, wird er vom Envoy-Proxy abgefangen und an den Endpunkt des entsprechenden Back-End-Dienstes gesendet, der in den Trafficverwaltungsregeln der URL-Zuordnung definiert ist.

    Jede Weiterleitungsregel in einem VPC-Netzwerk muss eine eindeutige IP-Adresse und einen eindeutigen Port pro VPC-Netzwerk haben. Wenn Sie mehrere Weiterleitungsregeln mit derselben IP-Adresse und demselben Port in einem bestimmten VPC-Netzwerk erstellen, ist nur die erste Weiterleitungsregel gültig. Andere werden ignoriert. Wenn 10.0.0.1 in Ihrem Netzwerk nicht verfügbar ist, wählen Sie eine andere IP-Adresse aus.

  9. Achten Sie darauf, dass der Port auf 80 festgelegt ist.

  10. Klicken Sie auf Speichern.

  11. Wählen Sie im Abschnitt Routingregeln die Option Einfache Host- und Pfadregel aus.

  12. Wählen Sie im Abschnitt "Host- und Pfadregeln" td-vm-service als Dienst aus.

  13. Klicken Sie auf "Host- und Pfadregel hinzufügen".

  14. Geben Sie im Feld Hosts den Wert hello-world ein.

  15. Wählen Sie unter Dienst die Option td-vm-service aus.

  16. Klicken Sie auf Speichern.

gcloud

  1. Erstellen Sie eine URL-Zuordnung, die den Back-End-Dienst td-vm-service als Standard verwendet.

    gcloud compute url-maps create td-vm-url-map \
       --default-service td-vm-service
    
  2. Erstellen Sie ein Tool zur Abgleichung von Pfaden und eine Hostregel, um den Traffic für Ihren Dienst auf Grundlage des Hostnamens und Pfads weiterzuleiten. In diesem Beispiel werden td-vm-service als Dienstname und ein Standardtool zur Abgleichung von Pfaden verwendet, das mit allen Pfadanfragen für diesen Host (/*) übereinstimmt.

    gcloud compute url-maps add-path-matcher td-vm-url-map \
       --default-service td-vm-service \
       --path-matcher-name td-vm-path-matcher
    
    gcloud compute url-maps add-host-rule td-vm-url-map \
       --path-matcher-name=td-vm-path-matcher \
       --hosts=hello-world
    
  3. Erstellen Sie den Ziel-HTTP-Proxy.

    gcloud compute target-http-proxies create td-vm-proxy \
       --url-map=td-vm-url-map
    
  4. Erstellen Sie die Weiterleitungsregel.

    Die Weiterleitungsregel muss global sein und mit dem Wert load-balancing-scheme auf INTERNAL_SELF_MANAGED erstellt werden.

    gcloud compute forwarding-rules create td-vm-forwarding-rule \
       --global \
       --load-balancing-scheme=INTERNAL_SELF_MANAGED \
       --address=10.0.0.1 \
       --target-http-proxy=td-vm-proxy \
       --ports=80 \
       --network=default
    

Zu diesem Zeitpunkt ist Cloud Service Mesh so konfiguriert, dass das Load Balancing des Traffics für die in der URL-Zuordnung angegebenen Dienste über Back-Ends in der verwalteten Instanzgruppe erfolgt.

Konfiguration überprüfen

In diesem letzten Teil des Leitfadens zur Einrichtung von Cloud Service Mesh für Compute Engine-VMs testen Sie, dass der von der Client-VM an die Weiterleitungsregel-VIP gesendete Traffic abgefangen und an den Envoy-Proxy weitergeleitet wird, der Ihre Anfrage dann an die VMs weiterleitet, die den Hello World-Dienst hosten.

Dazu melden Sie sich bei der Client-VM an, die so konfiguriert ist, dass sie Traffic abfängt und an Envoy weiterleitet. Sie senden eine curl-Anfrage an die VIP, die mit Ihrer Routingregelzuordnung verknüpft ist. Envoy prüft die curl-Anfrage, bestimmt, zu welchem Dienst sie aufgelöst werden soll, und sendet die Anfrage an ein Backend, das mit diesem Dienst verknüpft ist.

  1. Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Wählen Sie die Instanzgruppe td-vm-mig-us-central1 aus.
  3. Klicken Sie im Abschnitt für die VM-Zusammenfassung unter Verbinden auf SSH.
  4. Nachdem Sie sich bei der Client-VM angemeldet haben, senden Sie mit dem curl-Tool eine Anfrage an den Dienst Hello World über Envoy:
curl -H "Host: hello-world" http://10.0.0.1/

Wenn Sie diesen Befehl wiederholt ausführen, werden in der verwalteten Instanzgruppe Hello World unterschiedliche HTML-Antworten mit den Hostnamen der Back-Ends angezeigt. Dies liegt daran, dass Envoy beim Senden von Traffic an die Back-Ends des Dienstes Hello World den Standard-Load-Balancing-Algorithmus "Round Robin" verwendet.

Nächste Schritte