Tất Tần Tật Về kgateway: Đột Phá Mới Trong Quản Lý Lưu Lượng Kubernetes

Khám phá kgateway (trước đây là Gloo) - giải pháp API Gateway, Ingress Controller và AI Gateway toàn diện cho Kubernetes dựa trên Envoy Proxy.

Tất Tần Tật Về kgateway: Đột Phá Mới Trong Quản Lý Lưu Lượng Kubernetes

Nếu bạn đang tìm kiếm một giải pháp quản lý lưu lượng (traffic management) hiện đại, linh hoạt và tối ưu cho Kubernetes, chắc chắn bạn không thể bỏ qua kgateway.

Trong bài viết này, TechCoBan sẽ đưa bạn đi từ những khái niệm cơ bản nhất, kiến trúc tổng quan, cho đến hướng dẫn cài đặt và ứng dụng kgateway vào môi trường thực tế.


1. kgateway là gì?

kgateway là một giải pháp quản lý mạng Kubernetes toàn diện, kết hợp các vai trò: API Gateway, Ingress Controller và đặc biệt là AI Gateway.

kgateway được phát triển dựa trên các tiêu chuẩn và công nghệ hiện đại nhất:

  • Envoy Proxy: Đóng vai trò là Data Plane, nổi tiếng với hiệu suất cao và khả năng mở rộng.
  • Kubernetes Gateway API: Tiêu chuẩn định tuyến mới của Kubernetes, thay thế dần Ingress truyền thống.

Trước đây, kgateway được biết đến với tên gọi Gloo (hay Gloo Edge) được phát triển bởi Solo.io. Việc đổi tên thành kgateway đánh dấu sự tập trung mạnh mẽ vào tiêu chuẩn Gateway API của Kubernetes.

Các tính năng nổi bật:

  • Xử lý lưu lượng đa dạng: API Gateway, AI/LLM Gateway, MCP Gateway.
  • Quản lý traffic nâng cao: Canary, Blue-Green Deployment, Rate Limiting.
  • Bảo mật cốt lõi: Authentication, mTLS.
  • Tích hợp dễ dàng với Service Mesh (như Istio) và hỗ trợ đa cụm (Multi-cluster).

2. Kiến trúc tổng quan của kgateway

Kiến trúc của kgateway tuân theo mô hình phân tách rõ ràng giữa Control PlaneData Plane, giúp tối ưu hóa hiệu năng và quản lý:

Control Plane

Đây là “bộ não” của kgateway. Nhiệm vụ chính của Control Plane là:

  • Theo dõi (Watch) các tài nguyên Kubernetes chuẩn Gateway API như: Gateway, HTTPRoute, TLSRoute, TCPRoute.
  • Chuyển đổi (Translate) các cấu hình này thành định dạng mà Envoy Proxy có thể hiểu được (xDS API) và đẩy xuống Data Plane.

Data Plane

Đây là nơi xử lý lưu lượng thực tế, được đảm nhận bởi các Envoy Proxy Pods. Với sự mạnh mẽ của Envoy, Data Plane có thể xử lý hàng chục ngàn kết nối đồng thời với độ trễ cực thấp.

Tích hợp Kubernetes Gateway API

kgateway thiết kế native với Gateway API (gateway.networking.k8s.io/v1). Bạn không cần dùng các Annotation phức tạp của Ingress NGINX cũ, mà định nghĩa luật định tuyến rõ ràng thông qua HTTPRoute, phân tách trách nhiệm giữa team Hạ tầng và team Phát triển.


3. Tại sao kgateway lại nổi bật?

Để thấy rõ sức mạnh của kgateway, hãy so sánh nó với Ingress Controller phổ biến nhất hiện nay là Ingress NGINX:

Tiêu chíIngress NGINXkgateway
Hỗ trợ Gateway APIHạn chếNative (Hoàn toàn tương thích)
Công nghệ lõiNGINXEnvoy Proxy
Hỗ trợ gRPCTốtXuất sắc
AI GatewayKhông hỗ trợCó hỗ trợ mạnh mẽ
Chia tải (Traffic Split)Cơ bảnNâng cao (Canary, A/B testing)
Extensibility (Mở rộng)Trung bình (Lua)Rất cao (WASM)
Rate LimitingQua Plugin/AnnotationsTích hợp sẵn (Native)

4. Các Use Case (Trường hợp sử dụng) phổ biến

API Gateway cho Microservices

Thay vì phơi bày tất cả các dịch vụ ra ngoài, kgateway đóng vai trò là cửa ngõ duy nhất. Ví dụ, nó có thể định tuyến /api/users, /api/orders, /api/payments đến đúng các microservices bên trong cluster một cách an toàn.

AI Gateway (Quản lý LLM Traffic)

Đây là một trong những tính năng “đáng tiền” nhất của kgateway hiện tại. Nó cho phép bạn định tuyến an toàn tới các mô hình ngôn ngữ lớn (LLMs) như OpenAI, Claude, Gemini, hoặc các mô hình local (Ollama, vLLM).

  • Giới hạn token (Token Rate Limiting).
  • Quản lý xác thực (Auth) tập trung.
  • Bảo vệ dữ liệu nhạy cảm (Redact/Prompt transform).
  • Theo dõi chỉ số chi tiết (Observability) cho AI traffic.

