Gateway API 1.6 : TCPRoute et UDPRoute passent en v1 — le runbook L4 (Postgres, Kafka, DNS) sans coupure, et la fin de v1alpha2
Gateway API v1.6.0 fait passer TCPRoute et UDPRoute du canal Experimental au canal Standard en apiVersion v1, et isole les ressources expérimentales dans un nouveau groupe d'API. Avec la fin de vie d'ingress-nginx, ces routes deviennent le premier chemin portable pour exposer Postgres, Kafka, SMTP ou le DNS. Voici le runbook d'ordre d'opérations, les pièges GitOps et les règles de conception L4 qui vont avec.</summary> <parameter name="cover_alt_text">Schéma d'une Gateway Kubernetes exposant plusieurs ports TCP et UDP vers des backends de type base de données, broker de messages et serveur DNS.
Pendant des années, exposer un flux non-HTTP depuis un cluster Kubernetes relevait du bricolage assumé : une ConfigMap tcp-services chez ingress-nginx, un IngressRouteTCP chez Traefik, un TransportServer chez NGINX, ou un Service type=LoadBalancer par port et une facture cloud qui grimpe. Gateway API v1.6.0 change la donne : TCPRoute et UDPRoute quittent le canal Experimental pour le canal Standard, en apiVersion: gateway.networking.k8s.io/v1. Combiné à la fin de vie du contrôleur communautaire ingress-nginx, cela transforme une curiosité d’API en chemin de migration obligatoire — avec un ordre d’opérations à respecter sous peine de routes ignorées en silence.
Ce que la 1.6 change vraiment
Trois évolutions structurantes, dont deux qui vont casser des manifestes.
1. TCPRoute et UDPRoute en Standard, en v1. La promotion signifie stabilité de schéma et engagement de compatibilité, mais aussi que v1alpha2 est déprécié et n’est plus servi dans le canal Standard. Concrètement : si vos manifestes portent encore gateway.networking.k8s.io/v1alpha2 et que vous installez les CRD Standard 1.6, l’API server rejette l’écriture. Ce n’est pas un warning de dépréciation, c’est un no matches for kind.
2. Un groupe d’API séparé pour l’expérimental. Les ressources non stabilisées migrent vers gateway.networking.x-k8s.io (convention du préfixe X). C’est sain — on ne mélange plus stable et instable dans le même groupe — mais l’impact est transversal :
- vos
ClusterRolequi listentapiGroups: ["gateway.networking.k8s.io"]ne couvrent plus les ressources expérimentales ; - vos policies Kyverno / OPA…