Einbindung von Cloud Service Mesh in Service Directory

Dieses Dokument bietet einen Überblick über die Verwendung der Service Registry von Service Directory mit Cloud Service Mesh, mit der Cloud Service Mesh Traffic an Dienste weiterleiten und diese auf Dienste anwenden kann, die bei Service Directory registriert sind. Dieses Dokument richtet sich an Cloud Service Mesh-Entwickler, die ihre Anwendungen in andere Dienste in Google Cloud einbinden möchten.

Service Directory ist eine Dienst-Registry, in der Informationen zu bei ihr registrierten Netzwerkdiensten gespeichert werden, einschließlich ihrer Namen, Standorte und Attribute. Sie können Ihre Dienste automatisch registrieren und alle Details erfassen. Außerdem können alle Dienste unabhängig von ihrer Infrastruktur registriert werden.

Die Registry kann nicht nur Google Cloud-Dienste, sondern auch lokal ausgeführte oder in anderen öffentlichen Clouds ausgeführte Hybrid-Dienste enthalten. Damit Sie die Informationen in diesem Dokument besser verstehen, sollten Sie sich mit den Grundlagen von Service Directory-Vorgängen vertraut machen.

Wenn Sie die Service Registry von Service Directory mit Cloud Service Mesh verwenden, stehen Dienste in der Dienst-Registry für die Anwendungen in Ihrem Mesh und für von Cloud Service Mesh konfigurierte Gateways zur Verfügung. Die Einbindung von Cloud Service Mesh in Service Directory wird mit Envoy und proxylosem gRPC für Service Directory-Integrationen mit internen Passthrough-Network Load Balancern, internen Application Load Balancern und L4 Private Service Connect unterstützt.

Zum Einbinden Ihrer Dienste registrieren Sie einen Dienst bei Service Directory und binden den Dienst dann an einen Back-End-Dienst von Cloud Service Mesh. Nachdem eine Bindung eingerichtet wurde, fragt Cloud Service Mesh Service Directory ab, um Informationen zum registrierten Dienst und wie dieser Dienst zu erreichen ist. Cloud Service Mesh verfolgt auch alle Änderungen am Dienst. Durch Verwendung der Integration kann Ihr Service Mesh und Ihr selbstverwaltetes Gateway Traffic an diese Dienste senden. Außerdem können Sie damit in Cloud Service Mesh konfigurierte Richtlinien erzwingen, z. B. Richtlinien für die erweiterte Traffic-Verwaltung.

Wenn Sie diese Integration verwenden, fungiert die Dienstbindung als Backend, unabhängig vom Typ des Backends, das vom Dienst selbst verwendet wird. Die Einbindung vereinfacht die Bereitstellung von Cloud Service Mesh, da Cloud Service Mesh Traffic ohne Berücksichtigung des Back-End-Typs an den Dienst senden kann.

Wenn ein Dienst bei Service Directory registriert ist, müssen Sie keine Instanzgruppen oder verschiedenen Arten von Netzwerk-Endpunktgruppen (NEGs) konfigurieren, um Zugriff auf die benötigten Dienste zu erhalten. Sie können Google Kubernetes Engine, interne Load-Balancer und Private Service Connect automatisch in Service Directory registrieren, was den Zugriff von Cloud Service Mesh auf diese Dienste weiter vereinfacht.

Von der Integration verwendete Ressourcen

Für die Einbindung von Cloud Service Mesh und Service Directory werden die folgenden Ressourcen verwendet.

Service Directory-Dienste

Service Directory ist eine Dienst-Registry. Mit Service Directory können Sie verschiedene Arten von Diensten registrieren, einschließlich Diensten in Google Cloud oder anderen Umgebungen (z. B. einem lokalen Rechenzentrum). Jeder Dienst besteht aus einem eindeutigen Namen und null oder mehr Dienstendpunkten. Ein Dienstendpunkt besteht aus einer Adresse, einem Port, Attributen und Metadaten. Wenn keine Endpunkte vorhanden sind,können Sie keinen Traffic an den Dienst weiterleiten.

Dienstbindungen

