Preserve Source IP khi sử dụng vLB Layer4 và Nginx Ingress Controller
Preserve Source IP khi sử dụng vLB Layer 4 và Nginx Ingress Controller trong Kubernetes là quá trình duy trì địa chỉ IP gốc của client khi traffic được chuyển tiếp qua load balancer và vào cụm Kubernetes. Điều này rất quan trọng trong một số trường hợp khi bạn cần các thông tin chi tiết về kết nối của client, chẳng hạn như địa chỉ IP gốc và port gốc của client, để có thể thực hiện các quyết định xử lý traffic hoặc logging chính xác. Bên dưới là hướng dẫn cụ thể của chúng tôi để giúp bạn có thể thực hiện usecase này.
Điều kiện cần
Bạn đã thực hiện khởi tạo Cluster trên hệ thống VKS theo các hướng dẫn tại đây và trên cụm của bạn đã được cài đặt VNGCloud Controller Manager với appversion từ v0.2.1 trở lên. Nếu appversion của bạn thấp hơn version tiêu chuẩn này, bạn có thể thực hiện upgrade theo các hướng dẫn sau:
Đầu tiên, bạn cần lấy release name của vngcloud-controller-manager đã cài trên cụm của bạn:
Sau đó, bạn hãy thực hiện upgrade lên version mới nhất thông qua lệnh:
Tiếp theo, bạn cần thực hiện cài đặt nginx-ingress-controller theo lệnh:
Cấu hình ConfigMap cho Nginx Ingress Controller
Thêm vào ConfigMap của Nginx Ingress Controller các thiết lập để kích hoạt proxy protocol thông qua lệnh:
Đoạn mã bạn cần thêm như sau:
Cấu hình vLB Layer 4
Tiếp theo, bạn cần cấu hình vLB Layer4 cho phép sử dụng proxy protocol cho service Load Balancer Nginx. Giá trị truyền vào là danh sách các service name trong Load Balancer sử dụng Proxy Protocol.
Cuối cùng, bạn hãy thực hiện kiểm tra NLB trên vLB Portal cho tới khi các Load Balancer này được ACTIVE với đầy đủ listener, pool.
Cách sử dụng
Giả sử, bạn có một service prometheus-node-exporter với port 9100 trong namespace default, bạn có thể apply yaml sau để có thể truy cập thông qua NLB
Sau đó tôi sử dụng IP 103.245.252.75 để curl vào host kkk.example.com như sau:
Kết quả log ghi nhận được đã có thông tin Client IP này như hình:
Last updated