Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

GKE Gateway API et Service Extensions : maîtrisez vos flux de trafic les plus complexes sur GCP

By Chimbu ChinnaduraiAug 12, 20256 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Kubernetes a transformé l'orchestration de conteneurs, et Google Kubernetes Engine (GKE) offre une plateforme managée puissante pour déployer et faire évoluer des applications conteneurisées. Si GKE propose des fonctionnalités robustes pour la découverte de services et le load balancing, certaines limites subsistent dès qu'il s'agit d'appliquer une logique de traitement personnalisée au trafic avant qu'il n'atteigne les workloads.

C'est précisément là qu'interviennent les Service Extensions : une solution convaincante pour personnaliser et enrichir Cloud Load Balancing avec la GKE Gateway API (à noter : il s'agit d'une fonctionnalité Kubernetes, sans aucun lien avec le service Google Cloud API Gateway).

Que sont les Service Extensions sur GCP ?

Les Service Extensions permettent d'injecter une logique personnalisée directement dans le data path, ouvrant la voie à des modifications avancées du trafic qui transite par le load balancer. Imaginez un pipeline dans lequel vous insérez votre propre code à différentes étapes pour manipuler les requêtes et les réponses, sans toucher aux backends.

Il existe deux grands types de Service Extensions :

  • Plugins : ils permettent d'insérer du code personnalisé en inline, directement au sein du data path réseau. Construits avec WebAssembly (Wasm) et l'ABI Proxy-Wasm, ils s'exécutent comme des modules Wasm sur une infrastructure sandbox managée par Google. Pensés pour les opérations à faible latence, ils sont parfaits pour une logique légère qui doit s'exécuter au plus près du data plane.

  • Callouts : ils permettent à Cloud Load Balancing d'effectuer des appels gRPC vers des services externes — qu'il s'agisse de services managés par Google ou par l'utilisateur (y compris ceux qui s'exécutent sur des Pods GKE). Les Callouts offrent une flexibilité accrue : ils peuvent réutiliser des logiciels existants et imposent moins de contraintes d'exécution. Ils conviennent ainsi à une logique plus complexe pouvant nécessiter des données ou un état externes.

L'équipe GKE a récemment annoncé la prise en charge en preview des Service Extensions dans la Gateway API. Vous pouvez ainsi manipuler les en-têtes et les payloads HTTP des requêtes et des réponses, et même piloter le routage du trafic, sans impacter les sélections de services backend ni les politiques de sécurité existantes.

Les types de Service Extensions de la GKE Gateway API

Le contrôleur GKE Gateway prend actuellement en charge deux types de Callouts Service Extensions, chacun pensé pour des usages spécifiques :

  • ``GCPRoutingExtension : ce type d'extension est dédié au contrôle du routage du trafic. Idéal lorsque vous devez orienter le trafic vers différents services backend ou appliquer une logique de routage sur mesure.

  • ``GCPTrafficExtension : ce type d'extension permet de modifier les en-têtes et les payloads des requêtes et des réponses. Il fonctionne sans affecter la sélection des services backend ni les politiques de sécurité, ce qui en fait un outil idéal pour la transformation et l'enrichissement des données.

Configurer les Service Extensions dans la GKE Gateway API

Pour explorer la fonctionnalité Service Extensions sur GKE, il vous faut un cluster GKE en version 1.33 ou supérieure et la Gateway API activée. Pensez aussi à consulter les restrictions et limitations actuelles des Gateway Service Extensions sur GKE avant de tester cette fonctionnalité.

Déployer une Gateway

Pour configurer une Service Extension, commencez par déployer une ressource Gateway ou vérifiez que la ressource Gateway existante repose sur une GatewayClass prise en charge. Pour la liste des load balancers compatibles, reportez-vous à Google Cloud Service Extension compatibility with GatewayClasses.

  • Appliquez le manifeste ci-dessous pour déployer une simple gateway de type application load balancer régional.

Déployer un exemple d'application backend de type store

  • Appliquez le manifeste ci-dessous pour déployer l'application backend d'exemple ainsi que les ressources HTTPRoute. La HTTPRoute définit le routage des requêtes HTTP depuis un listener Gateway vers l'application backend.

  • Envoyez une requête de test à l'adresse IP de la gateway API pour vérifier la réponse du backend.

La sortie ressemble à ceci :

Déployer un service callout backend

Un service callout met en œuvre la logique personnalisée des Gateway Service Extensions sur GKE. Le Load Balancer invoque les applications backend selon les configurations GCPTrafficExtension ou GCPRoutingExtension, afin de modifier ou de router le trafic.

Si vous déployez un service callout dans le cluster GKE, vous devez respecter l'ensemble des conditions indiquées dans les limitations.

  • Générez un certificat auto-signé pour le backend du service callout avec mkcert ou toute autre méthode. C'est indispensable, car vous devez utiliser HTTP2 comme appProtocol, qui exige du TLS de bout en bout.

  • Créez un Secret K8S contenant le certificat auto-signé.

  • Appliquez le manifeste ci-dessous pour déployer l'application callout d'exemple. Pour davantage d'exemples de code, consultez le dépôt GitHub service-extensions.

  • L'application d'exemple effectue une modification basique des en-têtes pour la requête comme pour la réponse. Reportez-vous à service_callout_example.py pour plus de détails ; vous pourrez ensuite développer votre propre application en fonction de vos besoins métier.

Configurer les Service Extensions

Vous pouvez configurer une GCPRoutingExtension ou une GCPTrafficExtension pour personnaliser votre flux de trafic.

  • Appliquez le manifeste ci-dessous pour créer une ressource GCPRoutingExtension : le load balancer appellera l'application d'extension pour les requêtes envoyées au chemin routeextension, puis les transmettra à l'application store backend.

  • Mettez à jour la ressource HTTPRoute avec l'hôte service-extensions.com, car le service callout modifie l'en-tête host avant de transmettre les requêtes à l'application store.

  • Le contrôleur Gateway API peut prendre quelques minutes pour synchroniser les changements. Utilisez la commande kubectl describe gateway GATEWAY_NAME pour confirmer que la GCPRoutingExtension est bien rattachée à la Gateway.

  • La sortie affiche les annotations que GKE utilise pour stocker les liens entre la Gateway et les ressources Google Cloud sous-jacentes. L'annotation networking.gke.io/lb-route-extensions confirme l'association de la gateway à la GCPRoutingExtension.
  • Testez maintenant le trafic vers le chemin routeextension en remplaçant GATEWAY_IP_ADDRESS.

  • La sortie ressemble à ce qui suit ; vous remarquerez les modifications du host_header dans la réponse.

Vous pouvez utiliser GCPTrafficExtension pour mettre en place une logique personnalisée de requêtes et de réponses, du routage avancé, des transformations et des politiques de sécurité.

  • Appliquez le manifeste ci-dessous pour créer une ressource GCPTrafficExtension : le load balancer appellera l'application d'extension pour les requêtes envoyées au chemin trafficetension. Vous pouvez personnaliser et piloter l'invocation du load balancer vers l'application callout en mettant à jour supportedEvents.

  • Testez maintenant le trafic vers le chemin trafficextension en remplaçant GATEWAT_IP_ADDRESS.

  • La sortie ressemble à ce qui suit ; vous remarquerez les modifications de l'en-tête de réponse client dans hello, ainsi que la suppression du corps de la réponse.
Sample Pod logs:

Les GCP Service Extensions pour la GKE Gateway API marquent une avancée majeure pour les équipes plateforme qui doivent gérer, façonner et sécuriser le trafic au niveau de l'ingress. Authentification personnalisée, manipulation d'en-têtes, traffic shaping ou intégration avec des systèmes externes : les Service Extensions vous permettent d'agir de façon déclarative et scalable.

Encore en preview, elles offrent une excellente occasion de les explorer, de les tester en environnement hors production et de développer des services d'extension réutilisables, taillés pour les besoins de votre plateforme.

Si vous envisagez un PoC, vous n'êtes pas seul. DoiT vous accompagne pour évaluer, planifier et migrer en gardant un cap clair sur vos résultats métier. Avec plus de 100 experts cloud seniors spécialisés dans la conception de solutions cloud sur mesure, notre équipe est prête à vous accompagner sereinement tout au long du processus et à optimiser votre infrastructure pour garantir la conformité et anticiper efficacement vos besoins futurs.

Nos experts vous apportent conseils stratégiques et expertise technique à chaque étape. Voyons ensemble ce qui a le plus de sens pour votre entreprise durant cette phase d'application des politiques, afin que votre infrastructure cloud soit robuste, conforme et taillée pour la réussite. Contactez-nous dès aujourd'hui.