Cấu hình Helm Chart cho Kong Gateway (DB-less Mode)
Tạo file cấu hình giá trị tùy chỉnh để triển khai Kong Gateway trong chế độ không sử dụng database (DB-less), giúp giảm độ phức tạp và tăng tốc độ khởi động.
Chế độ DB-less sử dụng file cấu hình YAML để định nghĩa các Entity (Service, Route, Consumer) thay vì truy vấn Postgres hoặc Cassandra, phù hợp cho môi trường Kubernetes nơi cần tính sẵn sàng cao và khả năng mở rộng nhanh.
Tạo file kong-values.yaml với nội dung cấu hình sau:
cat > kong-values.yaml
Kết quả mong đợi: File kong-values.yaml được tạo thành công với các tham số cấu hình cần thiết cho DB-less mode.
Verify kết quả bằng lệnh:
cat kong-values.yaml | grep "dbMode"
Đầu ra phải hiển thị: dbMode: "off".
Triển khai Kong Gateway trên Kubernetes
Sử dụng Helm để cài đặt Kong Gateway vào namespace kong-system bằng file cấu hình đã tạo ở bước trên.
Helm sẽ tự động tạo các tài nguyên Kubernetes bao gồm Deployment, Service, ConfigMap, và các tài nguyên CRD (Custom Resource Definition) nếu chưa tồn tại.
Bước 1: Thêm repository Helm của Kong nếu chưa có.
helm repo add kong https://charts.konghq.com
helm repo update
Kết quả mong đợi: Repository kong được cập nhật thành công.
Bước 2: Tạo namespace kong-system nếu chưa tồn tại.
kubectl create namespace kong-system
Kết quả mong đợi: Namespace kong-system được tạo.
Bước 3: Cài đặt Kong Gateway sử dụng file cấu hình đã chuẩn bị.
helm install kong kong/kong \
--namespace kong-system \
--values kong-values.yaml \
--set adminService.type=ClusterIP \
--set proxyService.type=LoadBalancer \
--wait \
--timeout 5m
Kết quả mong đợi: Lệnh Helm thực thi thành công, hiển thị thông tin IP của LoadBalancer (nếu có) và trạng thái các tài nguyên đã được tạo.
Verify Trạng thái Pod và Logs
Kiểm tra trạng thái khởi tạo của các Pod và xem nhật ký (logs) để đảm bảo Gateway hoạt động ổn định và không có lỗi khởi động.
Bước 1: Kiểm tra trạng thái của tất cả Pod trong namespace kong-system.
kubectl get pods -n kong-system
Kết quả mong đợi: Tất cả Pod (bao gồm kong-ingress-controller và kong-proxy) đều ở trạng thái Running với RESTARTS bằng 0 hoặc thấp.
Bước 2: Xem logs của Pod proxy để xác nhận Gateway đã sẵn sàng.
kubectl logs -n kong-system -l app=kong -c kong --tail=50
Kết quả mong đợi: Xuất hiện dòng log ready to serve HTTP traffic hoặc tương tự, xác nhận server đã lắng nghe trên cổng 8000 và 8001.
Bước 3: Kiểm tra logs của Ingress Controller để đảm bảo nó đã đồng bộ cấu hình.
kubectl logs -n kong-system -l app=kong -c controller --tail=50
Kết quả mong đợi: Không có lỗi panic hoặc connection refused, và có log config sync hoặc watch đang hoạt động.
Verify Kết quả triển khai qua API Admin
Kiểm tra trực tiếp khả năng phản hồi của Kong Gateway bằng cách truy cập vào cổng Admin (8001) từ bên trong cluster.
Sử dụng lệnh curl từ một Pod khác (hoặc từ local nếu port-forward) để gọi API Health của Kong.
kubectl port-forward -n kong-system svc/kong-admin 8001:8001 &
sleep 2
curl -s http://localhost:8001/ | jq .
Kết quả mong đợi: JSON trả về chứa trường version (ví dụ: "3.9.0") và node_id, xác nhận Gateway đã chạy và có thể đọc cấu hình.
Ngắt quá trình port-forward khi kiểm tra xong:
kill %1 2>/dev/null || true
Điều hướng series:
Mục lục: Series: Xây dựng nền tảng Secure API Gateway với Kong, OPA và mTLS trên Kubernetes
« Phần 1: Chuẩn bị môi trường và kiến trúc tổng quan
Phần 3: Cấu hình chứng chỉ mTLS cho Gateway »