← Về danh sách bài học Bài 14/25

🛡️ Bài 14: Network Policy

⏱️ Thời gian: 20 phút | 📚 Độ khó: Nâng cao

🎯 Sau bài học này, bạn sẽ:

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