Eine Dienstbindung ist eine Ressource, die den vollständig qualifizierten Domainnamen (FQDN) des Service Directory-Dienstes enthält. Beispiel: projects/test-proj/locations/us-east1/namespaces/test-namespace/services/test-service ist ein FQDN für einen Service Directory-Dienst.

Backend-Dienste

Back-End-Dienste sind Konfigurationsressourcen, die Informationen für Cloud Service Mesh bereitstellen, einschließlich der Back-Ends (z. B. verwaltete Instanzgruppen), an die der Back-End-Dienst den Traffic weiterleitet. Backend-Dienste, die auf Dienstbindungen verweisen, können keine Backends haben. Wenn Sie die Cloud Service Mesh-Einbindung in Service Directory verwenden möchten, erstellen Sie einen neuen Back-End-Dienst, der auf Dienstbindungen verweist.

Ein Backend-Dienst kann mehrere Dienstbindungen haben. Diese Konfiguration ist nützlich, wenn Sie regionale Bereitstellungen derselben Anwendung haben. Sie können jede regionale Bereitstellung in einer regionalen Instanz von Service Directory als regionalen Dienst 1 und regionaler Dienst 2 registrieren. Jeder dieser regionalen Service Directory-Dienste kann dann über zwei Dienstbindungen mit demselben Backend-Dienst verknüpft werden. Die globale Dienstbindung 1 wäre mit dem regionalen Dienst 1 in Region A und die globale Dienstbindung 2 mit dem regionalen Dienst 2 in Region B verknüpft.

Anwendungsfälle

Durch die Einbindung Ihrer Cloud Service Mesh-Bereitstellung in Service Directory erhalten Sie neue Anwendungsfälle. Sie sind hilfreich, wenn Sie auf Dienste angewiesen sind, die anderen Teams oder Organisationen gehören oder veröffentlicht werden.

Vorhandene Dienste für Cloud Service Mesh verfügbar machen

Service Directory lässt sich in Google Cloud-Produkte wie GKE, interne Passthrough-Network Load Balancer und interne Application Load Balancer einbinden. Wenn Dienstersteller einen GKE-Dienst oder einen Load-Balancer erstellen, können sie diesen bei Service Directory registrieren.

Nachdem ein Dienst bei Service Directory registriert wurde, können Sie Cloud Service Mesh für die Kommunikation mit diesem Dienst konfigurieren. Cloud Service Mesh-Clients können dann mit Diensten kommunizieren, die hinter internen Passthrough-Network Load Balancern und internen Application Load Balancern ausgeführt werden.

Koordination zwischen Diensterstellern und Nutzern verbessern

Große Unternehmen haben viele unabhängige Entwicklerteams. Diese Teams stellen ihre Dienste für andere Teams zur Verfügung, sodass mehr Teams die Funktionen des freigegebenen Dienstes nutzen können. Dadurch werden teamübergreifende Abhängigkeiten erstellt. Diese Abhängigkeiten ermöglichen es Teams, ihre Aktivitäten gemeinsam zu nutzen, aber auch ein Koordinationsaufwand.

Wenn Sie Service Directory verwenden, kann ein Team (der Ersteller) registriert einen Dienst, der anderen Teams oder Organisationen zur Verfügung gestellt werden soll (Nutzer). Der Ersteller teilt einem Verweis auf diesen Dienst mit einem Nutzer. Der Nutzer kann diese Referenz verwenden, um den Dienst des Erstellers in Service Directory zu suchen und die Endpunkte des Dienstes zu ermitteln. Der Endpunkt kann beispielsweise eine virtuelle IP-Adresse (VIP) sein, über die der Dienst des Erstellers Traffic erwartet.

