Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

GKE Gateway API und Service Extensions: Komplexe Traffic-Anforderungen in GCP souverän meistern

By Chimbu ChinnaduraiAug 12, 20256 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

Kubernetes hat die Container-Orchestrierung revolutioniert, und Google Kubernetes Engine (GKE) bietet eine leistungsstarke Managed-Plattform für die Bereitstellung und Skalierung containerisierter Anwendungen. GKE bringt zwar starke Funktionen für Service Discovery und Load Balancing mit, doch beim Anwenden eigener Verarbeitungslogik auf Traffic, bevor dieser die Workloads erreicht, stößt man weiterhin an Grenzen.

Genau hier kommen Service Extensions ins Spiel: Sie bieten einen überzeugenden Ansatz, um Cloud Load Balancing zusammen mit der GKE Gateway API anzupassen und zu erweitern (Hinweis: Es handelt sich um ein Kubernetes-Feature, das nichts mit dem Google Cloud API Gateway-Service zu tun hat).

Was sind Service Extensions in GCP?

Service Extensions erlauben es, eigene Logik direkt in den Datenpfad einzuhängen und so weitreichende Änderungen am Traffic vorzunehmen, der durch den Load Balancer fließt. Das Ganze funktioniert wie eine Pipeline, in die Sie an verschiedenen Stellen eigenen Code einklinken können, um Requests und Responses zu manipulieren – ohne die Backends zu beeinträchtigen.

Es gibt zwei grundlegende Arten von Service Extensions:

  • Plugins: Sie ermöglichen es, eigenen Code inline direkt im Netzwerk-Datenpfad einzubinden. Plugins basieren auf WebAssembly (Wasm) und der Proxy-Wasm-ABI und laufen als Wasm-Module auf einer von Google verwalteten Sandbox-Infrastruktur. Sie sind auf niedrige Latenzen ausgelegt und eignen sich ideal für leichtgewichtige Logik, die sehr nah an der Data Plane ausgeführt werden muss.

  • Callouts: Sie ermöglichen es Cloud Load Balancing, gRPC-Aufrufe an externe Services abzusetzen – an von Google verwaltete oder an selbst betriebene Services (einschließlich solcher, die in GKE-Pods laufen). Callouts sind deutlich flexibler, weil sie bestehende Software wiederverwenden können und weniger Laufzeitbeschränkungen unterliegen. Damit eignen sie sich für komplexere Logik, die externe Daten oder einen Zustand benötigt.

Das GKE-Team hat kürzlich Preview-Support für Service Extensions in der Gateway API angekündigt. Damit lassen sich HTTP-Header und Payloads für Requests und Responses anpassen und sogar das Traffic-Routing steuern – ganz ohne Auswirkungen auf die bestehende Backend-Service-Auswahl oder Sicherheitsrichtlinien.

Arten von GKE Gateway API Service Extensions

Der GKE Gateway-Controller unterstützt aktuell zwei Arten von Callout-Service-Extensions, jeweils für unterschiedliche Einsatzzwecke:

  • ``GCPRoutingExtension: Dieser Extension-Typ ist auf die Steuerung des Traffic-Routings ausgelegt. Ideal für Szenarien, in denen Sie Traffic auf unterschiedliche Backend-Services lenken oder eigene Routing-Logik anwenden möchten.

  • ``GCPTrafficExtension: Dieser Extension-Typ erlaubt es, Header und Payloads von Requests und Responses zu verändern. Er greift dabei nicht in die Backend-Service-Auswahl oder Sicherheitsrichtlinien ein und eignet sich damit ideal für Datentransformation und -anreicherung.

Service Extensions in der GKE Gateway API konfigurieren

Um die Service-Extension-Funktion in GKE auszuprobieren, benötigen Sie einen GKE-Cluster ab Version 1.33 mit aktivierter Gateway API. Werfen Sie vor dem Test außerdem einen Blick auf die aktuellen Einschränkungen und Limitierungen der Gateway Service Extensions in GKE.

Ein Gateway bereitstellen

Um eine Service Extension zu konfigurieren, müssen Sie zunächst eine Gateway-Ressource bereitstellen oder sicherstellen, dass die bestehende Gateway-Ressource eine unterstützte GatewayClass verwendet. Details zu den unterstützten Load Balancern finden Sie unter Google Cloud Service Extension compatibility with GatewayClasses.

  • Wenden Sie das folgende Manifest an, um ein einfaches regionales Application Load Balancer Gateway bereitzustellen.

Eine Beispiel-Store-Backend-Anwendung bereitstellen

  • Wenden Sie das folgende Manifest an, um die Beispiel-Backend-Anwendung und die HTTPRoute-Ressourcen bereitzustellen. Die HTTPRoute legt fest, wie HTTP-Requests vom Gateway-Listener zur Backend-Anwendung geroutet werden.

  • Senden Sie einen Beispiel-Request an die IP-Adresse der Gateway API, um die Backend-Antwort zu testen.

Die Ausgabe sieht in etwa so aus:

Einen Backend-Callout-Service bereitstellen

Ein Callout-Service implementiert die eigene Logik für Gateway Service Extensions in GKE. Der Load Balancer ruft die Backend-Anwendungen anhand der GCPTrafficExtension- oder GCPRoutingExtension-Konfigurationen auf, um Traffic zu modifizieren oder zu routen.

