CHƯƠNG 15 · Cilium, eBPF & Networking•BÀI 59 / 80

NetworkPolicy L3/L4 và Cilium L7

Phân biệt timeout vì packet drop với HTTP 403 từ proxy.

Mạng nâng cao◷ 4 phút đọc3/4 trong chương

Nắm bản chất

Kubernetes NetworkPolicy dựa trên labels/selectors, namespace selectors và ports. Các rules có tính cho phép cộng dồn; không phải ACL có thứ tự allow/deny trực giác. CiliumNetworkPolicy bổ sung khả năng HTTP method/path restriction với Envoy proxy khi cấu hình được hỗ trợ.

Hai selectors trong cùng một from item thường kết hợp AND; hai items riêng biệt trong danh sách from tạo union (OR). L4 drop thường dẫn tới timeout, L7 reject có thể thành HTTP 403. Hãy kiểm tra policy owner và mọi policies chọn endpoint.

Luồng hoạt động

L3/L4 policy→L7 Envoy policy→HTTP verdict

Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?

Lệnh & cấu hình mẫu

kubectl apply -f policies/k8s/01-allow-only-api-to-payments.yaml
kubectl get networkpolicy -A
# Chuyển sang bài L7: bỏ broad L4 allow trước
kubectl delete -f policies/k8s/01-allow-only-api-to-payments.yaml
kubectl apply -f policies/cilium/payments-l7.yaml

Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.

Bài tập 10–20 phút

✳

Chạy bài kiểm tra Web→API→Payments và Untrusted→Payments, quan sát Hubble verdicts. Sau đó dùng HTTP GET /admin để chứng minh khác biệt L4/L7.

Lỗi dễ mắc

!

Một Pod có thể gắn label khớp policy nếu người tạo Pod có quyền. Dùng RBAC và admission để hạn chế khả năng giả danh qua labels.

Tự kiểm tra

Một L7 policy GET /health có tự chặn mọi kết nối nếu broad L4 allow vẫn tồn tại?Xem đáp án ↗

Không bảo đảm; phải đánh giá tất cả policies và mô hình cộng dồn quyền cho phép.

TÀI NGUYÊN ĐI KÈM

Học thêm qua lab

Có project thực hành đúng với chương này, kèm README và những giới hạn môi trường cần lưu ý.

↓ Tải mã nguồn thực hành chương 15
NGUỒN CHÍNH THỨC

Đối chiếu tài liệu gốc

Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.

Mở tài liệu chính thức ↗