2024-11-30Hünkar Döner

EKS Üzerinde gRPC Routing: Gateway API ile Yönetim

gRPCEKSGateway APIRouting
E

EKS Üzerinde gRPC Routing

Mikroservisler arasında JSON/REST yerine yüksek performanslı gRPC protokolü kullanımı giderek yaygınlaşıyor. Ancak gRPC, HTTP/2 tabanlı olduğu için standart Load Balancer ayarlarıyla yönetmek bazen zor olabilir.

Amazon EKS üzerinde gRPC trafiğini yönetmenin en modern yolu Gateway API ve onun sunduğu GRPCRoute kaynağını kullanmaktır.

gRPC Nedir ve Neden Zordur?

gRPC, uzun süreli açık kalan TCP bağlantıları kullanır. Klasik (L4) yük dengeleyiciler, bu tek bağlantıyı bir pod'a gönderir ve oraya yapıştırır. Sonuçta bir pod %100 yük altındayken diğerleri boş yatabilir (Load Imbalance). Çözüm, L7 seviyesinde gRPC'yi anlayan bir proxy kullanmaktır.

Gateway API ile GRPCRoute

Gateway API standardı, HTTPRoute'un yanı sıra GRPCRoute kaynağını da sunar. Bu sayede gRPC metodlarına ve servislerine göre yönlendirme yapabilirsiniz.

Örnek: MyService içindeki GetUserDetails metodunu v2 servisine yönlendirmek.

apiVersion: gateway.networking.k8s.io/v1alpha2
kind: GRPCRoute
metadata:
  name: user-service-route
spec:
  parentRefs:
  - name: my-gateway
  rules:
  - matches:
    - method:
        service: com.example.User
        method: GetUserDetails
    backendRefs:
    - name: user-service-v2
      port: 50051

Bu yapılandırma ile EKS üzerindeki ingress controller (Envoy vb.), gRPC isteklerini paket bazında (per-request) dengeler ve metod bazlı yönlendirme yapar.