GKE Service Mesh in Cloud Service Mesh – Übersicht

Diese Konfiguration wird für Vorabversionen unterstützt, für neue Cloud Service Mesh-Nutzer wird sie jedoch nicht empfohlen. Weitere Informationen finden Sie in der Übersicht zum Cloud Service Mesh.

Dieses Dokument richtet sich an Nutzer der Google Kubernetes Engine, die ein Service Mesh von Cloud Service Mesh mithilfe der Kubernetes Gateway API bereitstellen möchten.

Sie können Cloud Service Mesh für die GKE mit den Kubernetes Gateway APIs konfigurieren und so Dienst-zu-Dienst-Kommunikation, Traffic-Verwaltung, globales Load-Balancing und die Erzwingung von Sicherheitsrichtlinien für Service Mesh-Anwendungsfälle aktivieren.

Kubernetes APIs und Google Cloud APIs

Sie können ein Service Mesh von Cloud Service Mesh mit zwei verschiedenen APIs konfigurieren:

Dieses Dokument und die zugehörigen Einrichtungsleitfäden enthalten eine Anleitung zum Konfigurieren eines Cloud Service Mesh-Service Mesh mit der Kubernetes Gateway API.

Wir empfehlen, die Kubernetes Gateway APIs in Google Kubernetes Engine zu verwenden. Außerdem raten wir davon ab, beide APIs zu verwenden, um das Routing im selben Service Mesh in GKE zu konfigurieren.

Die Dienst-Routing-API verwendet dieselben Ressourcennamen wie die Ressourcen in den Kubernetes Gateway APIs, was die Verwendung der beiden APIs vereinfacht. Die von Ihnen konfigurierten Kubernetes-Ressourcen entsprechen funktional den Google Cloud-Ressourcen, die von der Service Routing API für Cloud Service Mesh dargestellt werden.

In den folgenden Abschnitten werden die Ressourcen und die Architektur beschrieben, die von der Einbindung von Cloud Service Mesh in die Kubernetes Gateway APIs verwendet werden.

Gateway API

Die Gateway API ist eine Sammlung von Ressourcen, die das Dienstnetzwerk in Kubernetes modellieren. Die Gateway API von Kubernetes ist ein Open-Source-Projekt, das Ingress und Load-Balancer durch Bereitstellung einer generischen Routing-API unterstützt. Die generische Routing-API hat viele Implementierungen. Benutzerdefinierte Ressourcendefinitionen (CRDs) von Cloud Service Mesh werden als Erweiterung der Open-Source Gateway API hinzugefügt. Die CRDs unterstützen Service-Mesh-Anwendungsfälle und verwenden dieselbe generische Routing-API, die von der Gateway API eingeführt wird.

Die Gateway API ist hierarchisch organisiert, mit einer übergeordneten Gateway-Ressource und einer zugehörigen GatewayClass, an die Sie Routen anhängen. GKE enthält eine TDMesh-Ressource, die ein Peer der Gateway-Ressource ist. Sie können dieselben Route-Typen an die TDMesh-Ressource anhängen. In der TDMesh-Ressource hängen Sie Routen und Richtlinien für Service Meshes an.

Gateway API, Gateway-Ressource, Mesh-Ressource und Routen
Gateway API, Gateway-Ressource, Mesh-Ressource und Routen (zum Vergrößern klicken)

Flotte

Eine Flotte besteht aus einem oder mehreren GKE-Clustern, die logisch gruppiert sind. Mit einer Flotte können Sie Funktionen verwalten und Richtlinien einheitlich auf mehrere Cluster anwenden. Wenn Sie eine Flotte verwenden, können Sie ein Cloud Service Mesh-Service Mesh verwalten, das mehrere Cluster umfasst.

Architektur

Cloud Service Mesh unterstützt die Gateway API in GKE. Dazu programmiert es die Datenebenen Ihrer Cluster so, dass das in Gateway API-Ressourcen angegebene Netzwerkverhalten implementiert wird. Cloud Service Mesh selbst ist eine von Google verwaltete Steuerungsebene, die keinen Traffic der Datenebene verarbeitet. Envoy-Proxys, die als Sidecars für Ihre Arbeitslasten ausgeführt werden, oder proxylose gRPC-Clients verarbeiten den Traffic auf der Datenebene. Cloud Service Mesh konfiguriert sowohl Envoy-Proxys als auch proxylose gRPC-Clients über die xDSv3 API.

Cloud Service Mesh bietet eine verwaltete, global verfügbare Lösung für die Steuerungsebene, die robuster und skalierbarer ist als die Ausführung von Controllern im Cluster. Da es sich um eine globale Lösung handelt, kann Cloud Service Mesh ein Load-Balancing des Traffics auf Arbeitslasten vornehmen, die auf mehrere GKE-Cluster verteilt sind. In der folgenden Abbildung verwaltet Cloud Service Mesh den Traffic zu Diensten in drei Clustern, die sich in einer einzelnen Flotte befinden, mithilfe von Gateway API-Ressourcen.

