← Về danh sách bài học
Bài 14/25
🛡️ Bài 14: Network Policy
🎯 Sau bài học này, bạn sẽ:
- Hiểu Network Policy là gì
- Tạo ingress/egress rules
- Isolate pods theo namespace
1. Network Policy Là Gì?
Network Policy là "firewall" cho pods. Kiểm soát traffic vào/ra pods.
⚠️ Yêu cầu: Cần CNI hỗ trợ Network Policy (Calico, Cilium). Flannel KHÔNG hỗ trợ!
2. Deny All Ingress
# Mặc định deny tất cả ingress
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-ingress
namespace: production
spec:
podSelector: {} # Áp dụng cho tất cả pods
policyTypes:
- Ingress # Chỉ block ingress
3. Allow Từ Pods Cụ Thể
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-from-frontend
namespace: production
spec:
podSelector:
matchLabels:
app: backend # Policy cho backend pods
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend # Chỉ cho frontend truy cập
ports:
- protocol: TCP
port: 8080
4. Allow Từ Namespace
ingress:
- from:
- namespaceSelector:
matchLabels:
name: monitoring # Từ namespace monitoring
podSelector:
matchLabels:
app: prometheus
5. Egress Policy
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-dns-egress
spec:
podSelector:
matchLabels:
app: web
policyTypes:
- Egress
egress:
- to:
- namespaceSelector: {}
podSelector:
matchLabels:
k8s-app: kube-dns
ports:
- protocol: UDP
port: 53
📝 Tóm Tắt
- Network Policy: Firewall cho pods
- podSelector: Target pods
- ingress: Traffic vào
- egress: Traffic ra
- Cần CNI hỗ trợ (Calico, Cilium)