Erweiterte Konfigurationen einrichten

Dieses Dokument enthält Hinweise, die bei der Konfiguration von Cloud Service Mesh hilfreich sein können.

Einzelne Compute Engine-VM für Cloud Service Mesh konfigurieren

Verwenden Sie dieses Verfahren als Beispiel dafür, wie die Sidecar-Proxy-Bereitstellung und das Abfangen von Traffic implementiert werden können, um einer VM Zugriff auf Cloud Service Mesh-Dienste zu gewähren.

Für dieses Verfahren muss Docker installiert sein. Folgen Sie der Anleitung von Docker zur Installation von Docker Engine.

Wenn Sie diesen Vorgang zum Konfigurieren von Cloud Service Mesh auf einer einzelnen VM ausführen, müssen Sie für einige Einrichtungsaufgaben Zugriff auf einen Linux-Host haben. Der Host kann ein lokaler Computer oder eine VM sein, die in Ihrem Virtual Private Cloud-Netzwerk ausgeführt wird.

Laden Sie zuerst die Konfigurationsdateien und Beispielskripts herunter und bereiten Sie diese vor.

  1. Melden Sie sich bei dem Linux-Host an, den Sie während der Einrichtung verwenden.

  2. Laden Sie das Archiv der erforderlichen Dateien auf den Linux-Host herunter und entpacken Sie das Archiv:

    wget https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz
    tar -xzvf traffic-director-xdsv3.tar.gz; cd traffic-director-xdsv3
    

    Das Archiv enthält folgende Dateien:

    • sidecar.env – Konfigurationsdatei mit Umgebungsvariablen.
    • iptables.sh – Skript zum Einrichten von netfilter-Regeln.
    • bootstrap_template.yaml – Bootstrap-Vorlagendatei für Envoy.
    • run.sh-Skript der obersten Ebene, das die sidecar.env-Konfigurationsdatei verwendet, um iptables zum Abfangen einzurichten und den Envoy-Sidecar-Proxy auszuführen.
  3. Erstellen Sie auf jedem Host, auf dem ein Sidecar-Proxy ausgeführt wird, einen Systemnutzer, der den Envoy-Proxy-Prozess ausführt. Dies ist der Envoy-Proxy-Nutzer. Die Anmeldung ist für den Envoy-Proxy-Nutzer deaktiviert.

    sudo adduser --system --disabled-login envoy
    
  4. Bearbeiten Sie zum Ändern der Konfiguration die Datei sidecar.env. Eine ausführliche Beschreibung der einzelnen Variablen finden Sie in den Inline-Kommentaren in der Konfigurationsdatei.

    1. Legen Sie in der Datei sidecar.env für die Variable ENVOY_USER den Nutzernamen fest, den Sie als Envoy-Proxy-Nutzer festlegen.