Ein Multi-Cluster-Service Mesh von Cloud Service Mesh, das mit der Gateway API konfiguriert wurde
Ein Multi-Cluster-Service Mesh von Cloud Service Mesh, das mit der Gateway API konfiguriert wurde (zum Vergrößern klicken)

Sie legen einen Cluster in Ihrer Flotte als Konfigurationscluster fest. Im Konfigurationscluster werden Ressourcen der Gateway API gespeichert. Cloud Service Mesh beobachtet nur Ressourcen, die sich im Konfigurationscluster befinden, und ignoriert Ressourcen, die sich in anderen Clustern in der Flotte befinden. Ausführliche Informationen zum Konfigurationscluster finden Sie in der GKE-Dokumentation unter Konfigurationsclusterdesign.

Mit Multi-Cluster-Diensten von GKE können Gateway API-Ressourcen im Konfigurationscluster auf Kubernetes-Dienste in jedem Cluster innerhalb einer Flotte verweisen. Weitere Informationen zur Erkennung von Multi-Cluster-Diensten finden Sie unter Multi-Cluster-Dienste.

Ressourcen

Cloud Service Mesh unterstützt sowohl Envoy-Proxys als auch proxylose gRPC-Dienste auf der Datenebene eines Service Mesh. Beide Clients erhalten die Konfiguration von Cloud Service Mesh für ein bestimmtes Service Mesh. Dazu geben sie den Namen und die entsprechende Projektnummer der Ressource TDMesh in der jeweiligen Bootstrap-Konfiguration an. Die Einrichtungsleitfäden für Cloud Service Mesh mit den Kubernetes Gateway APIs enthalten Demonstrationskonfigurationen für Datenebenen mit Envoy und proxylosem gRPC.

TDMesh-Ressource

Die Ressource TDMesh ist eine benutzerdefinierte Cloud Service Mesh-Ressource. Es ist eine Erweiterung der Open-Source-Gateway-APIs zur Unterstützung der Service Mesh-Anwendungsfälle von Cloud Service Mesh. Mit der TDMesh-Ressource erstellen Sie eine Service-Mesh-Instanz in Ihrer Flotte. Routen, die mit der TDMesh-Ressource verbunden sind, geben Dienst-zu-Dienst-Routingverhalten im Service Mesh an.

Route Ressourcen

Eine Teilmenge der Gateway API Route-Ressourcen kann an eine TDMesh-Ressource angehängt werden, um Routing auf Dienstebene innerhalb des Service Mesh anzugeben. Cloud Service Mesh unterstützt die folgenden Route-Ressourcen:

  • HTTPRoute
  • TCPRoute
  • TDGRPCRoute (benutzerdefinierte Cloud Service Mesh-Ressource)

Sie können beispielsweise eine HTTPRoute erstellen, um anzugeben, dass für den Host payments.svc.internal bestimte HTTP-Anfragen an den Kubernetes-Dienst service-payments weitergeleitet werden. Wenn Sie die HTTPRoute-Ressource an eine TDMesh-Ressource anhängen, die von Datenebeneninstanzen abonniert wird, werden HTTP-Anfragen, die von Arbeitslasten innerhalb des Mesh-Netzwerks gesendet werden, entsprechend weitergeleitet.

Dieser Release erweitert die generischen Route-Ressourcen in der Gateway API um den neuen Routentyp TDGRPCRoute. Der neue Routentyp bietet eine erstklassige Erfahrung für das Routing von gRPC-Anfragen durch Abgleich mit nativen gRPC-Primitiven wie Methoden- und Dienstdefinitionen.

Gateway API-Ressourcen in GKE zum Konfigurieren von Cloud Service Mesh verwenden
Gateway API-Ressourcen in GKE zum Konfigurieren von Cloud Service Mesh verwenden (zum Vergrößern klicken)

Beschränkungen

  • Cloud Service Mesh konfiguriert die folgenden Standardverhalten für alle Kubernetes-Dienste im Service Mesh. Dieses Verhalten kann nicht geändert werden.
    • TCP-Systemdiagnosen werden an Dienstports konfiguriert, auf die von Route-Ressourcen der Gateway API verwiesen wird.
    • Für alle eingehenden Anfragen an Dienste wird eine standardmäßige Zeitüberschreitung von 30 Sekunden konfiguriert.
    • Sitzungsaffinität ist deaktiviert.
  • Der Envoy Auto-Injektor unterstützt nur ein Mesh-Netzwerk pro Flotte.
  • Die Sicherheitsfeatures von Cloud Service Mesh können nicht über die Gateway API aktiviert werden.
  • Sie dürfen die TDMesh- und Route-Ressourcen in GKE nur mit der Gateway API konfigurieren. Sie können nicht die Google Cloud Console, die gcloud CLI oder die REST APIs verwenden.
  • Alle Cluster müssen sich in einem einzigen Projekt befinden. Ein Service Mesh, das sich über Cluster in mehreren Projekten erstreckt, wird nicht unterstützt.
  • Sie können ein GKE-Service-Mesh nicht mit der Google Cloud Console konfigurieren oder aufrufen.
  • Die Beobachtbarkeit der Steuerungsebene mit Cloud Logging und Cloud Monitoring wird nicht unterstützt.

Nächste Schritte