Triển khai Hubble Relay và Hubble UI để trực quan hóa luồng mạng eBPF
Chúng ta sẽ triển khai Hubble Relay để đóng vai trò cầu nối giữa các node Kubernetes và Hubble UI, giúp tập trung dữ liệu quan sát từ eBPF về một điểm duy nhất.
Trước tiên, cần áp dụng manifest cho Hubble Relay vào namespace cilium để nó lắng nghe luồng dữ liệu từ Hubble Agent.
kubectl apply -f https://raw.githubusercontent.com/cilium/hubble/master/examples/hubble-relay.yaml
Hệ thống sẽ tạo Pod hubble-relay trong namespace cilium ở trạng thái Running và bắt đầu lắng nghe cổng 4245.
Tiếp theo, triển khai Hubble UI để có giao diện trực quan hóa các luồng mạng, kết nối và gói tin.
kubectl apply -f https://raw.githubusercontent.com/cilium/hubble/master/examples/hubble-ui.yaml
Pod hubble-ui sẽ được khởi tạo và chạy trên cổng 8025, sẵn sàng hiển thị dashboard.
Để truy cập giao diện từ máy chủ local, cần expose dịch vụ Hubble UI bằng NodePort.
kubectl port-forward svc/hubble-ui 8025:8025 -n kube-system
Mở trình duyệt và truy cập http://localhost:8025, bạn sẽ thấy dashboard Hubble hiển thị các luồng mạng (Flows) giữa các Pod theo thời gian thực.
Verify: Kiểm tra trạng thái Pod và xem luồng mạng trong UI.
kubectl get pods -n kube-system | grep hubble
Kết quả mong đợi: Cả hubble-relay và hubble-ui đều ở trạng thái Running.
Cấu hình Kiali để giám sát topology và trạng thái của Service Mesh
Kiali cung cấp dashboard để xem topology ứng dụng, lưu lượng truy cập và trạng thái bảo mật của Istio. Cần cấu hình Kiali để kết nối với Kubernetes API và Istiod.
Đầu tiên, tạo namespace riêng cho Kiali để tách biệt với các thành phần khác.
kubectl create namespace istio-system
Tạo file cấu hình kiali-server.yaml tại đường dẫn /tmp/kiali-server.yaml với nội dung sau để chỉ định namespace quan sát và bật tính năng quan sát lưu lượng.
cat > /tmp/kiali-server.yaml
Áp dụng file cấu hình vừa tạo để khởi tạo Kiali Server.
kubectl apply -f /tmp/kiali-server.yaml
Kiali sẽ triển khai Pod và Service, sẵn sàng phục vụ yêu cầu trên cổng 20001.
Expose dịch vụ Kiali để truy cập từ local.
kubectl port-forward svc/kiali 20001:20001 -n istio-system
Truy cập http://localhost:20001 để vào giao diện Kiali. Nếu bạn đã triển khai Prometheus, Kiali sẽ tự động kết nối để hiển thị metric.
Verify: Kiểm tra trạng thái deployment và truy cập UI.
kubectl get pods -n istio-system | grep kiali
Kết quả mong đợi: Pod kiali ở trạng thái Running và dashboard hiển thị topology của các service đã deploy.
Kết xuất metric lưu lượng và latency từ Istio và Cilium
Để có dữ liệu cho Kiali và Hubble UI hiển thị, cần đảm bảo Prometheus được cấu hình để scrape metric từ cả Envoy (Istio) và Cilium.
Tạo file cấu hình prometheus-config.yaml tại /tmp/prometheus-config.yaml để thêm các job scrape cho Istio và Cilium.
cat > /tmp/prometheus-config.yaml
Áp dụng cấu hình này vào Prometheus (giả định bạn đang chạy Prometheus trong namespace monitoring).
kubectl apply -f /tmp/prometheus-config.yaml
Tiếp theo, tạo ServiceMonitor để Prometheus Operator tự động phát hiện và scrape metric từ Envoy proxies của các Pod đã inject Istio.
cat > /tmp/istio-service-monitor.yaml <
Điều hướng series:
Mục lục: Series: Xây dựng nền tảng Service Mesh nội bộ an toàn với Istio, Cilium và eBPF trên Kubernetes để quản lý lưu lượng mạng, bảo mật và quan sát chi tiết
« Phần 5: Xây dựng chính sách bảo mật Zero Trust với AuthorizationPolicy
Phần 7: Troubleshooting, tối ưu hiệu năng và best practices »