Preserve Source IP khi sử dụng vLB Layer4 và Istio Ingress Gateway
Preserve Source IP khi sử dụng vLB Layer 4 và Istio Ingress Gateway trong Kubernetes là quá trình duy trì địa chỉ IP gốc của client khi lưu lượng được chuyển tiếp qua load balancer và đi vào cụm Kubernetes. Điều này rất quan trọng trong các trường hợp cần thông tin chi tiết về kết nối của client, như địa chỉ IP và cổng nguồn của client, để có thể thực hiện các quyết định xử lý lưu lượng hoặc ghi log chính xác. Dưới đây là hướng dẫn cụ thể để giúp bạn thực hiện trường hợp sử dụng 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:
cat>config.yaml<<EOFapiVersion: networking.istio.io/v1beta1kind: Gatewaymetadata: name: clusterip-gatewayspec: selector: istio: ingressgateway # Choose the appropriate selector for your environment servers: - port: number: 80 name: http protocol: HTTP hosts: - "clusterip.jimmysong.io" # Replace with the desired hostname---apiVersion: networking.istio.io/v1beta1kind: VirtualServicemetadata: name: clusterip-virtualservicespec: hosts: - "clusterip.jimmysong.io" # Replace with the same hostname as in the Gateway gateways: - clusterip-gateway # Use the name of the Gateway here http: - route: - destination: host: clusterip.default.svc.cluster.local # Replace with the actual hostname of your Service port: number: 80 # Port of the ServiceEOF
kubectlapply-fconfig.yaml
Sau khi triển khai service và deployment, bạn có thể mở 3 terminal để xem log chi tiết từ istio-ingressgateway và echo-server pod. Cụ thể:
Tiếp theo, bạn hãy đợi cho Pod mới running và kiểm tra lại log. Kết quả mong muốn: tất cả các request tới đều có Source IP là của Client (IP của Terminal send request ở bên trên).