Gateway


Auf dieser Seite wird die GKE-Implementierung (Google Kubernetes Engine) der Kubernetes Gateway API mit dem GKE-Gateway-Controller beschrieben. Informationen zum Bereitstellen von Gateways in GKE finden Sie unter Gateways bereitstellen oder Multi-Cluster-Gateways bereitstellen.

Die Gateway API ist ein Open Source-Standard für Dienstnetzwerke. Die Gateway API entwickelt die Ingress-Ressource weiter und verbessert sich so:

  • Rollenorientiert: Das Gateway besteht aus API-Ressourcen, die den Organisationsrollen des Clusteroperators, Entwicklers und Infrastrukturanbieters entsprechen. Auf diese Weise können Clusteroperatoren definieren, wie eine gemeinsame Infrastruktur von vielen verschiedenen und nicht koordinierenden Entwicklerteams verwendet werden kann.

  • Portabel: Die Gateway API ist ein Open-Source-Standard mit vielen Implementierungen. Sie wurde nach dem Konzept der flexiblen Konformität entwickelt, die eine äußerst portable Core API (wie Ingress) unterstützt, aber gleichzeitig flexibel und erweiterbar genug ist, um native Funktionen für die Umgebung und Implementierung zu unterstützen. Dadurch können die Konzepte und Kernressourcen in allen Implementierungen und Umgebungen vereinheitlicht werden, wodurch die Komplexität verringert und die Wiedererkennung durch Nutzer erhöht werden.

  • Ausdrücklich: Die Gateway API-Ressourcen bieten integrierte Funktionen für den headerbasierten Abgleich, Trafficgewichtung und andere Funktionen, die nur in Ingress über benutzerdefinierte Annotationen möglich sind.

Gateway API-Ressourcen

Die Gateway API ist ein rollenbasiertes Ressourcenmodell, das für die Personen entwickelt wurde, die mit dem Kubernetes-Netzwerk interagieren. Wie im folgenden Diagramm dargestellt, ermöglicht dieses Modell den verschiedenen nicht koordinierenden Dienstinhabern, dieselbe zugrunde liegende Netzwerkinfrastruktur sicher so zu teilen, dass die Richtlinien und Kontrolle für den Plattformadministrator zentralisiert werden.

GKE bietet Gateway-Klassen. Clusteroperatoren erstellen Gateway-Ressourcen basierend auf diesen Klassen. Anwendungsentwickler erstellen HTTPRoute-Ressourcen, die an Gateway-Ressourcen gebunden werden.

Die Gateway API enthält die folgenden Ressourcentypen:

  • GatewayClass: Definiert eine clusterbezogene Ressource, die eine Vorlage zum Erstellen von Load-Balancern in einem Cluster ist. GKE bietet GatewayClasses, die in GKE-Clustern verwendet werden können.
  • Gateway: Definiert, wo und wie die Load-Balancer den Traffic überwachen. Clusteroperatoren erstellen Gateways in ihren Clustern anhand einer GatewayClass. GKE erstellt Load-Balancer, die die in der Gateway-Ressource definierte Konfiguration implementieren.
  • HTTPRoute: Definiert protokollspezifische Regeln für die Weiterleitung von Anfragen von einem Gateway an Kubernetes-Dienste. GKE unterstützt HTTPRoutes für HTTP(S)-basiertes Traffic-Routing. Anwendungsentwickler erstellen HTTPRoutes, um ihre HTTP-Anwendungen mithilfe von Gateways verfügbar zu machen.

GatewayClass

Eine GatewayClass ist eine Ressource, die eine Vorlage für TCP/UDP-Load-Balancer (Ebene 4) und HTTP(S)-Load-Balancer (Ebene 7) in einem Kubernetes-Cluster definiert. GKE stellt GatewayClasses als clusterbezogene Ressourcen bereit. Clusteroperatoren geben beim Erstellen von Gateways in ihren Clustern eine GatewayClass an.

