رفتن به محتوا
بازگشت به وبلاگ
دواپس

پالیسی‌های شبکه Kubernetes: میکرو-تقسیم‌بندی در K8s

پیاده‌سازی منابع NetworkPolicy در Kubernetes برای کنترل ترافیک Pod به Pod، ایزولاسیون Namespace و فیلترینگ Egress.

تیر ۱۴۰۴
۱۵ دقیقه مطالعه

پالیسی‌های شبکه Kubernetes: میکرو-تقسیم‌بندی در سطح Pod

به‌طور پیش‌فرض، تمام Pod‌ها می‌توانند به Pod‌های دیگر در Kubernetes دسترسی داشته باشند. منابع NetworkPolicy این را به اجازه صریح تغییر می‌دهد.

رد پیش‌فرض همه

YAML
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
  namespace: production
spec:
  podSelector: {}
  policyTypes:
    - Ingress
    - Egress

اجازه Frontend به Backend

YAML
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-backend
  namespace: production
spec:
  podSelector:
    matchLabels:
      app: backend
  ingress:
    - from:
        - podSelector:
            matchLabels:
              app: frontend
      ports:
        - protocol: TCP
          port: 8080

اجازه DNS (حیاتی!)

YAML
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-dns
  namespace: production
spec:
  podSelector: {}
  policyTypes:
    - Egress
  egress:
    - ports:
        - port: 53
          protocol: UDP
        - port: 53
          protocol: TCP

آزمایش Network Policy‌ها

BASH
kubectl run test --image=busybox -it --rm -- /bin/sh

# داخل pod آزمایشی
wget -qO- http://backend:8080/health  # باید کار کند
wget -qO- http://database:5432        # باید شکست بخورد

همیشه از یک پلاگین CNI که NetworkPolicy را اجرا می‌کند استفاده کنید: Calico، Cilium یا Antrea.