2024-11-15Hünkar Döner

Ingress NGINX Emekliye Ayrılıyor: EKS İçin Gateway API'ye Geçiş

KubernetesGateway APIIngressEKSNetworking
I

Ingress NGINX Emekliye Ayrılıyor: EKS İçin Gateway API'ye Geçiş

Kubernetes Ingress API'si yıllardır bize hizmet etti ancak modern ihtiyaçları (header routing, traffic splitting vb.) karşılamakta yetersiz kaldı. Çözüm olarak her Ingress Controller (NGINX, ALB, Istio) kendi özel notasyonlarını (annotations) geliştirdi. Bu da taşınabilirliği yok etti.

Kubernetes topluluğu bu sorunu kökten çözmek için Gateway API standardını geliştirdi. Artık Amazon EKS projelerinde standart olarak Gateway API kullanımına geçiyoruz.

Gateway API Nedir?

Gateway API, Ingress'in yerini alan, rol tabanlı ve daha esnek bir ağ API'sidir. Üç ana bileşeni vardır:

  1. GatewayClass: Altyapı türünü tanımlar (Örn: amazon-vpc-lattice).
  2. Gateway: Ağ giriş noktasını tanımlar (Load Balancer).
  3. HTTPRoute: Trafik kurallarını tanımlar (Hangi yol hangi servise gidecek).

Neden Geçmelisiniz?

  • Standartlaşma: Farklı proxy'ler (Envoy, NGINX) için ortak bir dil sunar.
  • Rol Ayrımı: Altyapı ekibi Gateway kaynağını yönetirken, geliştiriciler HTTPRoute kaynağını yönetebilir.
  • Gelişmiş Özellikler: Canary deployment (%10 trafik A servisine), header matching gibi özellikler yerel olarak desteklenir.

EKS Üzerinde Uygulama

AWS, Gateway API'yi AWS Gateway API Controller veya VPC Lattice üzerinden destekler.

Örnek bir HTTPRoute tanımı:

apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: my-route
spec:
  parentRefs:
  - name: my-gateway
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /api
    backendRefs:
    - name: my-service
      port: 80

Geleceğin Kubernetes ağ yapısı Gateway API üzerine kuruludur. Erken adapte olmak, teknik borcu önler.