Ce face Gateway API: Gateway și GatewayClass
Gateway API este setul de resurse care preia rolul lui Ingress pentru traficul care intră în cluster. Rolurile sunt separate: GatewayClass spune ce implementare se folosește (de exemplu Envoy Gateway, Istio, Cilium, NGINX Gateway Fabric, Traefik), Gateway descrie punctul de intrare (porturi, protocoale, certificate), iar rutele (HTTPRoute) descriu unde merge fiecare cerere. Astfel echipa de infrastructură gestionează Gateway-ul, iar echipele de aplicații își scriu propriile rute.
Resursele nu sunt incluse în Kubernetes: instalezi întâi CRD-urile Gateway API (în octombrie 2026, ultima versiune stabilă este v1.6.3), apoi un controller care le implementează. Gateway API este recomandarea proiectului Kubernetes pentru configurații noi: Ingress rămâne disponibil, dar nu mai primește funcții noi, iar controllerul Ingress NGINX nu mai este întreținut din martie 2026.
Parametri
| Parametru | Descriere |
|---|---|
spec.gatewayClassName |
Numele GatewayClass-ului (implementarea folosită). |
spec.listeners[].port / protocol |
Portul și protocolul ascultate: HTTP, HTTPS, TLS, TCP, UDP. |
listeners[].hostname |
Limitează listenerul la un nume de domeniu (acceptă *.exemplu.ro). |
listeners[].tls.certificateRefs |
Secretul de tip TLS cu certificatul, pentru HTTPS. |
listeners[].allowedRoutes.namespaces.from |
Din ce namespace-uri se pot atașa rute: Same (implicit), All sau Selector. |
GatewayClass spec.controllerName |
Identificatorul controllerului care gestionează clasa. |
Exemple
Exemplul 1: Instalarea CRD-urilor Gateway API
Canalul standard conține resursele stabile (GatewayClass, Gateway, HTTPRoute, GRPCRoute, ReferenceGrant). Controllerul se instalează separat, după documentația lui.
kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.6.3/standard-install.yaml
Ieșire în terminal
customresourcedefinition.apiextensions.k8s.io/gatewayclasses.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/gateways.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/httproutes.gateway.networking.k8s.io serverside-applied
customresourcedefinition.apiextensions.k8s.io/referencegrants.gateway.networking.k8s.io serverside-applied
...
Exemplul 2: Gateway cu HTTP și HTTPS pentru toate echipele
Clasa eg aparține lui Envoy Gateway. Certificatul este un Secret TLS din namespace-ul infra; rutele se pot atașa din orice namespace.
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: eg
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
---
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: public
namespace: infra
spec:
gatewayClassName: eg
listeners:
- name: http
protocol: HTTP
port: 80
allowedRoutes:
namespaces:
from: All
- name: https
protocol: HTTPS
port: 443
hostname: "*.exemplu.ro"
tls:
mode: Terminate
certificateRefs:
- kind: Secret
name: wildcard-exemplu-ro
allowedRoutes:
namespaces:
from: All
Exemplul 3: Verificarea stării
PROGRAMMED True înseamnă că implementarea a configurat punctul de intrare și i-a dat o adresă.
kubectl get gatewayclass
kubectl get gateway -n infra
Ieșire în terminal
NAME CONTROLLER ACCEPTED AGE
eg gateway.envoyproxy.io/gatewayclass-controller True 5m
NAME CLASS ADDRESS PROGRAMMED AGE
public eg 203.0.113.10 True 3m
Greșeli frecvente
- Aplicarea unui
Gatewayfără un controller instalat: resursa este acceptată de API, dar rămâne fără adresă și cuPROGRAMMED Unknown, pentru că nimeni nu o implementează. - Lăsarea lui
allowedRoutesla valoarea implicită (Same) când rutele stau în alte namespace-uri: rutele apar cu condițiaAccepted: Falseși traficul nu ajunge la aplicație.
Comenzi înrudite
Gateway API: HTTPRoute: Regulile de rutare HTTP din Gateway API: după domeniu, cale sau antete, cerere trimisă către unul sau mai multe Service-uri.Obiectul ServiceAccount: Identitatea cu care un Pod se autentifică la API-ul Kubernetes; primește drepturi prin RBAC și un token de scurtă durată.