Możnaby powiedzieć, że Kubernetes Gateway API to następca klasycznego Ingress, który jest bardziej nowoczesnym, rozszerzalnym standardem routingu ruchu w klastrach Kubernetes, rozwijanym przez SIG Network. W repozytorium k8s-gateway-api zebrałem praktyczne przykłady działania dwóch podejść do obsługi ruchu przychodzącego:
- klasycznego
NGINX Ingress, Gateway APIna przykładzie:KinDIstio
Dlaczego Gateway API zamiast Ingress? Link to heading
Klasyczny zasób Ingress ma swoje ograniczenia — słabo radzi sobie z bardziej zaawansowanymi regułami routingu, a różne kontrolery implementują go w niekompatybilny sposób przez własne adnotacje. Gateway API rozwiązuje te problemy przez:
- wyraźny podział ról —
GatewayClassdefiniuje dostawcę infrastruktury,Gatewayokreśla punkt wejścia ruchu, aHTTPRoute(lubTCPRouteitp.) opisuje reguły routingu - bogaty model routingu — natywna obsługa podziału ruchu (traffic splitting), przekierowań, modyfikacji nagłówków i dopasowania ścieżek
- rozszerzalność — każdy dostawca (
Istio,Cilium,Envoy Gatewayi inni) implementuje ten sam API, co daje przenośność konfiguracji między środowiskami
Dwa (albo i w sumie trzy) podejścia w praktyce Link to heading
Repozytorium demonstruje kompletne, działające przykłady na lokalnym klastrze KIND (Kubernetes in Docker).
NGINX Ingress — klasyczne podejście, nadal powszechne w produkcji. Kontroler wdrażany jest z pełnym zestawem RBAC, webhookiem walidacyjnym i usługą NodePort. Konfiguracja opiera się na zasobie Ingress z adnotacjami specyficznymi dla NGINX.
KinD Gateway API — implementacja standardu Gateway API z wbudowanym cloud kontrolerem KinD. Gateway nasłuchuje na porcie 80 dla domeny *.example.gateway.kind.com, a routing definiują zasoby HTTPRoute. Całość pokazuje, jak Gateway API wygląda bez dodatkowej warstwy service mesh.
Istio Gateway API — najbardziej zaawansowana opcja. Istio wdraża się przez Helm, a gateway obsługuje domenę *.example.gateway.istio.com. Dzięki integracji z service mesh zyskujemy mTLS, observability i zaawansowane mechanizmy zarządzania ruchem bez modyfikowania samej aplikacji.
Automatyzacja przez Taskfile Link to heading
Całość zarządzana jest przez taskfile.yml, który automatyzuje:
- tworzenie i usuwanie klastra
KinDwraz z konfiguracją mapowania portów - instalację kontrolerów (
NGINX,KinD Gateway,IstioprzezHelm) - wdrożenie aplikacji demonstracyjnych (
podinfoz autoskalowaniem i metrykami,echo) - konfigurację port-forwardingu i proxy do testowania ruchu
Dzięki temu cały eksperyment — od pustego środowiska do działającego Gateway API — zamyka się w kilku komendach.
Podsumowanie Link to heading
Gateway API to kierunek, w którym zmierza ekosystem Kubernetes. Niezależnie od tego, czy korzystasz z Istio, Cilium, czy innego dostawcy, interfejs pozostaje ten sam. Repozytorium k8s-gateway-api może służyć do nauki tego standardu bez potrzeby dostępu do chmury.