Quản lý Traffic Nâng cao (Traffic Engineering)

  • Canary & A/B Testing: Chuyển 10% traffic sang phiên bản ứng dụng mới, 90% giữ ở bản cũ.
  • Resiliency: Hỗ trợ tự động thử lại (Retry), Timeout và Circuit Breaker để bảo vệ backend khi bị quá tải.

5. Hướng dẫn cài đặt kgateway trên Kubernetes

Yêu cầu hệ thống:

  • Kubernetes cluster phiên bản 1.27 trở lên.
  • Đã cài đặt kubectlhelm.

Bước 1: Cài đặt Gateway API CRDs

Vì Gateway API chưa được cài sẵn trên tất cả các cụm Kubernetes mặc định, bạn cần cài đặt CRDs tiêu chuẩn:

kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml

Kiểm tra CRD đã cài thành công: kubectl get crds | grep gateway

Bước 2: Thêm Helm Repository

Thêm kho chứa Helm chart của kgateway và cập nhật:

helm repo add kgateway https://helm.kgateway.dev
helm repo update

Bước 3: Cài đặt kgateway qua Helm

Chúng ta sẽ cài đặt kgateway vào namespace kgateway-system:

helm install kgateway \
  oci://cr.kgateway.dev/kgateway-dev/charts/kgateway \
  --namespace kgateway-system \
  --create-namespace

Bước 4: Kiểm tra trạng thái

Đảm bảo tất cả các Pod của Control Plane và Proxy đều đang chạy (Running):

kubectl get pods -n kgateway-system

6. Cấu hình định tuyến cơ bản với kgateway

Hãy thử cấu hình định tuyến cho một ứng dụng NGINX đơn giản.

Deploy ứng dụng demo

Tạo file nginx.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-demo
  template:
    metadata:
      labels:
        app: nginx-demo
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: nginx-demo
  ports:
  - port: 80

Áp dụng cấu hình: kubectl apply -f nginx.yaml

Khởi tạo đối tượng Gateway

Tạo đối tượng Gateway để lắng nghe lưu lượng HTTP tại port 80:

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: http-gateway
spec:
  gatewayClassName: kgateway
  listeners:
  - name: http
    port: 80
    protocol: HTTP

Cấu hình HTTPRoute

Định tuyến mọi yêu cầu có tiền tố / đến dịch vụ nginx-svc:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: nginx-route
spec:
  parentRefs:
  - name: http-gateway
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: nginx-svc
      port: 80

Áp dụng cấu hình Gateway và Route. Để kiểm tra, lấy External IP của Proxy Service trong namespace kgateway-system và truy cập thử qua trình duyệt hoặc curl.


7. Các cấu hình nâng cao trong môi trường Production

Khi đưa vào môi trường Production, bạn nên xem xét áp dụng các Best Practices sau cho kgateway:

  1. High Availability (HA): Thiết lập Horizontal Pod Autoscaling (HPA) cho Envoy Proxy (ít nhất 2 replicas) và sử dụng PodDisruptionBudget.
  2. Bảo mật kết nối (HTTPS/TLS): Sử dụng cert-manager kết hợp với cấu hình TLS trên Gateway (mode: Terminate).
  3. Quản lý Xác thực (Authentication): kgateway tích hợp tốt với OIDC, OAuth2, JWT và các nhà cung cấp như Keycloak, Auth0.
  4. Rate Limiting: Sử dụng CRD TrafficPolicy của kgateway để chống DDoS và giới hạn lưu lượng truy cập không mong muốn vào backend.
  5. Observability: Xuất logs dạng JSON, cấu hình Prometheus Metrics, và sử dụng OpenTelemetry hoặc Jaeger/Tempo để Distributed Tracing.

8. Khi nào nên và không nên sử dụng kgateway?

Ưu điểm vượt trội

  • Native Kubernetes Gateway API.
  • Phù hợp tuyệt vời cho môi trường Microservices phức tạp.
  • AI Gateway tích hợp sẵn rất mạnh mẽ (không nhiều Gateway làm tốt điều này hiện nay).
  • Hiệu suất cực cao nhờ Envoy Proxy.

Điểm hạn chế

  • So với Ingress NGINX hay Traefik truyền thống, đường cong học tập (learning curve) của Gateway API và kgateway có thể dốc hơn một chút cho người mới.
  • Quá “dư thừa” nếu bạn chỉ cần một Ingress Controller siêu cơ bản cho 1-2 ứng dụng nội bộ.

Lời khuyên từ TechCoBan: Nếu bạn chuẩn bị triển khai một hệ thống Kubernetes mới, có số lượng microservices lớn, và đặc biệt là hệ thống có tích hợp các dịch vụ AI (LLMs), thì kgateway chính là “chân ái”. Ngược lại, nếu cluster của bạn quá nhỏ và dự án đơn giản, Ingress NGINX hoặc Caddy vẫn là những lựa chọn an toàn và dễ thiết lập hơn.


Tài liệu tham khảo thêm

Bình luận

Bài viết liên quan