Führen Sie als Nächstes für jeden VM-Host, auf dem Anwendungen mit Cloud Service Mesh ausgeführt werden, die folgenden Schritte aus:

  1. Kopieren Sie das gesamte traffic-director-xdsv3-Verzeichnis mit der geänderten sidecar.env-Datei auf jeden VM-Host, auf dem Anwendungen ausgeführt werden, die Sie für Cloud Service Mesh verwenden möchten.
  2. Fügen Sie das Skript run.sh dem Startskript Ihres Systems hinzu. Auf diese Weise wird das Skript nach jedem VM-Neustart ausgeführt.
  3. Führen Sie auf jedem VM-Host das Skript run.sh aus:

    cd traffic-director-xdsv3
    sudo ./run.sh start
    
  4. Prüfen Sie, ob der Envoy-Proxy ordnungsgemäß gestartet wurde.

    sudo ./run.sh status
    

    Es sollte folgende Ausgabe angezeigt werden:

    OK: Envoy seems to be running.
    OK: Traffic interception seems to be enabled.
    

    Sie können die Abfangrichtung des Traffics so prüfen:

    sudo iptables -S -t nat | grep ISTIO_REDIRECT
    

    Die erwartete Ausgabe lautet:

    -N ISTIO_REDIRECT
    -A ISTIO_OUTPUT -j ISTIO_REDIRECT
    -A ISTIO_REDIRECT -p tcp -j REDIRECT --to-ports 15001`
    

Routingregelzuordnungen

Es gibt zwei Möglichkeiten, das Routing in einer Routingregelzuordnung zu konfigurieren.

Sie können das Routing auf Grundlage der tatsächlichen Ziel-VIP und des tatsächlichen Ports des Dienstes aktivieren. Wenn Sie eine VIP Ihres Dienstes als IPAddress-Parameter der Weiterleitungsregel konfigurieren, wird nur der an diese Adresse gerichtete Traffic und der zugehörige Port anhand der Host- und Pfadparameter zugeordnet und weitergeleitet, die in der URL-Zuordnung angegeben sind.

Alternativ können Sie die Adresse Ihrer Weiterleitungsregel auf 0.0.0.0 festlegen. Dadurch werden Proxys so konfiguriert, dass Traffic nur anhand des Zielports zugeordnet wird, unabhängig von der Ziel-IP-Adresse der Anfrage. Der Traffic wird dann anhand der Host- und Pfadparameter weitergeleitet, die in der URL-Zuordnung angegeben sind.

Bei diesen beiden Ansätzen dürfen die Hostnamen gemäß der Konfiguration in den Hostregeln, verknüpft mit einem Ziel-VIP/Port-Paar oder einem Zielport (falls VIP 0.0.0.0 ist), in Ihrer Service Mesh-Konfiguration nur einmal vorkommen. Das heißt, Sie können nicht zwei verschiedene Dienste mit unterschiedlichen Back-End-Gruppen nutzen, die denselben Hostnamen verwenden.

Unabhängig von der ausgewählten Methode muss der Traffic an die VIP, zu der Ihr Diensthostname/FQDN auflöst, und an den Port, der von Ihrem Dienst überwacht wird, abgefangen und an den Sidecar-Proxy weitergeleitet werden. Vollständige Informationen zur Hostkonfiguration finden Sie unter Einzelne Compute Engine-VM für Cloud Service Mesh konfigurieren.

Alle Weiterleitungsregeln in einem VPC-Netzwerk müssen eine eindeutige Kombination aus IP-Adresse und Port pro VPC-Netzwerk haben, einschließlich der 0.0.0.0-Adresse. Wenn Sie mehrere Weiterleitungsregeln mit derselben IP-Adresse und demselben Port in einem bestimmten VPC-Netzwerk erstellen, ist nur die erste Weiterleitungsregel gültig. Die anderen werden ignoriert.

Folgen Sie zur Vermeidung von Trafficverlust dem Abschnitt Erweiterte Konfiguration zum Abfangen von Traffic weiter unten.

Erweiterte Konfiguration zum Abfangen von Traffic

Wenn auf Ihren VMs Anwendungen ausgeführt werden, die Zugriff auf von Cloud Service Mesh konfigurierte Dienste benötigen, müssen Sie einen Sidecar-Proxy installieren und das Abfangen von Traffic auf den VMs konfigurieren, damit der Sidecar-Proxy das Traffic-Routing zu den Back-Ends dieser Dienste verwalten kann.

Wenn das Abfangen des gesamten ausgehenden VM-Traffics für Ihre Bereitstellung nicht akzeptabel ist, können Sie bestimmten Traffic an den Sidecar-Proxy weiterleiten, während der Rest des Traffics der regulären Route folgt, die in Ihrer Hostnetzwerkkonfiguration definiert ist.

Ändern Sie dazu die Einrichtung des Compute Engine-VM-Hosts unter Cloud Service Mesh-Einrichtung mit VMs und manueller Envoy-Bereitstellung so:

  1. Legen Sie den IP-Adressbereich fest, in den von Cloud Service Mesh gesteuerte Dienste aufgelöst werden sollen. An diese IP-Adressen gerichteter Traffic wird abgefangen und an den Sidecar-Proxy weitergeleitet. Der Bereich ist für Ihre Bereitstellung spezifisch.

  2. Legen Sie in der Datei sidecar.env den Wert von SERVICE_CIDR auf diesen Bereich fest. Der Traffic an diese IP-Adressen wird von netfilter an einen Sidecar-Proxy weitergeleitet und das Load-Balancing erfolgt gemäß der von Cloud Service Mesh bereitgestellten Konfiguration.

  3. Der Sidecar-Proxy muss nicht unbedingt als dedizierter Nutzer ausgeführt werden, der vom Abfangen von Traffic ausgeschlossen ist. Dies wird jedoch weiterhin empfohlen.

  4. Nachdem Sie das Skript run.sh wie in der Hauptprozedur beschrieben ausgeführt haben, ist iptables so konfiguriert, dass nur Traffic in diesem spezifischen Bereich abgefangen und weitergeleitet wird.

  5. Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Netfilter richtig konfiguriert ist. Ersetzen Sie ${SERVICE_CIDR} durch den Wert, den Sie als abgefangenen IP-Adressbereich konfiguriert haben.

    sudo iptables -L -t nat | grep -E "(ISTIO_REDIRECT).+${SERVICE_CIDR})"