Die verschiedenen GatewayClasses entsprechen verschiedenen Google Cloud-Load-Balancern. Wenn Sie ein Gateway auf Basis einer GatewayClass erstellen, wird ein entsprechender Load-Balancer erstellt, um die angegebene Konfiguration zu implementieren. Einige GatewayClasses unterstützen Multi-Cluster-Load-Balancing.

In der folgenden Tabelle sind die in GKE-Clustern verfügbaren GatewayClasses und der zugrunde liegende Load-Balancer-Typ aufgeführt. Ausführliche Informationen zu den GatewayClasses finden Sie in den GatewayClass-Funktionen und -Spezifikationen.

Klassenname Beschreibung
gke-l7-rilb Regionale interne HTTP(S)-Load-Balancer, die auf dem internen HTTP(S)-Load-Balancing basieren
gke-l7-gxlb Globale externe HTTP(S)-Load-Balancer, die auf dem externen HTTP(S)-Load-Balancing basieren
gke-l7-rilb-mc Regionale Multi-Cluster-Load-Balancer, die auf dem internen HTTP(S)-Load-Balancing basieren
gke-l7-gxlb-mc Globale Multi-Cluster-Load-Balancer, die auf dem externen HTTP(S)-Load-Balancing basieren

Jede GatewayClass unterliegt den Einschränkungen des zugrunde liegenden Load-Balancers.

Gateway

Clusteroperatoren erstellen Gateways, um zu definieren, wo und wie die Load-Balancer den Traffic überwachen. Gateways übernehmen ihr Verhalten bei der Implementierung von der zugehörigen GatewayClass.

Die Gateway-Spezifikation enthält die GatewayClass für das Gateway, auf dem Ports und Protokolle überwacht werden sollen, und Angaben zu den Routen, die an das Gateway gebunden werden können. Ein Gateway wählt Routen anhand der Routenmetadaten wie Art, Namespace und Labels von Routenressourcen aus.

Ein Beispiel für die Bereitstellung eines Gateways finden Sie unter Gateways bereitstellen. Ein Beispiel für die Bereitstellung eines Multi-Cluster-Gateways finden Sie unter Multi-Cluster-Gateways bereitstellen.

HTTPRoute

Eine HTTPRoute definiert, wie HTTP- und HTTPS-Anfragen, die von einem Gateway empfangen werden, an Dienste weitergeleitet werden. Anwendungsentwickler erstellen HTTPRoutes, um ihre Anwendungen über Gateways freizugeben.

Eine HTTPRoute definiert, an welche Gateways der Traffic weitergeleitet werden soll, an welche Dienste weitergeleitet werden soll und welche Regeln definieren, welchem Traffic die HTTPRoute entspricht. Die Gateway- und Routenbindung ist bidirektional, das heißt, beide Ressourcen müssen sich gegenseitig zur Bindung auswählen. HTTPRoutes können Anfragen anhand von Details im Anfrageheader abgleichen.

Eine Route kann an ein oder mehrere Gateways gebunden werden und ein Gateway kann an viele Routen gebunden werden.

GKE Gateway Controller

GKE Gateway Controller ist die Google-Implementierung der Gateway API für Cloud Load Balancing. Ähnlich wie GKE Ingress Controller überwacht der Gateway-Controller eine Kubernetes API auf Gateway API-Ressourcen und vergleicht Cloud Load Balancing-Ressourcen, um das von den Gateway-Ressourcen angegebene Netzwerkverhalten zu implementieren.

Es gibt zwei Versionen von GKE Gateway Controller:

  • Single-Cluster: verwaltet Single-Cluster-Gateways für einen einzelnen GKE-Cluster.
  • Multi-Cluster: verwaltet Multi-Cluster-Gateways für einen oder mehrere GKE-Cluster.

Beide Gateway-Controller werden von Google gehostet und beobachten die Kubernetes API für GKE-Cluster. Im Gegensatz zu GKE Ingress Controller werden die Gateway-Controller nicht auf GKE-Steuerungsebenen oder im Nutzerprojekt gehostet. Dadurch sind sie skalierbarer und robuster.