Wenn Sie einen Callout-Service im GKE-Cluster bereitstellen, müssen Sie alle in den Limitierungen genannten Anforderungen erfüllen.

  • Erzeugen Sie ein selbstsigniertes Zertifikat für das Callout-Service-Backend mit mkcert oder einem anderen Verfahren. Das ist erforderlich, weil als appProtocol HTTP2 verwendet werden muss, was End-to-End-TLS voraussetzt.

  • Erstellen Sie ein K8S Secret mit dem selbstsignierten Zertifikat.

  • Wenden Sie das folgende Manifest an, um die Beispiel-Callout-Anwendung bereitzustellen. Weitere Codebeispiele finden Sie im GitHub-Repository service-extensions.

  • Die Beispielanwendung führt eine einfache Header-Modifikation für Request und Response durch. Details finden Sie in service_callout_example.py – auf dieser Basis können Sie eine eigene Anwendung passend zu Ihren fachlichen Anforderungen entwickeln.

Service Extensions konfigurieren

Sie können entweder eine GCPRoutingExtension oder eine GCPTrafficExtension konfigurieren, um Ihren Traffic-Fluss anzupassen.

  • Wenden Sie das folgende Manifest an, um eine GCPRoutingExtension-Ressource zu erstellen. Der Load Balancer ruft daraufhin die Extension-Service-App für Requests auf, die an den Pfad routeextension gehen, und leitet sie anschließend an die Backend-Store-Anwendung weiter.

  • Aktualisieren Sie die HTTPRoute-Ressource mit dem Host service-extensions.com, da der Callout-Service den Host-Header verändert, bevor er die Requests an die Store-App weiterleitet.

  • Der Gateway API-Controller benötigt unter Umständen einige Minuten, um die Änderungen zu synchronisieren. Mit dem Befehl kubectl describe gateway GATEWAY_NAME prüfen Sie, ob die GCPRoutingExtension an das Gateway gebunden ist.

  • Die Ausgabe zeigt die Annotationen, über die GKE die Verknüpfungen zwischen dem Gateway und den zugrunde liegenden Google Cloud-Ressourcen speichert. Die Annotation networking.gke.io/lb-route-extensions bestätigt die Bindung des Gateways an die GCPRoutingExtension.
  • Testen Sie nun den Traffic auf dem Pfad routeextension, indem Sie GATEWAY_IP_ADDRESS ersetzen.

  • Die Ausgabe sieht in etwa wie folgt aus, und Sie erkennen die Änderungen am host_header in der Response.

Mit GCPTrafficExtension setzen Sie eigene Request- und Response-Logik, anspruchsvolles Routing, Transformationen und Sicherheitsrichtlinien um.

  • Wenden Sie das folgende Manifest an, um eine GCPTrafficExtension-Ressource zu erstellen. Der Load Balancer ruft die Extension-Service-App für Requests auf, die an den Pfad trafficetension gehen. Über supportedEvents passen Sie an, in welchen Fällen der Load Balancer die Callout-Anwendung aufruft.

  • Testen Sie nun den Traffic auf dem Pfad trafficextension, indem Sie GATEWAT_IP_ADDRESS ersetzen.

  • Die Ausgabe sieht in etwa wie folgt aus: Sie erkennen die Änderungen am Custom-Response-Header hello, und der Response-Body ist entfernt.
Beispielhafte Pod-Logs:

GCP Service Extensions für die GKE Gateway API sind ein deutlicher Schritt nach vorn, wenn es darum geht, wie Plattform-Teams Traffic auf der Ingress-Ebene steuern, formen und absichern. Ob individuelle Authentifizierung, Header-Manipulation, Traffic Shaping oder Anbindung externer Systeme – mit Service Extensions setzen Sie all das deklarativ und skalierbar um.

Auch wenn das Feature noch in der Preview ist, bietet sich gerade jetzt die ideale Gelegenheit, Service Extensions zu erkunden, in Nicht-Produktionsumgebungen zu testen und wiederverwendbare Extension-Services passgenau für Ihre Plattformanforderungen zu entwickeln.

Wenn Sie über einen PoC nachdenken, sind Sie damit nicht allein. DoiT unterstützt Sie bei Bewertung, Planung und Migration – mit klarem Fokus auf Ihre geschäftlichen Ergebnisse. Unser Team aus über 100 erfahrenen Cloud-Expertinnen und -Experten ist auf maßgeschneiderte Cloud-Lösungen spezialisiert und begleitet Sie reibungslos durch den gesamten Prozess. So optimieren Sie Ihre Infrastruktur, erfüllen Compliance-Anforderungen und sind für künftige Anforderungen effizient aufgestellt.

Unsere Expertinnen und Experten stehen Ihnen mit strategischer Beratung und technischem Know-how in jeder Phase zur Seite. Lassen Sie uns gemeinsam besprechen, was in dieser Phase der Richtlinien-Durchsetzung für Ihr Unternehmen am sinnvollsten ist – damit Ihre Cloud-Infrastruktur robust, compliant und auf Erfolg ausgelegt ist. Sprechen Sie uns an.