Durch die Einbindung von Cloud Service Mesh in Service Directory können Sie den Prozess automatisieren, indem Sie einen Service Directory-Dienst an einen Cloud Service Mesh-Back-End-Dienst binden. Dies bietet folgende Vorteile:

  • Cloud Service Mesh löst die Endpunkte des Dienstes automatisch auf, indem sie sie aus Service Directory synchronisiert. Wenn die Endpunkte des Service Directory-Dienstes aktualisiert werden, synchronisiert Cloud Service Mesh diese Änderungen automatisch.
  • Sie können in Cloud Service Mesh verschiedene Richtlinien zum Routing und zur Trafficverwaltung festlegen, z. B. zu Zeitüberschreitungen. Mit diesen Richtlinien können Sie optimieren, wie Ihre Anwendungen Anfragen an den Service Directory-Dienst senden. Informationen zum Routing und zur Trafficverwaltung in Cloud Service Mesh finden Sie unter Erweiterte Trafficverwaltung.
  • Cloud Service Mesh nutzt Traffic-Verwaltungsfunktionen wie das standortbasierte Load-Balancing, um Traffic optimal von Anwendungen an Endpunkte weiterzuleiten, z. B. durch Minimierung der Umlaufzeit.
Service Directory für die Diensterkennung verwenden
Service Directory für die Diensterkennung verwenden (zum Vergrößern klicken)

Wenn Sie als Nutzer Cloud Service Mesh verwenden und einen Back-End-Dienst an einen Service Directory-Dienst anhängen, wird der Aufwand für die teamübergreifende Koordination reduziert.

  • Sie hängen den Dienst Payments an den Namen an.
  • Cloud Service Mesh teilt Informationen zum Dienst Payments mit seinen Clients.

    • Beispielsweise kennen die in Ihrem Service Mesh ausgeführten Sidecar-Proxys jetzt den Endpunkt (z. B. 10.0.0.1:80), an dem der Dienst erreichbar ist.
  • Ihre Anwendungen können diesen Dienst namentlich aufrufen, ohne dass Sie oder Ihre Anwendung etwas über den Endpunkt des externen Dienstes wissen müssen. Im Diagramm ist der Dienst Payments.

  • Wenn der Dienstersteller den externen Dienst aktualisiert (z. B. durch Ändern seines Endpunkts), übernimmt Cloud Service Mesh die Aktualisierung und gibt sie nahtlos für die Clients frei.

Mit einem Ingress-Punkt auf Dienste in einem Perimeter zugreifen

Ein Team kann eine Sammlung von Diensten innerhalb eines VPC Service Controls-Perimeters gruppieren und diese Dienste über einen einzigen Eingangspunkt verfügbar machen. Dieser Ingress-Punkt kann in Service Directory registriert und Nutzern zur Verfügung gestellt werden, die auf die Dienste innerhalb des Perimeters zugreifen möchten. Weitere Informationen zu VPC Service Controls-Perimetern finden Sie unter Details zu Dienstperimetern und Konfigurationen.

Beispielsweise erstellt ein Team ein Ingress-Gateway mithilfe eines internen Application Load Balancers, der Anfragen an eine Sammlung von Kubernetes-Diensten in einem Cluster verteilt. Dieses Ingress-Gateway wird automatisch als Dienst in Service Directory registriert. Ein Nutzer, der auf die Kubernetes-Dienste zugreifen möchte, kann dieses Ingress-Gateway in Service Directory finden. Der Nutzer kann dann das Cloud Service Mesh-Mesh konfigurieren, um über das Gateway auf Dienste innerhalb des Perimeters zuzugreifen.

Dienste über mehrere Domains hinweg verbinden

Möglicherweise haben Sie Dienste in verschiedenen Domains, die Sie verbinden müssen.

Dienste organisationsübergreifend verbinden

Möglicherweise möchten Sie auf Dienste einer anderen Organisation zugreifen, z. B. Google APIs (z. B. Cloud SQL) oder verwaltete Dienste von Drittanbietern.

Service Directory unterstützt Private Service Connect. Wenn Sie in Ihrem Netzwerk einen Private Service Connect-Endpunkt erstellen, kann der Endpunkt als Dienst bei Service Directory registriert werden. Anschließend können Sie diesen Dienst an Cloud Service Mesh anhängen, damit Mesh-Clients wie Envoy- und gRPC-Clients sowie selbstverwaltete Gateways wie Apigee diese Dienste aufrufen können.

Service Directory für die Diensterkennung mit Private Service Connect verwenden.
Service Directory für die Diensterkennung mit Private Service Connect verwenden (zum Vergrößern klicken)