Die Gateway-Controller selbst sind keine Netzwerkdatenebene und verarbeiten keinen Traffic. Sie sitzen "out of band" vom Traffic und verwalten verschiedene Datenebenen, die Traffic verarbeiten. Das folgende Diagramm zeigt die Architektur eines Single-Cluster-Gateway-Controllers und eines Multi-Cluster-Gateway-Controllers für GKE. Welcher zugrunde liegende Controller verwendet wird, hängt von der GatewayClass des bereitgestellten Gateways ab.

Die Multi-Cluster- und Single-Cluster-Gateway-Controller stellen Load-Balancer für GKE bereit und verwalten sie, verarbeiten Netzwerktraffic jedoch nicht selbst.

Controller Single-Cluster-Gateway-Controller Multi-Cluster-Gateway-Controller
Verwaltet von Google Google
Clusterbereich Einzelne Cluster-Gateways Multi-Cluster-Gateways
Bereitstellungsort Regional in derselben Region wie der GKE-Cluster bereitgestellt Wird global in mehreren Google Cloud-Regionen bereitgestellt.
Aktivierungsmethode Standardmäßig in GKE aktiviert. Aktiviert über die Multi-Cluster Ingress API und Registrierung in einer Flotte. Siehe Multi-Cluster-Gateways aktivieren.
Unterstützte GatewayClasses
  • gke-l7-rilb
  • gke-l7-gxlb
  • gke-l7-rilb-mc
  • gke-l7-gxlb-mc

Sie können mehrere Gateway-Controller, einschließlich Controller, die nicht von Google bereitgestellt werden, gleichzeitig in einem GKE-Cluster verwenden. Jede GatewayClass wird von einem einzigen Gateway-Controller unterstützt, wodurch das Single- und Multi-Cluster-Load-Balancing gleichzeitig verwendet werden kann.

Vergleich von Ingress und Gateway

Gateway und Ingress sind Open-Source-Standards für das Routing von Traffic. Das Gateway wurde von der Kubernetes-Community entwickelt und basiert auf Erkenntnissen aus der Ingress- und Service Mesh-Umgebung. Gateway ist eine Weiterentwicklung von Ingress, das dieselbe Funktion als Obermenge der Ingress-Funktionen bereitstellt. Beide können gleichzeitig verwendet werden, ohne dass es zu Konflikten kommt. Im Laufe der Zeit werden Gateway- und Route-Ressourcen jedoch mehr Funktionen bereitstellen, die in Ingress nicht verfügbar sind, sodass Nutzer gezwungen sind, Gateway zu verwenden, wo sie zuvor vielleicht Ingress verwendet haben.

Der Gateway API-Standard befindet sich derzeit in der v1Alpha1-Phase. Das bedeutet, dass er derzeit nur zu Testzwecken und in der Bewertung verwendet wird. Nicht funktionsgefährdende API-Änderungen sind vor der Betaphase der Gateway API geplant. Der GKE-Gateway-Controller befindet sich ebenfalls in der Vorschau und ist nur für Experimente vorgesehen. Ihr Feedback ist für die Entwicklung des GKE-Gateway-Controllers von entscheidender Bedeutung und hilft uns, eine allgemeine Verfügbarkeit zu erreichen. Bei Feedback und Fragen können Sie uns eine E-Mail an gke-gateway-feedback@google.com senden. Wir freuen uns auf Ihre Nachricht.

Preise

Alle über den Gateway-Controller bereitgestellten Compute Engine-Ressourcen werden über das Projekt abgerechnet, in dem sich die GKE-Cluster befinden. Der Single-Cluster-Gateway-Controller wird kostenlos als Teil der GKE-Standard- und Autopilot-Preise angeboten. Sie können den Multi-Cluster-Gateway-Controller ohne zusätzliche Kosten während der Vorschau verwenden. Weitere Informationen zu den Preisen für GKE-Multi-Cluster-Gateway-Controller finden Sie unter Multi-Cluster-Gateways aktivieren.

Nächste Schritte