Das vorherige Beispiel mit Cloud Storage zeigt, wie Sie mit Private Service Connect Google APIs über einen Endpunkt in Ihrem Virtual Private Cloud-Netzwerk aufrufen können.

Dienste über VPC-Netzwerke verbinden

Einige Unternehmen verwenden im Rahmen ihrer Google Cloud-Bereitstellung mehrere VPC-Netzwerke. In solchen Fällen muss ein Dienst in einem VPC-Netzwerk möglicherweise auf einen Dienst in einem anderen VPC-Netzwerk zugreifen. Sie können das VPC-Peering für den Zugriff auf einen Dienst in einem anderen VPC-Netzwerk konfigurieren. Diese Konfiguration erstellt jedoch Komplikationen, wenn sich die IP-Adressbereiche zwischen den Peering-Netzwerken überschneiden.

Private Service Connect kann einen Dienst in einem VPC-Netzwerk sicher und privat über einen einzelnen IP:port-Endpunkt für Dienste in einem anderen VPC-Netzwerk zugänglich machen.

Detaillierte Ansicht der Verwendung von Service Directory für die Diensterkennung mit Private Service Connect.
Detaillierte Ansicht der Verwendung von Service Directory für die Diensterkennung mit Private Service Connect (zum Vergrößern klicken)

Weitere Beispiele domainübergreifend

Die vorherigen zwei Beispiele zeigen Fälle, in denen Sie möglicherweise Domains verknüpfen müssen, aber es gibt viele zusätzliche Beispiele. Sie können beispielsweise ein Gateway erstellen, das sich am Schnittpunkt von zwei Google Cloud-Regionen befindet. Dienste in einer Region können über dieses Gateway Dienste in einer anderen Region erreichen. Sie registrieren das Gateway als Dienst in Service Directory und verwenden es dann mit Cloud Service Mesh, wie in diesem Dokument beschrieben.

Richtlinien anwenden, wenn auf Dienste zugegriffen wird

Cloud Service Mesh unterstützt Funktionen wie die erweiterte Trafficverwaltung, die mithilfe von Richtlinien konfiguriert werden können. Sie können beispielsweise eine Richtlinie für die Trafficspiegelung festlegen, sodass der Traffic immer dann an einen zweiten Backend-Dienst gesendet wird, wenn ein Client eine Anfrage an einen bestimmten Backend-Dienst sendet.

Wenn Sie einen Service Directory-Dienst an einen Cloud Service Mesh-Back-End-Dienst binden, können Sie diese Richtlinientypen in Cloud Service Mesh konfigurieren. Ihre Sidecar-Proxys, mittleren oder Edge-Proxys und proxylose Clients erfahren diese Richtlinien und setzen sie durch.

Einige Beispiele:

  • Gewichtete Trafficaufteilung, z. B. zwischen zwei Service Directory-Diensten
  • Trafficspiegelung, z. B. zu einem Auditdienst
Anfragen für den Dienst "users" werden an den Dienst "audit" gespiegelt
Anfragen für den Dienst users werden an den Dienst audit gespiegelt (zum Vergrößern klicken)

Unterstützung für Cloud Service Mesh und bestehende Clients

Selbst wenn Cloud Service Mesh in Ihrer Organisation bereitgestellt wird, verwenden Sie möglicherweise Clients, die Cloud Service Mesh nicht verwenden. Beispielsweise müssen Sie möglicherweise auf einen Dienst von einer virtuellen Maschine aus zugreifen, die nicht Teil eines Service Mesh ist.

Wenn Sie einen Service Directory-Dienst an einen Cloud Service Mesh-Back-End-Dienst binden, erhalten die Clients von Cloud Service Mesh automatisch aktuelle Informationen zu diesem Dienst. Ihre Clients, die Cloud Service Mesh nicht verwenden, können Dienstinformationen in Service Directory suchen und verwenden.

Beschränkungen

Cloud Service Mesh unterstützt keine FQDN-NEGs (INTERNET_FQDN_PORT-NEGs) in der Service Directory-Einbindung.

Nächste Schritte