ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ื ืื˜ื™ืฅ. ื˜ืจืึทื ืกืœ.: ื“ืขืจ ืžื—ื‘ืจ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืจืื•ื‘ืŸ ื”ืขืจื™ืกืืŸ, ื”ืื˜ ืื™ื‘ืขืจ 20 ื™ืึธืจ ื“ืขืจืคืึทืจื•ื ื’ ืื™ืŸ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ืื•ืŸ ืื™ื– ื”ื™ื™ึทื ื˜ ื“ืขืจ CTO ืื•ืŸ ืžื™ื˜-ื’ืจื™ื ื“ืขืจ ืคื•ืŸ Tufin, ืึท ืคื™ืจืžืข ื•ื•ืึธืก ืงืจื™ื™ื™ืฅ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืึธืœื™ื˜ื™ืง ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืึทืœื•ืฉืึทื ื–. ื›ืึธื˜ืฉ ืขืจ ื–ืขื˜ Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ื•ื•ื™ ืึท ื’ืึทื ืฅ ืฉื˜ืึทืจืง ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ื ืขืฅ ืกืขื’ืžืขื ื˜ืึทื˜ื™ืึธืŸ ืื™ืŸ ืึท ืงื ื•ื™ืœ, ืขืจ ืื•ื™ืš ื’ืœื•ื™ื‘ื˜ ืึทื– ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ืึทื–ื•ื™ ื’ืจื™ื ื’ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ืื™ืŸ ืคื™ืจ. ื“ืขืจ ืžืึทื˜ืขืจื™ืึทืœ (ื’ืึทื ืฅ ื•ื•ืึทืœื•ืžืึทื ืึทืก) ืื™ื– ื‘ื“ืขื” ืฆื• ืคึฟืึทืจื‘ืขืกืขืจืŸ ืกืคึผืขืฉืึทืœืึทืกืฅ 'ื•ื•ื™ืกื™ืงื™ื™ึทื˜ ืคื•ืŸ ื“ืขื ืึทืจื•ื™ืกื’ืขื‘ืŸ ืื•ืŸ ื”ืขืœืคืŸ ื–ื™ื™ ืžืึทื›ืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–.

ื”ื™ื™ึทื ื˜, ืคื™ืœืข ืงืึธืžืคึผืึทื ื™ืขืก ื–ืขื ืขืŸ ื™ื ืงืจื™ืกื™ื ื’ืœื™ ื˜ืฉื•ื–ื™ื ื’ Kubernetes ืฆื• ืœื•ื™ืคืŸ ื–ื™ื™ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–. ื“ืขืจ ืื™ื ื˜ืขืจืขืก ืื™ืŸ ื“ืขื ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืื™ื– ืึทื–ื•ื™ ื”ื•ื™ืš ืึทื– ืขื˜ืœืขื›ืข ืจื•ืคืŸ Kubernetes "ื“ื™ ื ื™ื™ึทืข ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ืคึฟืึทืจ ื“ื™ ื“ืึทื˜ืŸ ืฆืขื ื˜ืขืจ." ื‘ื™ืกืœืขื›ื•ื•ื™ื™ึทื–, Kubernetes (ืึธื“ืขืจ K8s) ืื™ื– ืึธื ื”ื™ื™ื‘ ืฆื• ื–ื™ื™ืŸ ื‘ืืžืขืจืงื˜ ื•ื•ื™ ืึท ืงืจื™ื˜ื™ืฉ ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ื’ืขืฉืขืคื˜, ื•ื•ืึธืก ืจื™ืงื•ื•ื™ื™ืขืจื– ื“ื™ ืึธืจื’ืึทื ื™ื–ืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ืขืจื•ื•ืึทืงืกืŸ ื’ืขืฉืขืคื˜ ืคึผืจืึทืกืขืกืึทื–, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ื ืขืฅ ื–ื™ื›ืขืจื”ื™ื™ื˜.

ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก ื•ื•ืึธืก ื–ืขื ืขืŸ ืคึผืึทื–ืึทืœื“ ื“ื•ืจืš ืืจื‘ืขื˜ืŸ ืžื™ื˜ Kubernetes, ื“ื™ ืคืึทืงื˜ื™ืฉ ื”ืชื’ืœื•ืช ืงืขืŸ ื–ื™ื™ืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ืคึผืึธืœื™ื˜ื™ืง ืคื•ืŸ ื“ื™ ืคึผืœืึทื˜ืคืึธืจืžืข: ืœืึธื–ืŸ ืึทืœืฅ.

ื“ืขืจ ืคื™ืจืขืจ ื•ื•ืขื˜ ื”ืขืœืคึฟืŸ ืื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ื™ื ืขืจืœืขืš ืกื˜ืจื•ืงื˜ื•ืจ ืคื•ืŸ ื ืขืฅ ืคึผืึทืœืึทืกื™ื–; ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ื–ื™ื™ ืึทื ื“ืขืจืฉ ืคื•ืŸ ื“ื™ ื›ึผืœืœื™ื ืคึฟืึทืจ ืจืขื’ื•ืœืขืจ ืคื™ืจืขื•ื•ืึทืœืœืก. ืขืก ื•ื•ืขื˜ ืื•ื™ืš ื“ืขืงืŸ ืขื˜ืœืขื›ืข ืคึผื™ื˜ืคืึธืœื– ืื•ืŸ ืฆื•ืฉื˜ืขืœืŸ ืจืขืงืึทืžืึทื ื“ื™ื™ืฉืึทื ื– ืฆื• ื‘ืึทื•ื•ืึธืจืขื ืขืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ Kubernetes.

Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื–

ื“ื™ ืงื•ื‘ืขืจื ืขื˜ืขืก ื ืขืฅ ืคึผืึธืœื™ื˜ื™ืง ืžืขืงืึทื ื™ื–ืึทื ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืคื™ืจืŸ ื“ื™ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื“ื™ืคึผืœื•ื™ื“ ืื•ื™ืฃ ื“ืขืจ ืคึผืœืึทื˜ืคืึธืจืžืข ืื™ืŸ ื“ื™ ื ืขืฅ ืฉื™ื›ื˜ืข (ื“ื™ ื“ืจื™ื˜ ืื™ืŸ ื“ื™ OSI ืžืึธื“ืขืœ). ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ืคืขืœืŸ ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืึทื•ื•ืึทื ืกื™ืจื˜ืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ ืžืึธื“ืขืจืŸ ืคื™ื™ืจื•ื•ืึทืœืœืก, ืึทื–ืึท ื•ื•ื™ OSI Layer 7 ืขื ืคืึธืจืกืžืึทื ื˜ ืื•ืŸ ืกืึทืงืึธื ืข ื“ื™ื˜ืขืงืฉืึทืŸ, ืึธื‘ืขืจ ื–ื™ื™ ืฆื•ืฉื˜ืขืœืŸ ืึท ื™ืงืขืจื“ื™ืง ืžื“ืจื’ื” ืคื•ืŸ ื ืขืฅ ื–ื™ื›ืขืจื”ื™ื™ื˜ ื•ื•ืึธืก ืื™ื– ืึท ื’ื•ื˜ ืกื˜ืึทืจื˜ื™ื ื’ ืคื•ื ื˜.

ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ืงืึธื ื˜ืจืึธืœ ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืฆื•ื•ื™ืฉืŸ ืคึผืึธื“ืก

ื•ื•ืขืจืงืœืึธื•ื“ื– ืื™ืŸ ืงื•ื‘ืขืจื ืขื˜ืขืก ื–ืขื ืขืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืื™ื‘ืขืจ ืคึผืึธื“ืก, ื•ื•ืึธืก ืฆื•ื ื•ื™ืคืฉื˜ืขืœื  ื–ื™ืš ืคื•ืŸ ืื™ื™ืŸ ืึธื“ืขืจ ืžืขืจ ืงืึทื ื˜ื™ื™ื ืขืจื– ื“ื™ืคึผืœื•ื™ื“ ืฆื•ื–ืึทืžืขืŸ. Kubernetes ืึทืกื™ื™ื ื– ื™ืขื“ืขืจ ืคึผืึธื“ ืึทืŸ IP ืึทื“ืจืขืก ื•ื•ืึธืก ืื™ื– ืฆื•ื˜ืจื™ื˜ืœืขืš ืคึฟื•ืŸ ืื ื“ืขืจืข ืคึผืึธื“ืก. Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ืฉื˜ืขืœืŸ ืึทืงืกืขืก ืจืขื›ื˜ ืคึฟืึทืจ ื’ืจื•ืคึผืขืก ืคื•ืŸ ืคึผืึธื“ืก ืื™ืŸ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขื’ ื•ื•ื™ ื–ื™ื›ืขืจื”ื™ื™ื˜ ื’ืจื•ืคึผืขืก ืื™ืŸ ื“ื™ ื•ื•ืึธืœืงืŸ ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทืงืกืขืก ืฆื• ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ื™ื ืกื˜ืึทื ืกื™ื–.

ื“ืขืคื™ื ื™ืจืŸ ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื–

ื•ื•ื™ ืื ื“ืขืจืข Kubernetes ืจืขืกื•ืจืกืŸ, ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ื–ืขื ืขืŸ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ YAML. ืื™ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืื•ื ื˜ืŸ, ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ balance ืฆื•ื˜ืจื™ื˜ ืฆื• postgres:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: balance
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

(ื ืื˜ื™ืฅ. ื˜ืจืึทื ืกืœ.: ื“ืขื ืกืงืจืขืขื ืฉืึธื˜, ื•ื•ื™ ืึทืœืข ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ืขื ืœืขืš ืึธื ืขืก, ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืืฉืืคืŸ ื ื™ืฉื˜ ื ื™ืฆืŸ ื’ืขื‘ื•ื™ืจืŸ Kubernetes ืžื›ืฉื™ืจื™ื, ืึธื‘ืขืจ ืžื™ื˜ ื“ื™ Tufin Orca ื’ืขืฆื™ื™ึทื’, ื•ื•ืึธืก ืื™ื– ื“ืขื•ื•ืขืœืึธืคึผืขื“ ื“ื•ืจืš ื“ื™ ืคื™ืจืžืข ืคื•ืŸ โ€‹โ€‹ื“ืขืจ ืžื—ื‘ืจ ืคื•ืŸ ื“ืขืจ ืึธืจื™ื’ื™ื ืขืœ ืึทืจื˜ื™ืงืœ ืื•ืŸ ื•ื•ืึธืก ืื™ื– ื“ืขืจืžืื ื˜ ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ืขื ืžืึทื˜ืขืจื™ืึทืœ.)

ืฆื• ื“ืขืคื™ื ื™ืจืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื ืขืฅ ืคึผืึธืœื™ื˜ื™ืง, ืื™ืจ ื“ืึทืจืคึฟืŸ ื™ืงืขืจื“ื™ืง ื•ื•ื™ืกืŸ ืคื•ืŸ YAML. ื“ื™ ืฉืคึผืจืึทืš ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื™ื ื“ืขื ื˜ื™ื™ืฉืึทืŸ (ืกืคึผืขืกื™ืคื™ืขื“ ื“ื•ืจืš ืกืคึผื™ื™ืกืึทื– ืืœื ื•ื•ื™ ื˜ืึทื‘ืก). ืึทืŸ ื™ื ื“ืขื ื˜ื™ื“ ืขืœืขืžืขื ื˜ ื’ืขื”ืขืจื˜ ืฆื• ื“ื™ ื ื™ืจืึทืกื˜ ื™ื ื“ืขื ื˜ื™ื“ ืขืœืขืžืขื ื˜ ืื•ื™ื‘ืŸ ืื™ื. ื ื ื™ื™ึทืข ืจืฉื™ืžื” ืขืœืขืžืขื ื˜ ื”ื™ื™ื‘ื˜ ืžื™ื˜ ืึท ื‘ื™ืคืขืŸ, ืึทืœืข ืื ื“ืขืจืข ืขืœืขืžืขื ื˜ืŸ ื”ืึธื‘ืŸ ื“ื™ ืคืึธืจืขื ืฉืœื™ืกืœ-ื•ื•ืขืจื˜.

ื•ื•ื™ื™ืœ ื“ื™ืกืงืจื™ื™ื‘ื“ ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ืื™ืŸ YAML, ื ื•ืฆืŸ kubectlืฆื• ืฉืึทืคึฟืŸ ืขืก ืื™ืŸ ื“ื™ ืงื ื•ื™ืœ:

kubectl create -f policy.yaml

ื ืขืฅ ืคึผืึธืœื™ื˜ื™ืง ืกืคึผืขืกื™ืคื™ืงืึทื˜ื™ืึธืŸ

ื“ื™ Kubernetes ื ืขืฅ ืคึผืึธืœื™ื˜ื™ืง ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ื›ื•ืœืœ ืคื™ืจ ืขืœืขืžืขื ื˜ืŸ:

  1. podSelector: ื“ื™ืคื™ื™ื ื– ื“ื™ ืคึผืึธื“ืก ืึทืคืขืงื˜ืึทื“ ื“ื•ืจืš ื“ืขื ืคึผืึธืœื™ื˜ื™ืง (ื˜ืึทืจื’ืึทืฅ) - ืคืืจืœืื ื’ื˜;
  2. policyTypes: ื™ื ื“ื™ืงื™ื™ืฅ ื•ื•ืึธืก ื˜ื™ื™ืคึผืก ืคื•ืŸ ืคึผืึทืœืึทืกื™ื– ื–ืขื ืขืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ืขื: ื™ื ื’ืจืขืกืก ืื•ืŸ / ืึธื“ืขืจ ืขื’ืจืขืกืก - ืึทืคึผืฉืึทื ืึทืœ, ืึธื‘ืขืจ ืื™ืš ืจืขืงืึธืžืขื ื“ื™ืจืŸ ื‘ืคื™ืจื•ืฉ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืขืก ืื™ืŸ ืึทืœืข ืงืึทืกืขืก;
  3. ingress: ื“ื™ืคื™ื™ื ื– ืขืจืœื•ื™ื‘ื˜ ื™ื ืงืึทืžื™ื ื’ ืคืึทืจืงืขืจ ืฆื• ืฆื™ืœ ืคึผืึธื“ืก - ืึทืคึผืฉืึทื ืึทืœ;
  4. egress: ื“ื™ืคื™ื™ื ื– ืขืจืœื•ื™ื‘ื˜ ืึทื•ื˜ื’ืึธื•ื™ื ื’ ืคืึทืจืงืขืจ ืคื•ืŸ ืฆื™ืœ ืคึผืึธื“ืก ืื™ื– ืึทืคึผืฉืึทื ืึทืœ.

ื‘ื™ื™ึทืฉืคึผื™ืœ ื’ืขื ื•ืžืขืŸ ืคื•ืŸ ื“ื™ Kubernetes ื•ื•ืขื‘ื–ื™ื™ื˜ืœ (ืื™ืš ืจื™ืคึผืœื™ื™ืกื˜ role ืื•ื™ืฃ app), ื•ื•ื™ื™ื–ื˜ ื•ื•ื™ ืึทืœืข ืคื™ืจ ืขืœืขืžืขื ื˜ืŸ ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:    # <<<
    matchLabels:
      app: db
  policyTypes:    # <<<
  - Ingress
  - Egress
  ingress:        # <<<
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
    - namespaceSelector:
        matchLabels:
          project: myproject
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 6379
  egress:         # <<<
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
    ports:
    - protocol: TCP
      port: 5978

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก
ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืึทืœืข ืคื™ืจ ืขืœืขืžืขื ื˜ืŸ ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืฆื• ื–ื™ื™ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜. ืขืก ืื™ื– ื‘ืœื•ื™ื– ืžืึทื ื“ืึทื˜ืึธืจื™ podSelector, ืื ื“ืขืจืข ืคึผืึทืจืึทืžืขื˜ืขืจืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ื™ ื’ืขื•ื•ืืœื˜.

ืื•ื™ื‘ ืื™ืจ ืคืึทืจืœืึธื–ืŸ policyTypes, ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ื•ื•ืขื˜ ื–ื™ื™ืŸ ื™ื ื˜ืขืจืคึผืจืึทื˜ืึทื“ ื•ื•ื™ ื’ื™ื™ื˜:

  • ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืขืก ืื™ื– ืื ื’ืขื ื•ืžืขืŸ ืึทื– ืขืก ื“ื™ืคื™ื™ื ื– ื“ื™ ื™ื ื’ืจืขืกืก ื–ื™ื™ึทื˜. ืื•ื™ื‘ ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ื˜ื•ื˜ ื ื™ืฉื˜ ื–ืึธื’ืŸ ื“ืขื ื‘ืคื™ืจื•ืฉ, ื“ื™ ืกื™ืกื˜ืขื ื•ื•ืขื˜ ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ืึทืœืข ืคืึทืจืงืขืจ ืื™ื– ืคึผืจืึธื•ื›ื™ื‘ืึทื˜ืึทื“.
  • ื“ื™ ื ืึทื˜ื•ืจ ืื•ื™ืฃ ื“ื™ ืขื’ืจืขืกืก ื–ื™ื™ึทื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืืฉืœืืกืŸ ื“ื•ืจืš ื“ืขื ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืึธื“ืขืจ ืึทื•ื•ืขืง ืคื•ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืขื’ืจืขืกืก ืคึผืึทืจืึทืžืขื˜ืขืจ.

ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ืžื™ืกื˜ื™ื™ืงืก ืื™ืš ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืฉื˜ืขื ื“ื™ืง ืžืึทื›ืŸ ืขืก ื™ืงืกืคึผืœื™ืกืึทื˜ policyTypes.

ืœื•ื™ื˜ ืฆื• ื“ื™ ืื•ื™ื‘ืŸ ืœืึธื’ื™ืง, ืื•ื™ื‘ ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ingress ืื•ืŸ / ืึธื“ืขืจ egress ืื™ื‘ืขืจื’ืขื”ื™ืคึผืขืจื˜, ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ื•ื•ืขื˜ ืœื™ื™ืงืขื ืขืŸ ืึทืœืข ืคืึทืจืงืขืจ (ื–ืขืŸ "ืกื˜ืจื™ืคึผื™ื ื’ ื”ืขืจืฉืŸ" ืื•ื ื˜ืŸ).

ืคืขืœื™ืงื™ื™ึทื˜ ืคึผืึธืœื™ื˜ื™ืง ืื™ื– ืœืึธื–ืŸ

ืื•ื™ื‘ ืงื™ื™ืŸ ืคึผืึทืœืึทืกื™ื– ื–ืขื ืขืŸ ื“ื™ืคื™ื™ื ื“, Kubernetes ืึทืœืึทื•ื– ืึทืœืข ืคืึทืจืงืขืจ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜. ืึทืœืข ืคึผืึธื“ืก ืงืขื ืขืŸ ืคืจื™ืœื™ ื•ื•ืขืงืกืœ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืฆื•ื•ื™ืฉืŸ ื–ื™ืš. ืคึฟื•ืŸ ืึท ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืขืจืกืคึผืขืงื˜ื™ื•ื•, ื“ืึธืก ืงืขืŸ ื•ื™ืกืงื•ืžืขืŸ ืงืึทื•ื ื˜ืขืจื™ื ื˜ื•ืึทื˜ื™ื•ื•, ืึธื‘ืขืจ ื’ืขื“ืขื ืงื˜ ืึทื– Kubernetes ืื™ื– ืขืจื™ื“ื–ืฉื ืึทืœื™ ื“ื™ื–ื™ื™ื ื“ ื“ื•ืจืš ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืฆื• ื’ืขื‘ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื™ื ื˜ืขืจืึธืคึผืขืจืึทื‘ื™ืœื™ื˜ื™. ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืฉืคึผืขื˜ืขืจ.

ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื–

Namespaces ื–ืขื ืขืŸ ื“ื™ Kubernetes ืžื™ื˜ืึทืจื‘ืขื˜ ืžืขืงืึทื ื™ื–ืึทื. ื–ื™ื™ ื–ืขื ืขืŸ ื“ื™ื–ื™ื™ื ื“ ืฆื• ื™ื–ืึธืœื™ืจืŸ ืœืึทื“ื–ืฉื™ืงืึทืœ ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ ืคื•ืŸ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ, โ€‹โ€‹ื‘ืฉืขืช ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืฆื•ื•ื™ืฉืŸ ืกืคึผื™ื™ืกืึทื– ืื™ื– ืขืจืœื•ื™ื‘ื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜.

ื•ื•ื™ ืจื•ื‘ึฟ Kubernetes ืงืึทืžืคึผืึธื•ื ืึทื ืฅ, ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ืœืขื‘ืŸ ืื™ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื ืึทืžืขืกืคึผืึทืกืข. ืื™ืŸ ื“ื™ ื‘ืœืึธืง metadata ืื™ืจ ืงืขื ืขืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื•ื•ืึธืก ืคึผืœืึทืฅ ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ื’ืขื”ืขืจื˜ ืฆื•:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: my-namespace  # <<<
spec:
...

ืื•ื™ื‘ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข ืื™ื– ื ื™ืฉื˜ ื‘ืคื™ืจื•ืฉ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ื™ ืžืขื˜ืึทื“ืึทื˜ืึท, ื“ื™ ืกื™ืกื˜ืขื ื•ื•ืขื˜ ื ื•ืฆืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ kubectl (ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ namespace=default):

kubectl apply -n my-namespace -f namespace.yaml

ืื™ืš ืจืขืงืืžืขื ื“ื™ืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื ืึธืžืขืŸ ืกืคึผืึทืกื™ืคื™ืงืœื™, ืกื™ื™ึทื“ืŸ ืื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืึท ืคึผืึธืœื™ื˜ื™ืง ื•ื•ืึธืก ื˜ืึทืจื’ืึทืฅ ืงื™ื™ืคืœ ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื– ืื™ืŸ ืึทืžืึธืœ.

ื”ื•ื™ืคึผื˜ ืขืœืขืžืขื ื˜ podSelector ืื™ืŸ ื“ืขืจ ืคึผืึธืœื™ื˜ื™ืง ื•ื•ืขื˜ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืคึผืึธื“ืก ืคื•ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข ืฆื• ื•ื•ืึธืก ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ื’ืขื”ืขืจื˜ (ืขืก ืื™ื– ื’ืขืœื™ื™ืงื ื˜ ืึทืงืกืขืก ืฆื• ืคึผืึธื“ืก ืคื•ืŸ ืืŸ ืื ื“ืขืจ ื ืึทืžืขืกืคึผืึทืกืข).

ืกื™ืžื™ืœืึทืจืœื™, ืคึผืึธื“ืกืขืœืขืงื˜ืึธืจืก ืื™ืŸ ืึทื’ืจืขืกื™ื•ื• ืื•ืŸ ืึทืจื•ื™ืกื’ืึทื ื’ ื‘ืœืึทืงืก ืงืขื ืขืŸ ื‘ืœื•ื™ื– ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืคึผืึธื“ืก ืคื•ืŸ ื–ื™ื™ืขืจ ืื™ื™ื’ืŸ ื ืึธืžืขืŸ ืคึผืœืึทืฅ, ืกื™ื™ึทื“ืŸ ืคื•ืŸ ืงื•ืจืก ืื™ืจ ืคืึทืจื‘ื™ื ื“ืŸ ื–ื™ื™ ืžื™ื˜ namespaceSelector (ื“ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื™ืกืงืึทืกื˜ ืื™ืŸ ื“ื™ ืึธืคึผื˜ื™ื™ืœื•ื ื’ "ืคื™ืœื˜ืขืจ ื“ื•ืจืš ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื– ืื•ืŸ ืคึผืึธื“ืก").

ืคึผืึธืœื™ื˜ื™ืง ื ืึทืžื™ื ื’ ื›ึผืœืœื™ื

ืคึผืึธืœื™ื˜ื™ืง ื ืขืžืขืŸ ื–ืขื ืขืŸ ื™ื™ื ืฆื™ืง ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื ืึทืžืขืกืคึผืึทืกืข. ืขืก ืงืขื ืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืฆื•ื•ื™ื™ ืคึผืึทืœืึทืกื™ื– ืžื™ื˜ ื“ื™ ื–ืขืœื‘ืข ื ืึธืžืขืŸ ืื™ืŸ ื“ื™ ื–ืขืœื‘ืข ืคึผืœืึทืฅ, ืึธื‘ืขืจ ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคึผืึทืœืึทืกื™ื– ืžื™ื˜ ื“ื™ ื–ืขืœื‘ืข ื ืึธืžืขืŸ ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืกืคึผื™ื™ืกืึทื–. ื“ืึธืก ืื™ื– ื ื•ืฆื™ืง ื•ื•ืขืŸ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืฆื•ืœื™ื™ื’ืŸ ื“ื™ ื–ืขืœื‘ืข ืคึผืึธืœื™ื˜ื™ืง ืื™ื‘ืขืจ ืงื™ื™ืคืœ ืกืคึผื™ื™ืกืึทื–.

ืื™ืš ืกืคึผืขืฆื™ืขืœ ื•ื•ื™ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ื ืึทืžื™ื ื’ ืžืขื˜ื”ืึธื“ืก. ืขืก ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ืงืึทืžื‘ื™ื™ื ื™ื ื’ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ื ืึธืžืขืŸ ืžื™ื˜ ื“ื™ ืฆื™ืœ ืคึผืึธื“ืก. ืœืžืฉืœ:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres  # <<<
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืœืึทื‘ืขืœืก

ืื™ืจ ืงืขื ืขืŸ ืฆื•ื˜ืฉืขืคึผืขืŸ ืžื ื”ื’ ืœืึทื‘ืขืœืก ืฆื• Kubernetes ืึทื‘ื“ื–ืฉืขืงืฅ, ืึทื–ืึท ื•ื•ื™ ืคึผืึธื“ืก ืื•ืŸ ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื–. ืœืึทื‘ืขืœืก (ืœืึทื‘ืขืœืก - ื˜ืึทื’ืก) ื–ืขื ืขืŸ ื“ื™ ืขืงื•ื•ื™ื•ื•ืึทืœืขื ื˜ ืคื•ืŸ ื˜ืึทื’ืก ืื™ืŸ ื“ื™ ื•ื•ืึธืœืงืŸ. Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ื ื•ืฆืŸ ืœืึทื‘ืขืœืก ืฆื• ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืคึผืึธื“ืกืฆื• ื•ื•ืึธืก ื–ื™ื™ ืฆื•ืœื™ื™ื’ืŸ:

podSelector:
  matchLabels:
    role: db

โ€ฆ ืึธื“ืขืจ ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื–ืฆื• ื•ื•ืึธืก ื–ื™ื™ ืฆื•ืœื™ื™ื’ืŸ. ื“ืขืจ ื‘ื™ื™ืฉืคึผื™ืœ ืกืึทืœืขืงืฅ ืึทืœืข ืคึผืึธื“ืก ืื™ืŸ ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื– ืžื™ื˜ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืœืึทื‘ืขืœืก:

namespaceSelector:
  matchLabels:
    project: myproject

ืื™ื™ืŸ ื•ื•ืึธืจืขื ืขืŸ: ื•ื•ืขืŸ ื ื™ืฆืŸ namespaceSelector ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ื“ื™ ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื– ืื™ืจ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืึทื ื˜ื”ืึทืœื˜ืŸ ื“ื™ ืจื™ื›ื˜ื™ืง ืคื™ืจืžืข. ื–ื™ื™ืŸ ืึทื•ื•ืขืจ ืึทื– ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ื ืึทืžืขืกืคึผืึทืกืขืก ืึทื–ืึท ื•ื•ื™ default ะธ kube-system, ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ื˜ืึธืŸ ื ื™ื˜ ืึทื ื˜ื”ืึทืœื˜ืŸ ืœืึทื‘ืขืœืก.

ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ื’ืŸ ืึท ืคื™ืจืžืข ืฆื• ืึท ืคึผืœืึทืฅ ื•ื•ื™ ื“ืึธืก:

kubectl label namespace default namespace=default

ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ื ืึธืžืขืŸ ืกืคึผื™ื™ืก ืื™ืŸ ื“ื™ ืึธืคึผื˜ื™ื™ืœื•ื ื’ metadata ื–ืึธืœ ืึธืคึผืฉื™ืงืŸ ืฆื• ื“ื™ ืคืึทืงื˜ื™ืฉ ืคึผืœืึทืฅ ื ืึธืžืขืŸ, ื ื™ืฉื˜ ื“ื™ ืคื™ืจืžืข:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default   # <<<
spec:
...

ืžืงื•ืจ ืื•ืŸ ื“ืขืกื˜ื™ื ื™ื™ืฉืึทืŸ

ืคื™ืจืขื•ื•ืึทืœืœ ืคึผืึทืœืึทืกื™ื– ืฆื•ื ื•ื™ืคืฉื˜ืขืœื  ื–ื™ืš ืคื•ืŸ ื›ึผืœืœื™ื ืžื™ื˜ ืงื•ื•ืืœืŸ ืื•ืŸ ื“ืขืกื˜ืึทื ื™ื™ืฉืึทื ื–. Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ื–ืขื ืขืŸ ื“ื™ืคื™ื™ื ื“ ืคึฟืึทืจ ืึท ืฆื™ืœ - ืึท ืกื›ื•ื ืคื•ืŸ ืคึผืึธื“ืก ืฆื• ื•ื•ืึธืก ื–ื™ื™ ืฆื•ืœื™ื™ื’ืŸ - ืื•ืŸ ื“ืขืžืึธืœื˜ ืฉื˜ืขืœืŸ ื›ึผืœืœื™ื ืคึฟืึทืจ ื™ื ื’ืจืขืกืก ืื•ืŸ / ืึธื“ืขืจ ื™ื’ืจืขืกืก ืคืึทืจืงืขืจ. ืื™ืŸ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ืฉืคึผื™ืœ, ื“ื™ ืฆื™ืœ ืคื•ืŸ ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึทืœืข ืคึผืึธื“ืก ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข default ืžื™ื˜ ืคื™ืจืžืข ืžื™ื˜ ืฉืœื™ืกืœ app ืื•ืŸ ื“ื™ ื•ื•ืขืจื˜ db:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: db   # <<<
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
    - namespaceSelector:
        matchLabels:
          project: myproject
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 6379
  egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
    ports:
    - protocol: TCP
      port: 5978

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก
ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืกื•ื‘ืกืขืงืฆื™ืข ingress ืื™ืŸ ื“ืขื ืคึผืึธืœื™ื˜ื™ืง, ืึธืคึผืขื ืก ื™ื ืงืึทืžื™ื ื’ ืคืึทืจืงืขืจ ืฆื• ื“ื™ ืฆื™ืœ ืคึผืึธื“ืก. ืื™ืŸ ืื ื“ืขืจืข ื•ื•ืขืจื˜ืขืจ, ื™ื ื’ืจืขืกืก ืื™ื– ื“ืขืจ ืžืงื•ืจ ืื•ืŸ ืฆื™ืœ ืื™ื– ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ื“ืขืกื˜ื™ื ื™ื™ืฉืึทืŸ. ืคึผื•ื ืงื˜ ืึทื–ื•ื™, ืขื’ืจืขืกืก ืื™ื– ื“ื™ ื“ืขืกื˜ื™ื ื™ื™ืฉืึทืŸ ืื•ืŸ ืฆื™ืœ ืื™ื– ื–ื™ื™ึทืŸ ืžืงื•ืจ.

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ื“ืึธืก ืื™ื– ืขืงื•ื•ื™ื•ื•ืึทืœืขื ื˜ ืฆื• ืฆื•ื•ื™ื™ ืคื™ื™ืจื•ื•ืึทืœ ื›ึผืœืœื™ื: ื™ื ื’ืจืขืกืก โ†’ ืฆื™ืœ; ืฆื™ืœ โ†’ ืึทืจื•ื™ืกื’ืึทื ื’.

Egress ืื•ืŸ DNS (ื•ื•ื™ื›ื˜ื™ืง!)

ื“ื•ืจืš ืœื™ืžื™ื˜ืขื“ ืึทื•ื˜ื’ืึธื•ื™ื ื’ ืคืึทืจืงืขืจ, ื‘ืึทืฆืึธืœืŸ ืกืคึผืขืฆื™ืขืœ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜ ืฆื• ื“ื ืก - Kubernetes ื ื™ืฆื˜ ื“ืขื ื“ื™ื ืกื˜ ืฆื• ืžืึทืคึผืข ื‘ืึทื“ื™ื ื•ื ื’ืก ืฆื• IP ืึทื“ืจืขืกืขืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ืคืืœื’ืขื ื“ืข ืคึผืึธืœื™ื˜ื™ืง ื•ื•ืขื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ ื•ื•ื™ื™ึทืœ ืื™ืจ ื”ืึธื˜ ื ื™ืฉื˜ ืขืจืœื•ื™ื‘ื˜ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ balance ืฆื•ื˜ืจื™ื˜ ื“ื ืก:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  policyTypes:
  - Egress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืื™ืจ ืงืขื ืขืŸ ืคืึทืจืจื™ื›ื˜ืŸ ืขืก ื“ื•ืจืš ืขืคืŸ ืึทืงืกืขืก ืฆื• ื“ื™ ื“ื ืก ื“ื™ื ืกื˜:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:               # <<<
    ports:            # <<<
    - protocol: UDP   # <<<
      port: 53        # <<<
  policyTypes:
  - Egress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืœืขืฆื˜ืข ืขืœืขืžืขื ื˜ to ืื™ื– ืœื™ื™ื“ื™ืง, ืื•ืŸ ื“ืขืจื™ื‘ืขืจ ืขืก ืžื™ื ืึทืฆืึทื“ ืกืึทืœืขืงืฅ ืึทืœืข ืคึผืึธื“ืก ืื™ืŸ ืึทืœืข ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื–, ื“ืขืจืœื•ื™ื‘ื ื“ื™ืง balance ืฉื™ืงืŸ ื“ื ืก ืงื•ื•ื™ืจื™ื– ืฆื• ื“ื™ ืฆื•ื ืขืžืขืŸ Kubernetes ื“ื™ื ืกื˜ (ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ื“ื™ ืคึผืœืึทืฅ kube-system).

ื“ืขื ืฆื•ื’ืึทื ื’ ืึทืจื‘ืขื˜, ืึธื‘ืขืจ ืขืก ืฆื•ืคื™ืœ ืคึผืขืจืžื™ืกื™ื•ื• ืื•ืŸ ื™ื ืกืึทืงื™ืขืจ, ื•ื•ื™ื™ึทืœ ืขืก ืึทืœืึทื•ื– ื“ื ืก ืงื•ื•ื™ืจื™ื– ืฆื• ื–ื™ื™ืŸ ื“ื™ืจืขืงื˜ืขื“ ืึทืจื•ื™ืก ื“ื™ ืงื ื•ื™ืœ.

ืื™ืจ ืงืขื ืขืŸ ืคึฟืึทืจื‘ืขืกืขืจืŸ ืขืก ืื™ืŸ ื“ืจื™ื™ ืกืึทืงืกืขืกื™ื•ื• ืกื˜ืขืคึผืก.

1. ืœืึธื–ืŸ ื“ื ืก ืงื•ื•ื™ืจื™ื– ื‘ืœื•ื™ื– ื™ืŸ ืงื ื•ื™ืœ ื“ื•ืจืš ืึทื“ื™ื ื’ namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:
    - namespaceSelector: {} # <<<
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

2. ืœืึธื–ืŸ ื“ื ืก ืงื•ื•ื™ืจื™ื– ื‘ืœื•ื™ื– ืื™ืŸ ื ืึทืžืขืกืคึผื™ื™ืก kube-system.

ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ื’ืŸ ืึท ืคื™ืจืžืข ืฆื• ื“ื™ ื ืึธืžืขืŸ kube-system: kubectl label namespace kube-system namespace=kube-system - ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ืขืก ืึทืจืึธืคึผ ืื™ืŸ ืคึผืึธืœื™ื˜ื™ืง ื ื™ืฆืŸ namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:
    - namespaceSelector:         # <<<
        matchLabels:             # <<<
          namespace: kube-system # <<<
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

3. ืคึผืึทืจืึทื ืึธื™ื“ ืžืขื ื˜ืฉืŸ ืงืขื ืขืŸ ื’ื™ื™ืŸ ืืคื™ืœื• ื•ื•ื™ื™ึทื˜ืขืจ ืื•ืŸ ื‘ืึทื’ืจืขื ืขืฆืŸ ื“ื ืก ืงื•ื•ื™ืจื™ื– ืฆื• ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื“ื ืก ื“ื™ื ืกื˜ ืื™ืŸ kube-system. ื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ "ืคื™ืœื˜ืขืจ ื“ื•ืจืš ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื– ืื•ืŸ ืคึผืึธื“ืก" ื•ื•ืขื˜ ื–ืึธื’ืŸ ืื™ืจ ื•ื•ื™ ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ื“ืขื.

ืืŸ ืื ื“ืขืจ ืึธืคึผืฆื™ืข ืื™ื– ืฆื• ืกืึธืœื•ื•ืข DNS ืื•ื™ืฃ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข ืžื“ืจื’ื”. ืื™ืŸ ื“ืขื ืคืึทืœ, ืขืก ื•ื•ืขื˜ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื’ืขืขืคื ื˜ ืคึฟืึทืจ ื™ืขื“ืขืจ ื“ื™ื ืกื˜:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.dns
  namespace: default
spec:
  podSelector: {} # <<<
  egress:
  - to:
    - namespaceSelector: {}
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

ืœื™ื™ื“ื™ืง podSelector ืกืึทืœืขืงืฅ ืึทืœืข ืคึผืึธื“ืก ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข.

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืขืจืฉื˜ืขืจ ื’ืœื™ื™ึทื›ืŸ ืื•ืŸ ื”ืขืจืฉืŸ ืกื“ืจ

ืื™ืŸ ืงืึทื ื•ื•ืขื ืฉืึทื ืึทืœ ืคื™ืจืขื•ื•ืึทืœืœืก, ื“ืขืจ ืงืึทืžืฃ (ืึทืœืึทื• ืึธื“ืขืจ ืึธืคึผืœื™ื™ืงืขื ืขืŸ) ืื•ื™ืฃ ืึท ืคึผืึทืงืึทื˜ ืื™ื– ื‘ืืฉืœืืกืŸ ื“ื•ืจืš ื“ืขืจ ืขืจืฉื˜ืขืจ ื”ืขืจืฉืŸ ืึทื– ืขืก ืกืึทื˜ื™ืกืคื™ื™ื–. ืื™ืŸ Kubernetes, ื“ืขืจ ืกื“ืจ ืคื•ืŸ ืคึผืึทืœืึทืกื™ื– ื˜ื•ื˜ ื ื™ืฉื˜ ืขื ื™ืŸ.

ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ื•ื•ืขืŸ ืงื™ื™ืŸ ืคึผืึทืœืึทืกื™ื– ื–ืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžื˜, ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืฆื•ื•ื™ืฉืŸ ืคึผืึธื“ืก ื–ืขื ืขืŸ ืขืจืœื•ื™ื‘ื˜ ืื•ืŸ ื–ื™ื™ ืงืขื ืขืŸ ืคืจื™ืœื™ ื•ื•ืขืงืกืœ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข. ืึทืžืึธืœ ืื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืคืึธืจืžื•ืœื™ืจืŸ ืคึผืึทืœืึทืกื™ื–, โ€‹โ€‹ื™ืขื“ืขืจ ืคึผืึธื“ ืึทืคืขืงื˜ืึทื“ ื“ื•ืจืš ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ ืื™ื™ื ืขืจ ืคื•ืŸ ื–ื™ื™ ื•ื•ืขืจื˜ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ืœื•ื™ื˜ ื“ื™ ื“ื™ืกื“ื–ืฉื•ื ืงื˜ื™ืึธืŸ (ืœืึทื“ื–ืฉื™ืงืึทืœ OR) ืคื•ืŸ ืึทืœืข ื“ื™ ืคึผืึทืœืึทืกื™ื– ื•ื•ืึธืก ื”ืึธื‘ืŸ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ืขืก. ืคึผืึธื“ืก ื•ื•ืึธืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืึทืคืขืงื˜ืึทื“ ื“ื•ืจืš ืงื™ื™ืŸ ืคึผืึธืœื™ื˜ื™ืง ื‘ืœื™ื™ื‘ืŸ ืึธืคืŸ.

ืื™ืจ ืงืขื ืขืŸ ื˜ื•ื™ืฉืŸ ื“ืขื ื ืึทื˜ื•ืจ ืžื™ื˜ ืึท ืกื˜ืจื™ืคึผื™ื ื’ ื”ืขืจืฉืŸ.

ืกื˜ืจื™ืคึผื™ื ื’ ื”ืขืจืฉืŸ ("ืœื™ื™ืงืขื ืขืŸ")

ืคื™ืจืขื•ื•ืึทืœืœ ืคึผืึทืœืึทืกื™ื– ื˜ื™ืคึผื™ืงืœื™ ืœื™ื™ืงืขื ืขืŸ ืงื™ื™ืŸ ืคืึทืจืงืขืจ ื•ื•ืึธืก ืื™ื– ื ื™ืฉื˜ ื‘ืคื™ืจื•ืฉ ืขืจืœื•ื™ื‘ื˜.

ืขืก ืื™ื– ืงื™ื™ืŸ ืึธืคึผืœื™ื™ืงืขื ื•ื ื’ ืงืึทืžืฃ ืื™ืŸ Kubernetes, ืึธื‘ืขืจ, ืึท ืขื ืœืขืš ื•ื•ื™ืจืงื•ื ื’ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึทื˜ืฉื™ื•ื•ื“ ืžื™ื˜ ืึท ืจืขื’ื•ืœืขืจ (ืคึผืขืจืžื™ืกื™ื•ื•) ืคึผืึธืœื™ื˜ื™ืง ื“ื•ืจืš ืกืึทืœืขืงื˜ื™ื ื’ ืึท ืœื™ื™ื“ื™ืง ื’ืจื•ืคึผืข ืคื•ืŸ โ€‹โ€‹ืžืงื•ืจ ืคึผืึธื“ืก (ื™ื ื’ืจืขืกืก):

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

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ืกืึทืœืขืงืฅ ืึทืœืข ืคึผืึธื“ืก ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข ืื•ืŸ ืœืึธื–ืŸ ื™ื ื’ืจืขืกืก ืึทื ื“ื™ืคื™ื™ื ื“, ืœื™ื™ืงืขื ืขืŸ ืึทืœืข ื™ื ืงืึทืžื™ื ื’ ืคืึทืจืงืขืจ.

ืื™ืŸ ืึท ืขื ืœืขืš ื•ื•ืขื’, ืื™ืจ ืงืขื ืขืŸ ื‘ืึทื’ืจืขื ืขืฆืŸ ืึทืœืข ืึทื•ื˜ื’ืึธื•ื™ื ื’ ืคืึทืจืงืขืจ ืคื•ืŸ ืึท ื ืึทืžืขืกืคึผื™ื™ืก:

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

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืงื™ื™ืŸ ื ืึธืš ืคึผืึทืœืึทืกื™ื– ื•ื•ืึธืก ืœืึธื–ืŸ ืคืึทืจืงืขืจ ืฆื• ืคึผืึธื“ืก ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข ื•ื•ืขื˜ ื ืขืžืขืŸ ืคึผืจื™ื™ื“ืึทื ืก ืื™ื‘ืขืจ ื“ืขื ื”ืขืจืฉืŸ (ืขื ืœืขืš ืฆื• ืœื™ื™ื’ืŸ ืึทืŸ ืœืึธื–ืŸ ื”ืขืจืฉืŸ ืื™ื™ื“ืขืจ ืึท ืœื™ื™ืงืขื ืขืŸ ื”ืขืจืฉืŸ ืื™ืŸ ืึท ืคื™ื™ืจื•ื•ืึทืœ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ).

ืœืึธื–ืŸ ืึทืœืฅ (ืขื ื™-ืขื ื™-ืขื ื™-ืึทืœืึทื•)

ืฆื• ืฉืึทืคึฟืŸ ืึทืŸ ืึทืœืึทื• ืึทืœืข ืคึผืึธืœื™ื˜ื™ืง, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื”ืขืกืึธืคืข ื“ื™ ืึธืคึผืœื™ื™ืงืขื ื•ื ื’ ืคึผืึธืœื™ื˜ื™ืง ืื•ื™ื‘ืŸ ืžื™ื˜ ืึท ืœื™ื™ื“ื™ืง ืขืœืขืžืขื ื˜ ingress:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all
  namespace: default
spec:
  podSelector: {}
  ingress: # <<<
  - {}     # <<<
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืขืก ืึทืœืึทื•ื– ืึทืงืกืขืก ืคึฟื•ืŸ ืึทืœืข ืคึผืึธื“ืก ืื™ืŸ ืึทืœืข ื ืึทืžืขืกืคึผืึทืกืขืก (ืื•ืŸ ืึทืœืข IP) ืฆื• ืงื™ื™ืŸ ืคึผืึธื“ ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข default. ื“ืขื ืึธืคึผืคื™ืจื•ื ื’ ืื™ื– ืขื ื™ื™ื‘ืึทืœื“ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืึทื–ื•ื™ ืขืก ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื“ื™ืคื™ื™ื ื“ ื•ื•ื™ื™ึทื˜ืขืจ. ืึธื‘ืขืจ, ืžืืœ ืื™ืจ ืงืขืŸ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ืขืžืคึผืขืจืขืจืึทืœื™ ื“ื™ืกื™ื™ื‘ืึทืœ ืขื˜ืœืขื›ืข ืกืคึผืขืฆื™ืคื™ืฉ ืคึผืขืจืžื™ืฉืึทื ื– ืฆื• ื“ื™ืึทื’ื ืึธื–ื™ืจืŸ ื“ืขื ืคึผืจืึธื‘ืœืขื.

ื“ื™ ื”ืขืจืฉืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื ืขืจืึธื•ื“ ืฆื• ืœืึธื–ืŸ ืึทืงืกืขืก ื‘ืœื•ื™ื– ืฆื• ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื’ืึทื ื’ ืคื•ืŸ ืคึผืึธื“ืก (app:balance) ืื™ืŸ ื“ื™ ื ืึธืžืขืŸ ืคึผืœืึทืฅ default:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all-to-balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  ingress: 
  - {}
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ื“ื™ ืคืืœื’ืขื ื“ืข ืคึผืึธืœื™ื˜ื™ืง ืึทืœืึทื•ื– ืึทืœืข ื™ื ื’ืจืขืกืก ืื•ืŸ ื™ื’ืจืขืกืก ืคืึทืจืงืขืจ, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืึทืงืกืขืก ืฆื• ืงื™ื™ืŸ IP ืึทืจื•ื™ืก ื“ื™ ืงื ื•ื™ืœ:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all
spec:
  podSelector: {}
  ingress:
  - {}
  egress:
  - {}
  policyTypes:
  - Ingress
  - Egress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก
ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืงืึทืžื‘ื™ื™ื ื™ื ื’ ืงื™ื™ืคืœ ืคึผืึทืœืึทืกื™ื–

ืคึผืึทืœืึทืกื™ื– ื–ืขื ืขืŸ ืงืึทืžื‘ื™ื™ื ื“ ื ื™ืฆืŸ ืœืึทื“ื–ืฉื™ืงืึทืœ ืึธื“ืขืจ ืื™ืŸ ื“ืจื™ื™ึท ืœืขื•ื•ืขืœืก; ื“ื™ ืคึผืขืจืžื™ืฉืึทื ื– ืคื•ืŸ ื™ืขื“ืขืจ ืคึผืึธื“ ื–ืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžื˜ ืื™ืŸ ืœื•ื™ื˜ ืžื™ื˜ ื“ื™ ื“ื™ืกื“ื–ืฉื•ื ืงื˜ื™ืึธืŸ ืคื•ืŸ ืึทืœืข ืคึผืึทืœืึทืกื™ื– ื•ื•ืึธืก ื•ื•ื™ืจืงืŸ ืขืก:

1. ืื™ืŸ ื“ื™ ืคืขืœื“ืขืจ from ะธ to ื“ืจื™ื™ ื˜ื™ื™ืคึผืก ืคื•ืŸ ืขืœืขืžืขื ื˜ืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื™ืคื™ื™ื ื“ (ืึทืœืข ืคื•ืŸ โ€‹โ€‹ื•ื•ืึธืก ื–ืขื ืขืŸ ืงืึทืžื‘ื™ื™ื ื“ ืžื™ื˜ OR):

  • namespaceSelector - ืกืึทืœืขืงืฅ ื“ื™ ื’ืื ืฆืข ื ืึธืžืขืŸ ืคึผืœืึทืฅ;
  • podSelector - ืกืึทืœืขืงืฅ ืคึผืึธื“ืก;
  • ipBlock โ€” ืกืึทืœืขืงืฅ ืึท ืกื•ื‘ื ืขื˜.

ื“ืขืจืฆื•, ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืขืœืขืžืขื ื˜ืŸ (ืืคื™ืœื• ื™ื™ื“ืขื ื™ืงืึทืœ ืึธื ืขืก) ืื™ืŸ ืกืึทื‘ืกืขืงืฉืึทื ื– from/to ื ื™ื˜ ื‘ืื’ืจืขื ืขืฆื˜. ืึทืœืข ืคื•ืŸ โ€‹โ€‹ื–ื™ื™ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืงืึทืžื‘ื™ื™ื ื“ ื“ื•ืจืš ืœืึทื“ื–ืฉื™ืงืึทืœ OR.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    - podSelector:
        matchLabels:
          app: admin
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

2. ื™ืŸ ื“ืขืจ ืคึผืึธืœื™ื˜ื™ืง ืึธืคึผื˜ื™ื™ืœื•ื ื’ ingress ืงืขื ืขืŸ ื”ืึธื‘ืŸ ืคื™ืœืข ืขืœืขืžืขื ื˜ืŸ from (ืงืึทืžื‘ื™ื™ื ื“ ื“ื•ืจืš ืœืึทื“ื–ืฉื™ืงืึทืœ OR). ืกื™ืžื™ืœืึทืจืœื™, ืึธืคึผื˜ื™ื™ืœื•ื ื’ egress ืงืขืŸ ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืคื™ืœืข ืขืœืขืžืขื ื˜ืŸ to (ืื•ื™ืš ืงืึทืžื‘ื™ื™ื ื“ ื“ื•ืจืš ื“ื™ืกื“ื–ืฉื•ื ืงื˜ื™ืึธืŸ):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
  - from:
    - podSelector:
        matchLabels:
          app: admin
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

3. ืคืึทืจืฉื™ื“ืขื ืข ืคึผืึทืœืึทืกื™ื– ื–ืขื ืขืŸ ืื•ื™ืš ืงืึทืžื‘ื™ื™ื ื“ ืžื™ื˜ ืœืึทื“ื–ืฉื™ืงืึทืœ OR

ืื‘ืขืจ ื•ื•ืขืŸ ืงืึทืžื‘ื™ื™ื ื™ื ื’ ื–ื™ื™, ืขืก ืื™ื– ืื™ื™ืŸ ื‘ืึทื’ืจืขื ืขืฆื•ื ื’ ืื•ื™ืฃ ื•ื•ืึธืก ืฉืคึผื™ืฆื™ืง ืื•ื™ืก ืงืจื™ืก ืงื•ื ื™: Kubernetes ืงืขื ืขืŸ ื‘ืœื•ื™ื– ืคืึทืจื‘ื™ื ื“ืŸ ืคึผืึทืœืึทืกื™ื– ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข policyTypes (Ingress ืึธื“ืขืจ Egress). ืคึผืึทืœืึทืกื™ื– ื•ื•ืึธืก ื“ื™ืคื™ื™ื ื™ื ื’ ื™ื ื’ืจืขืกืก (ืึธื“ืขืจ ื™ื’ืจืขืกืก) ื•ื•ืขื˜ ืึธื•ื•ื•ืขืจืจื™ื™ื˜ ื™ืขื“ืขืจ ืื ื“ืขืจืข.

ืฉื™ื™ื›ื•ืช ืฆื•ื•ื™ืฉืŸ ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื–

ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื™ื™ึทื ื˜ื™ื™ืœื•ื ื’ ืฆื•ื•ื™ืฉืŸ ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื– ืื™ื– ืขืจืœื•ื™ื‘ื˜. ื“ืขื ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคืืจืขื ื“ืขืจื˜ ื“ื•ืจืš ื ื™ืฆืŸ ืึท ืœื™ื™ืงืขื ืขืŸ ืคึผืึธืœื™ื˜ื™ืง ื•ื•ืึธืก ื•ื•ืขื˜ ื‘ืึทื’ืจืขื ืขืฆืŸ ืคืึทืจืงืขืจ ืึทื•ื˜ื’ืึธื•ื™ื ื’ ืื•ืŸ / ืึธื“ืขืจ ื™ื ืงืึทืžื™ื ื’ ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข (ื–ืขืŸ "ืกื˜ืจื™ืคึผื™ื ื’ ืจื•ืœ" ืื•ื™ื‘ืŸ).

ืึทืžืึธืœ ืื™ืจ ื”ืึธื‘ืŸ ืืคื’ืขืฉื˜ืขืœื˜ ืึทืงืกืขืก ืฆื• ืึท ื ืึทืžืขืกืคึผืึทืกืข (ื–ืขืŸ ื“ื™ "ืกื˜ืจื™ืคึผื™ื ื’ ืจื•ืœ" ืื•ื™ื‘ืŸ), ืื™ืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ืื•ื™ืกื ืขืžืขืŸ ืฆื• ื“ื™ ืคืืจืœื™ื™ืงืขื ืขืŸ ืคึผืึธืœื™ื˜ื™ืง ื“ื•ืจืš ืึทืœืึทื•ื™ื ื’ ืงืึทื ืขืงืฉืึทื ื– ืคื•ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื ืึธืžืขืŸ ืกืคึผื™ื™ืก ื ื™ืฆืŸ namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector: # <<<
        matchLabels:
          namespace: default
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืึทืœืข ืคึผืึธื“ืก ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข default ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื•ื˜ืจื™ื˜ ืฆื• ืคึผืึธื“ืก postgres ืื™ืŸ ื ืึธืžืขืŸ ืคึผืœืึทืฅ database. ืื‘ืขืจ ื•ื•ืึธืก ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืขืคืขื ืขืŸ ืึทืงืกืขืก ืฆื• postgres ื‘ืœื•ื™ื– ืกืคึผืขืฆื™ืคื™ืฉ ืคึผืึธื“ืก ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข default?

ืคื™ืœื˜ืขืจ ืœื•ื™ื˜ ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื– ืื•ืŸ ืคึผืึธื“ืก

Kubernetes ื•ื•ืขืจืกื™ืข 1.11 ืื•ืŸ ื”ืขื›ืขืจ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืึธืคึผืขืจื™ื™ื˜ืขืจื– namespaceSelector ะธ podSelector ื ื™ืฆืŸ ืœืึทื“ื–ืฉื™ืงืึทืœ AND. ืขืก ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          namespace: default
      podSelector: # <<<
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืคืืจื•ื•ืืก ืื™ื– ื“ืึธืก ื™ื ื˜ืขืจืคึผืจืึทื˜ืึทื“ ื•ื•ื™ AND ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ื“ื™ ื’ืขื•ื•ื™ื™ื ื˜ืœืขืš OR?

ื‘ืืžืขืจืง ืื– podSelector ื”ื™ื™ื‘ื˜ ื–ื™ืš ื ื™ืฉื˜ ืืŸ ืžื™ื˜ ื ืงื•ื™ืฃ. ืื™ืŸ YAML ื“ืึธืก ืžื™ื™ื ื˜ ืึทื– podSelector ืื•ืŸ ืฉื˜ื™ื™ืขื ื“ื™ืง ืคืึทืจ ืื™ื namespaceSelector ืึธืคึผืฉื™ืงืŸ ืฆื• ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืจืฉื™ืžื” ืขืœืขืžืขื ื˜. ื“ืขืจื™ื‘ืขืจ, ื–ื™ื™ ื–ืขื ืขืŸ ืงืึทืžื‘ื™ื™ื ื“ ืžื™ื˜ ืœืึทื“ื–ืฉื™ืงืึทืœ AND.

ืึทื“ื™ื ื’ ืึท ื”ื™ืคืขืŸ ืคืจื™ืขืจ podSelector ื•ื•ืขื˜ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ืŸ ื“ื™ ื™ืžืขืจื“ื–ืฉืึทื ืก ืคื•ืŸ ืึท ื ื™ื™ึท ืจืฉื™ืžื” ืขืœืขืžืขื ื˜, ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืงืึทืžื‘ื™ื™ื ื“ ืžื™ื˜ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืื™ื™ื ืขืจ namespaceSelector ื ื™ืฆืŸ ืœืึทื“ื–ืฉื™ืงืึทืœ OR.

ืฆื• ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืคึผืึธื“ืก ืžื™ื˜ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืคื™ืจืžืข ืื™ืŸ ืึทืœืข ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื–, ืึทืจื™ื™ึทืŸ ืœื™ื™ื“ื™ืง namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector: {}
      podSelector:
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืงื™ื™ืคืœ ืœืึทื‘ืขืœืก ืฆื•ื–ืึทืžืขืŸ ืžื™ื˜ I

ื›ึผืœืœื™ื ืคึฟืึทืจ ืึท ืคื™ื™ืจื•ื•ืึทืœ ืžื™ื˜ ืงื™ื™ืคืœ ืึทื‘ื“ื–ืฉืขืงืฅ (ืžื—ื ื•ืช, ื ืขื˜ื•ื•ืึธืจืงืก, ื’ืจื•ืคึผืขืก) ื–ืขื ืขืŸ ืงืึทืžื‘ื™ื™ื ื“ ืžื™ื˜ ืœืึทื“ื–ืฉื™ืงืึทืœ OR. ื“ื™ ืคืืœื’ืขื ื“ืข ื”ืขืจืฉืŸ ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ืื•ื™ื‘ ื“ื™ ืคึผืึทืงืึทื˜ ืžืงื•ืจ ืฉื•ื•ืขื‘ืขืœืขืš Host_1 ืึธื“ืขืจ Host_2:

| Source | Destination | Service | Action |
| ----------------------------------------|
| Host_1 | Subnet_A    | HTTPS   | Allow  |
| Host_2 |             |         |        |
| ----------------------------------------|

ืคึฟืึทืจืงืขืจื˜, ืื™ืŸ ืงื•ื‘ืขืจื ืขื˜ืขืก ื“ื™ ืคึฟืึทืจืฉื™ื™ื“ืขื ืข ืœืึทื‘ืขืœืก ืื™ืŸ podSelector ืึธื“ืขืจ namespaceSelector ื–ืขื ืขืŸ ืงืึทืžื‘ื™ื™ื ื“ ืžื™ื˜ ืœืึทื“ื–ืฉื™ืงืึทืœ AND. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ืคืืœื’ืขื ื“ืข ื”ืขืจืฉืŸ ื•ื•ืขื˜ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืคึผืึธื“ืก ื•ื•ืึธืก ื”ืึธื‘ืŸ ื‘ื™ื™ื“ืข ืœืึทื‘ืขืœืก, role=db ะ˜ version=v2:

podSelector:
  matchLabels:
    role: db
    version: v2

ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืœืึธื’ื™ืง ืึทืคึผืœื™ื™ื– ืฆื• ืึทืœืข ื˜ื™ื™ืคึผืก ืคื•ืŸ ืึธืคึผืขืจื™ื™ื˜ืขืจื–: ืคึผืึธืœื™ื˜ื™ืง ืฆื™ืœ ืกืขืœืขืงื˜ืึธืจืก, ืคึผืึธื“ ืกืขืœืขืงื˜ืึธืจืก ืื•ืŸ ื ืึทืžืขืกืคึผืึทืกืข ืกืขืœืขืงื˜ืึธืจืก.

ืกื•ื‘ื ืขืฅ ืื•ืŸ IP ืึทื“ืจืขืกืขืก (IPBlocks)

ืคื™ืจืขื•ื•ืึทืœืœืก ื ื•ืฆืŸ ื•ื•ืœืึทื ื–, IP ืึทื“ืจืขืกืขืก ืื•ืŸ ืกื•ื‘ื ืขืฅ ืฆื• ืกืขื’ืžืขื ื˜ ืึท ื ืขืฅ.

ืื™ืŸ Kubernetes, IP ืึทื“ืจืขืกืขืก ื–ืขื ืขืŸ ืึทืกื™ื™ื ื“ ืฆื• ืคึผืึธื“ืก ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืื•ืŸ ืงืขื ืขืŸ ืึธืคื˜ ื˜ื•ื™ืฉืŸ, ืึทื–ื•ื™ ืœืึทื‘ืขืœืก ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืฆื• ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืคึผืึธื“ืก ืื•ืŸ ื ืึธืžืขืŸ ืกืคึผื™ื™ืกืึทื– ืื™ืŸ ื ืขืฅ ืคึผืึทืœืึทืกื™ื–.

ืกื•ื‘ื ืขืฅ (ipBlocks) ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ื•ื•ืขืŸ ืึธื ืคื™ืจื•ื ื’ ื™ื ืงืึทืžื™ื ื’ (ื™ื ื’ืจืขืกืก) ืึธื“ืขืจ ืึทื•ื˜ื’ืึธื•ื™ื ื’ (ื™ื’ืจืขืกืก) ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง (ืฆืคื•ืŸ-ื“ืจื•ื) ืงืึทื ืขืงืฉืึทื ื–. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ืขื ืคึผืึธืœื™ื˜ื™ืง ืึธืคึผืขื ืก ืฆื• ืึทืœืข ืคึผืึธื“ืก ืคื•ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข default ืึทืงืกืขืก ืฆื• Google DNS ื“ื™ื ืกื˜:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-dns
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 8.8.8.8/32
    ports:
    - protocol: UDP
      port: 53

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ื“ื™ ืœื™ื™ื“ื™ืง ืคึผืึธื“ ืกืขืœืขืงื˜ืึธืจ ืื™ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืžื™ื˜ืœ "ืกืขืœืขืงื˜ื™ืจืŸ ืึทืœืข ืคึผืึธื“ืก ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข."

ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ืึทืœืึทื•ื– ื‘ืœื•ื™ื– ืึทืงืกืขืก ืฆื• 8.8.8.8; ืึทืงืกืขืก ืฆื• ืงื™ื™ืŸ ืื ื“ืขืจืข IP ืื™ื– ืคึผืจืึธื•ื›ื™ื‘ืึทื˜ืึทื“. ืึทื–ื•ื™, ืื™ืŸ ืขืกืึทื ืก, ืื™ืจ ื”ืึธื˜ ืืคื’ืขืฉื˜ืขืœื˜ ืึทืงืกืขืก ืฆื• ื“ื™ ื™ื ืขืจืœืขืš Kubernetes DNS ื“ื™ื ืกื˜. ืื•ื™ื‘ ืื™ืจ ื ืึธืš ื•ื•ื™ืœืŸ ืฆื• ืขืคืขื ืขืŸ ืขืก, ืึธื ื•ื•ื™ื™ึทื–ืŸ ื“ืขื ื‘ืคื™ืจื•ืฉ.

ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ipBlocks ะธ podSelectors ื–ืขื ืขืŸ ืžื™ื•ื˜ืฉื•ืึทืœื™ ื•ื™ืกืฉืœื™ืกื™ืง, ื–ื™ื ื˜ ื“ื™ ื™ื ืขืจืœืขืš IP ืึทื“ืจืขืกืขืก ืคื•ืŸ ืคึผืึธื“ืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ื’ืขื ื™ืฆื˜ ืื™ืŸ ipBlocks. ื“ื•ืจืš ืึธื ื•ื•ื™ื™ึทื–ืŸ ื™ื ืขืจืœืขืš IP ืคึผืึธื“ืก, ืื™ืจ ื•ื•ืขื˜ ืึทืงืฉืœื™ ืœืึธื–ืŸ ืงืึทื ืขืงืฉืึทื ื– ืฆื• / ืคึฟื•ืŸ ืคึผืึธื“ืก ืžื™ื˜ ื“ื™ ืึทื“ืจืขืกืขืก. ืื™ืŸ ืคื™ืจ, ืื™ืจ ื•ื•ืขื˜ ื ื™ืฉื˜ ื•ื•ื™ืกืŸ ื•ื•ืึธืก IP ืึทื“ืจืขืก ืฆื• ื ื•ืฆืŸ, ื•ื•ืึธืก ืื™ื– ื•ื•ืึธืก ื–ื™ื™ ื–ืึธืœ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืคึผืึธื“ืก.

ื•ื•ื™ ืึท ื˜ืึธืžื‘ืึทื ืง ื‘ื™ื™ืฉืคึผื™ืœ, ื“ื™ ืคืืœื’ืขื ื“ืข ืคึผืึธืœื™ื˜ื™ืง ื™ื ืงืœื•ื“ื– ืึทืœืข IPs ืื•ืŸ ื“ืขืจื™ื‘ืขืจ ืึทืœืึทื•ื– ืึทืงืกืขืก ืฆื• ืึทืœืข ืื ื“ืขืจืข ืคึผืึธื“ืก:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-any
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืื™ืจ ืงืขื ื˜ ื‘ืœื•ื™ื– ืขืคึฟืขื ืขืŸ ืึทืงืกืขืก ืฆื• ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง IP, ืึทื—ื•ืฅ ื“ื™ ื™ื ืขืจืœืขืš IP ืึทื“ืจืขืกืขืก ืคื•ืŸ ืคึผืึธื“ืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ื“ื™ื™ืŸ ืคึผืึธื“ ืก ืกื•ื‘ื ืขื˜ ืื™ื– 10.16.0.0/14:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-any
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0
        except:
        - 10.16.0.0/14

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืคึผืึธืจืฅ ืื•ืŸ ืคึผืจืึธื˜ืึธืงืึธืœืก

ื˜ื™ืคึผื™ืงืึทืœืœื™, ืคึผืึธื“ืก ื”ืขืจืŸ ืฆื• ืื™ื™ืŸ ืคึผืึธืจื˜. ื“ืขื ืžื™ื˜ืœ ืึทื– ืื™ืจ ืงืขื ืขืŸ ืคืฉื•ื˜ ื ื™ืฉื˜ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืคึผืึธืจื˜ ื ื•ืžืขืจืŸ ืื™ืŸ ืคึผืึทืœืึทืกื™ื– ืื•ืŸ ืœืึธื–ืŸ ืึทืœืฅ ื•ื•ื™ ืคืขืœื™ืงื™ื™ึทื˜. ืึธื‘ืขืจ, ืขืก ืื™ื– ืจืขืงืึทืžืขื ื“ื™ื“ ืฆื• ืžืึทื›ืŸ ืคึผืึทืœืึทืกื™ื– ื•ื•ื™ ืจื™ืกื˜ืจื™ืงื˜ื™ื•ื• ื•ื•ื™ ืžืขื’ืœืขืš, ืึทื–ื•ื™ ืื™ืŸ ืขื˜ืœืขื›ืข ืงืึทืกืขืก ืื™ืจ ืงืขื ืขืŸ ื ืึธืš ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืคึผืึธืจืฅ:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    - podSelector:
        matchLabels:
          app: admin
    ports:             # <<<
      - port: 443      # <<<
        protocol: TCP  # <<<
      - port: 80       # <<<
        protocol: TCP  # <<<
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ื‘ืึทืžืขืจืงื•ื ื’ ืึทื– ื“ื™ ืกืขืœืขืงื˜ืึธืจ ports ืึทืคึผืœื™ื™ื– ืฆื• ืึทืœืข ืขืœืขืžืขื ื˜ืŸ ืื™ืŸ ื“ืขื ื‘ืœืึธืง to ืึธื“ืขืจ from, ื•ื•ืึธืก ื›ึผื•ืœืœ. ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืคืึทืจืฉื™ื“ืขื ืข ืคึผืึธืจืฅ ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืขื ืข ืกืขืฅ ืคื•ืŸ ืขืœืขืžืขื ื˜ืŸ, ืฉืคึผืึทืœื˜ืŸ ingress ืึธื“ืขืจ egress ืื™ืŸ ืขื˜ืœืขื›ืข ืกืึทื‘ืกืขืงืฉืึทื ื– ืžื™ื˜ to ืึธื“ืขืจ from ืื•ืŸ ืื™ืŸ ื™ืขื“ืขืจ ืคืึทืจืฉืจื™ื™ึทื‘ืŸ ื“ื™ื™ืŸ ืคึผืึธืจืฅ:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    ports:             # <<<
     - port: 443       # <<<
       protocol: TCP   # <<<
  - from:
    - podSelector:
        matchLabels:
          app: admin
    ports:             # <<<
     - port: 80        # <<<
       protocol: TCP   # <<<
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

ืึท ื”ืงื“ืžื” ืฆื• Kubernetes ื ืขื˜ื•ื•ืึธืจืง ืคึผืึทืœืึทืกื™ื– ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธืคืขืกืกื™ืึธื ืึทืœืก

ืคืขืœื™ืงื™ื™ึทื˜ ืคึผืึธืจื˜ ืึธืคึผืขืจืึทืฆื™ืข:

  • ืื•ื™ื‘ ืื™ืจ ืคืึทืจืœืึธื–ืŸ ื“ื™ ืคึผืึธืจื˜ ื“ืขืคึฟื™ื ื™ืฆื™ืข ื’ืึธืจ (ports), ื“ืึธืก ืžื™ื˜ืœ ืึทืœืข ืคึผืจืึธื˜ืึธืงืึธืœืก ืื•ืŸ ืึทืœืข ืคึผืึธืจืฅ;
  • ืื•ื™ื‘ ืื™ืจ ืคืึทืจืœืึธื–ืŸ ื“ื™ ืคึผืจืึธื˜ืึธืงืึธืœ ื“ืขืคึฟื™ื ื™ืฆื™ืข (protocol), ื“ืึธืก ืžื™ื˜ืœ TCP;
  • ืื•ื™ื‘ ืื™ืจ ืคืึทืจืœืึธื–ืŸ ื“ื™ ืคึผืึธืจื˜ ื“ืขืคึฟื™ื ื™ืฆื™ืข (port), ื“ืึธืก ืžื™ื˜ืœ ืึทืœืข ืคึผืึธืจืฅ.

ื‘ืขืกื˜ืขืจ ืคื™ืจ: ื“ื• ื–ืืœืกื˜ ื ื™ืฉื˜ ืคืึทืจืœืึธื–ื  ืื•ื™ืฃ ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืึทืœื•ืขืก, ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื•ื•ืึธืก ืื™ืจ ื“ืึทืจืคึฟืŸ ื‘ืคื™ืจื•ืฉ.

ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืื™ืจ ืžื•ื–ืŸ ื ื•ืฆืŸ ืคึผืึธื“ ืคึผืึธืจืฅ, ื ื™ืฉื˜ ื“ื™ื ืกื˜ ืคึผืึธืจืฅ (ืžืขืจ ืื•ื™ืฃ ื“ืขื ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืคึผืึทืจืึทื’ืจืึทืฃ).

ื–ืขื ืขืŸ ืคึผืึทืœืึทืกื™ื– ื“ื™ืคื™ื™ื ื“ ืคึฟืึทืจ ืคึผืึธื“ืก ืึธื“ืขืจ ื‘ืึทื“ื™ื ื•ื ื’ืก?

ื˜ื™ืคึผื™ืงืึทืœืœื™, ืคึผืึธื“ืก ืื™ืŸ Kubernetes ืึทืงืกืขืก ื™ืขื“ืขืจ ืื ื“ืขืจืข ื“ื•ืจืš ืึท ืกืขืจื•ื•ื™ืก - ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืกืข ื‘ืึทืœืึทื ืกืขืจ ื•ื•ืึธืก ืจื™ื“ืขืจืขืงืฅ ืคืึทืจืงืขืจ ืฆื• ื“ื™ ืคึผืึธื“ืก ื•ื•ืึธืก ื™ื ืกื˜ืจื•ืžืขื ื˜ ื“ื™ ืกืขืจื•ื•ื™ืก. ืื™ืจ ืงืขืŸ ื˜ืจืึทื›ื˜ืŸ ืึทื– ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทืงืกืขืก ืฆื• ื‘ืึทื“ื™ื ื•ื ื’ืก, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื“ืขืจ ืคืึทืœ. Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ืึทืจื‘ืขื˜ ืื•ื™ืฃ ืคึผืึธื“ ืคึผืึธืจืฅ, ื ื™ืฉื˜ ืกืขืจื•ื•ื™ืก ืคึผืึธืจืฅ.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ืึท ื“ื™ื ืกื˜ ืœื™ืกืึทื ื– ืฆื• ืคึผืึธืจื˜ 80, ืึธื‘ืขืจ ืจื™ื“ืขืจืขืงืฅ ืคืึทืจืงืขืจ ืฆื• ืคึผืึธืจื˜ 8080 ืคื•ืŸ ื–ื™ื™ึทืŸ ืคึผืึธื“ืก, ืื™ืจ ืžื•ื–ืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืคึผื•ื ืงื˜ 8080 ืื™ืŸ ื“ื™ ื ืขืฅ ืคึผืึธืœื™ื˜ื™ืง.

ืึทื–ืึท ืึท ืžืขืงืึทื ื™ื–ืึทื ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขืจืขื›ื ื˜ ื•ื•ื™ ืกื•ื‘ืึธืคึผื˜ื™ืžืึทืœ: ืื•ื™ื‘ ื“ื™ ื™ื ืขืจืœืขืš ืกื˜ืจื•ืงื˜ื•ืจ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ื™ืก (ื“ื™ ืคึผืึธืจืฅ ืคื•ืŸ ื•ื•ืึธืก ืคึผืึธื“ืก ื”ืขืจืŸ) ืขื ื“ืขืจื•ื ื’ืขืŸ, ื“ื™ ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜.

ื ื™ื• ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจืึทืœ ืฆื•ื’ืึทื ื’ ื ื™ืฆืŸ ืกืขืจื•ื•ื™ืก ืžืขืฉ (ืœืžืฉืœ, ื–ืขืŸ ื•ื•ืขื’ืŸ Istio ืื•ื ื˜ืŸ - ื‘ืขืขืจืขืš ืื™ื‘ืขืจื–ืขืฆื•ื ื’) ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืงืึธืคึผืข ืžื™ื˜ ื“ืขื ืคึผืจืึธื‘ืœืขื.

ืื™ื– ืขืก ื ื™ื™ื˜ื™ืง ืฆื• ืจืขื’ื™ืกื˜ืจื™ืจืŸ ื‘ื™ื™ื“ืข ื™ื ื’ืจืขืกืก ืื•ืŸ ืขื’ืจืขืกืก?

ื“ืขืจ ืงื•ืจืฅ ืขื ื˜ืคึฟืขืจ ืื™ื– ื™ืึธ, ื›ึผื“ื™ ืคึผืึธื“ ื ื–ืึธืœ ืงืขื ืขืŸ ื™ื‘ืขืจื’ืขื‘ืŸ ืžื™ื˜ ืคึผืึธื“ ื‘, ืขืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ืขืจืœื•ื™ื‘ื˜ ืฆื• ืฉืึทืคึฟืŸ ืึท ืึทื•ื˜ื’ืึธื•ื™ื ื’ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ (ืคึฟืึทืจ ื“ืขื ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ืึทืŸ ืขื’ืจืขืกืก ืคึผืึธืœื™ื˜ื™ืง), ืื•ืŸ ืคึผืึธื“ ื‘ ืžื•ื–ืŸ ืงืขื ืขืŸ ืึธื ื ืขืžืขืŸ ืึท ื™ื ืงืึทืžื™ื ื’ ืงืฉืจ ( ืคึฟืึทืจ ื“ืขื, ืึทืงืึธืจื“ื™ื ื’ืœื™, ืื™ืจ ื“ืึทืจืคึฟืŸ ืึทืŸ ื™ื ื’ืจืขืกืก ืคึผืึธืœื™ื˜ื™ืง).

ืึธื‘ืขืจ, ืื™ืŸ ืคื™ืจ, ืื™ืจ ืงืขื ืขืŸ ืคืึทืจืœืึธื–ื  ืื•ื™ืฃ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ืคึผืึธืœื™ื˜ื™ืง ืฆื• ืœืึธื–ืŸ ืงืึทื ืขืงืฉืึทื ื– ืื™ืŸ ืื™ื™ืŸ ืึธื“ืขืจ ื‘ื™ื™ื“ืข ืื™ื ืกื˜ืจื•ืงืฆื™ืขืก.

ืื•ื™ื‘ ืขื˜ืœืขื›ืข ืคึผืึธื“-ืžืึธืงืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ื“ื•ืจืš ืื™ื™ื ืขืจ ืึธื“ืขืจ ืžืขืจ ืึทืจื•ื™ืกื’ืึทื ื’-ืคึผืึทืœืึทื˜ื™ืฉืึทื ื–, ื“ื™ ืจื™ืกื˜ืจื™ืงืฉืึทื ื– ื™ืžืคึผืึธื•ื–ื“ ืื•ื™ืฃ ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืืฉืœืืกืŸ ื“ื•ืจืš ื–ื™ื™ืขืจ ื“ื™ื“ื–ืฉืึทื ื’ืงืฉืึทืŸ. ืื™ืŸ ื“ืขื ืคืึทืœ, ืื™ืจ ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืคื™ืจื•ืฉ ืœืึธื–ืŸ ืงืฉืจ ืฆื• ื“ื™ ืคึผืึธื“ -ืึทื“ืจืขืกื™. ืื•ื™ื‘ ืึท ืคึผืึธื“ ืื™ื– ื ื™ืฉื˜ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ื“ื•ืจืš ืงื™ื™ืŸ ืคึผืึธืœื™ื˜ื™ืง, ื–ื™ื™ืŸ ืึทื•ื˜ื’ืึธื•ื™ื ื’ (ื™ื’ืจืขืก) ืคืึทืจืงืขืจ ืื™ื– ืขืจืœื•ื™ื‘ื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜.

ืกื™ืžื™ืœืึทืจืœื™, ื“ืขืจ ื’ื•ืจืœ ืคื•ืŸ ื“ื™ ืคึผืึธื“ ืื™ื–ืึทื“ืจืขืกื™ืจื˜, ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ื“ื•ืจืš ืื™ื™ื ืขืจ ืึธื“ืขืจ ืžืขืจ ื™ื ื’ืจื™ื™ืฉืึทืŸโ€” ืคืืœื™ื˜ื™ืงืขืจ , ืฐืขืœ ืŸ ื‘ืืฉืœืืก ืŸ ืฐืขืจ ืŸ ื“ื•ืจ ืš ื–ืฒืข ืจ ื“ื™ืกื“ื–ืฉื•ื ืงืฆื™ืข . ืื™ืŸ ื“ืขื ืคืึทืœ, ืื™ืจ ืžื•ื–ืŸ ื‘ืคื™ืจื•ืฉ ืœืึธื–ืŸ ืขืก ื‘ืึทืงื•ืžืขืŸ ืคืึทืจืงืขืจ ืคื•ืŸ ื“ื™ ืžืงื•ืจ ืคึผืึธื“. ืื•ื™ื‘ ืึท ืคึผืึธื“ ืื™ื– ื ื™ืฉื˜ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ื“ื•ืจืš ืงื™ื™ืŸ ืคึผืึธืœื™ื˜ื™ืง, ืึทืœืข ื™ื ื’ืจืขืกืก ืคืึทืจืงืขืจ ืคึฟืึทืจ ืขืก ืื™ื– ืขืจืœื•ื™ื‘ื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜.

ื–ืขืŸ ืกื˜ื™ื™ื˜ืคื•ืœ ืึธื“ืขืจ ืกื˜ื™ื™ื˜ืœืขืกืก ืื•ื ื˜ืŸ.

ืœืึธื’ืก

Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ืงืขื ืขืŸ ื ื™ืฉื˜ ืงืœืึธืฅ ืคืึทืจืงืขืจ. ื“ืึธืก ืžืื›ื˜ ืขืก ืฉื•ื•ืขืจ ืฆื• ื‘ืึทืฉืœื™ืกืŸ ืฆื™ ืึท ืคึผืึธืœื™ื˜ื™ืง ืึทืจื‘ืขื˜ ื•ื•ื™ ื‘ื“ืขื” ืื•ืŸ ื–ื™ื™ืขืจ ืงืึทืžืคึผืœื™ืงื™ื™ืฅ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืึทื ืึทืœื™ืกื™ืก.

ืงืึธื ื˜ืจืึธืœ ืคื•ืŸ ืคืึทืจืงืขืจ ืฆื• ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื‘ืึทื“ื™ื ื•ื ื’ืก

Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ื˜ืึธืŸ ื ื™ื˜ ืœืึธื–ืŸ ืื™ืจ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืึท ื’ืึธืจ ืงื•ื•ืึทืœืึทืคื™ื™ื“ ืคืขืœื“ ื ืึธืžืขืŸ (ื“ื ืก) ืื™ืŸ ืขื’ืจืขืกืก ืกืขืงืฉืึทื ื–. ื“ืขืจ ืคืึทืงื˜ ืคื™ืจื˜ ืฆื• ื‘ืึทื˜ื™ื™ื˜ื™ืง ื™ื ืงืึทื ื•ื•ื™ื ื™ืึทื ืก ื•ื•ืขืŸ ืื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื‘ืึทื’ืจืขื ืขืฆืŸ ืคืึทืจืงืขืจ ืฆื• ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื“ืขืกื˜ืึทื ื™ื™ืฉืึทื ื– ื•ื•ืึธืก ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืึท ืคืึทืจืคืขืกื˜ื™ืงื˜ IP ืึทื“ืจืขืก (ืึทื–ืึท ื•ื•ื™ aws.com).

ืคึผืึธืœื™ื˜ื™ืง ื˜ืฉืขืง

ืคื™ืจืขื•ื•ืึทืœืœืก ื•ื•ืขื˜ ื•ื•ืึธืจืขื ืขืŸ ืื™ืจ ืึธื“ืขืจ ืืคื™ืœื• ืึธืคึผื–ืึธื’ืŸ ืฆื• ืึธื ื ืขืžืขืŸ ื“ื™ ืคืึทืœืฉ ืคึผืึธืœื™ื˜ื™ืง. Kubernetes ืื•ื™ืš ื˜ื•ื˜ ืขื˜ืœืขื›ืข ื•ื•ืขืจืึทืคืึทืงื™ื™ืฉืึทืŸ. ื•ื•ืขืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ื ืขืฅ ืคึผืึธืœื™ื˜ื™ืง ื“ื•ืจืš kubectl, Kubernetes ืงืขืŸ ื“ืขืจืงืœืขืจืŸ ืึทื– ืขืก ืื™ื– ืคืึทืœืฉ ืื•ืŸ ืึธืคึผื–ืึธื’ืŸ ืฆื• ืึธื ื ืขืžืขืŸ ืขืก. ืื™ืŸ ืื ื“ืขืจืข ืงืึทืกืขืก, Kubernetes ื•ื•ืขื˜ ื ืขืžืขืŸ ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ืื•ืŸ ืคึผืœืึธืžื‘ื™ืจืŸ ืขืก ืžื™ื˜ ื“ื™ ืคืขืœื ื“ื™ืง ื“ืขื˜ืึทื™ืœืก. ื–ื™ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื–ืขืŸ ืžื™ื˜ ื“ืขื ื‘ืึทืคึฟืขืœ:

kubernetes get networkpolicy <policy-name> -o yaml

ื”ืึทืœื˜ืŸ ืื™ืŸ ืžื™ื™ื ื•ื ื’ ืึทื– ื“ื™ Kubernetes ื•ื•ืึทืœืึทื“ื™ื™ืฉืึทืŸ ืกื™ืกื˜ืขื ืื™ื– ื ื™ืฉื˜ ื™ื ืคืึทืœืึทื‘ืึทืœ ืื•ืŸ ืงืขืŸ ืคืึทืจืคื™ืจืŸ ืขื˜ืœืขื›ืข ื˜ื™ื™ืคึผืก ืคื•ืŸ ืขืจืจืึธืจืก.

ื“ื•ืจื›ืคื™ืจื•ื ื’

Kubernetes ื˜ื•ื˜ ื ื™ืฉื˜ ื™ื ืกื˜ืจื•ืžืขื ื˜ ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ื–ื™ืš, ืึธื‘ืขืจ ืื™ื– ื‘ืœื•ื™ื– ืึทืŸ ืึทืคึผื™ ื’ื™ื™ื˜ื•ื•ื™ื™ ื•ื•ืึธืก ื“ืขืœืึทื’ื™ื™ืฅ ื“ื™ ืžืึทืกืข ืคื•ืŸ โ€‹โ€‹ืงืึธื ื˜ืจืึธืœ ืฆื• ืึท ืึทื ื“ืขืจืœื™ื™ื™ื ื’ ืกื™ืกื˜ืขื ื’ืขืจื•ืคืŸ ื“ื™ ืงืึทื ื˜ื™ื™ื ืขืจ ื ืขื˜ื•ื•ืึธืจืงื™ื ื’ ืฆื•ื‘ื™ื ื“ (CNI). ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืคึผืึทืœืึทืกื™ื– ืื•ื™ืฃ ืึท Kubernetes ืงื ื•ื™ืœ ืึธืŸ ืึทืกื™ื™ื ื™ื ื’ ื“ื™ ืฆื•ื ืขืžืขืŸ CNI ืื™ื– ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ืงืจื™ื™ื™ื˜ื™ื ื’ ืคึผืึทืœืึทืกื™ื– ืื•ื™ืฃ ืึท ืคื™ื™ืจื•ื•ืึทืœ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืขืจื•ื•ืขืจ ืึธืŸ ื™ื ืกื˜ืึธืœื™ื ื’ ื–ื™ื™ ืื•ื™ืฃ ืคื™ืจืขื•ื•ืึทืœืœืก. ืขืก ืื™ื– ืึทืจื•ื™ืฃ ืฆื• ืื™ืจ ืฆื• ืขื ืฉื•ืจ ืื™ืจ ื”ืึธื‘ืŸ ืึท ืœื™ื™ึทื˜ื™ืฉ CNI ืึธื“ืขืจ, ืื™ืŸ ื“ื™ ืคืึทืœ ืคื•ืŸ Kubernetes ืคึผืœืึทื˜ืคืึธืจืžืก, ื›ืึธื•ืกื˜ื™ื“ ืื™ืŸ ื“ื™ ื•ื•ืึธืœืงืŸ (ืื™ืจ ืงืขื ื˜ ื–ืขืŸ ื“ื™ ืจืฉื™ืžื” ืคื•ืŸ ืคึผืจืึทื•ื•ื™ื™ื“ืขืจื– ื“ืึธ โ€” ื‘ืขืขืจืขืš. ื˜ืจืึทื ืก.), ื’ืขื‘ืŸ ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ื•ื•ืึธืก ื•ื•ืขื˜ ืฉื˜ืขืœืŸ CNI ืคึฟืึทืจ ืื™ืจ.

ื‘ืึทืžืขืจืงื•ื ื’ ืึทื– Kubernetes ื•ื•ืขื˜ ื ื™ืฉื˜ ื•ื•ืึธืจืขื ืขืŸ ืื™ืจ ืื•ื™ื‘ ืื™ืจ ืฉื˜ืขืœืŸ ืึท ื ืขืฅ ืคึผืึธืœื™ื˜ื™ืง ืึธืŸ ื“ื™ ืฆื•ื ืขืžืขืŸ ื”ืขืœืคืขืจ CNI.

ืกื˜ืขื™ื˜ืคื•ืœ ืึธื“ืขืจ ืกื˜ืขื™ื˜ืœืขืกืก?

ืึทืœืข ืงื•ื‘ืขืจื ืขื˜ืขืก CNIs ื•ื•ืึธืก ืื™ืš ื”ืึธื‘ืŸ ื’ืขืคึผืœืึธื ื˜ืขืจื˜ ื–ืขื ืขืŸ ืกื˜ืึทื˜ืขืคื•ืœ (ืœืžืฉืœ, Calico ื ื™ืฆื˜ ืœื™ื ื•ืงืก ืงืึธื ื˜ืจืึทืงืง). ื“ืึธืก ืึทืœืึทื•ื– ื“ื™ ืคึผืึธื“ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืจืขืกืคึผืึธื ืกืขืก ืื•ื™ืฃ ื“ื™ TCP ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ื•ื•ืึธืก ืขืก ื™ื ื™ืฉื™ื™ื™ื˜ื™ื“ ืึธืŸ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉื™ื™ึทืขืš-ืคืึทืจืœื™ื™ื’ืŸ ืขืก. ืึธื‘ืขืจ, ืื™ืš ื‘ื™ืŸ ื ื™ืฉื˜ ืึทื•ื•ืขืจ ืคื•ืŸ ืึท Kubernetes ื ืึธืจืžืึทืœ ื•ื•ืึธืก ื•ื•ืึธืœื˜ ื’ืึทืจืึทื ื˜ื™ืจืŸ ืกื˜ื™ื™ื˜ืคื•ืœื ืขืกืก.

ืึทื•ื•ืึทื ืกื™ืจื˜ืข ื–ื™ื›ืขืจื”ื™ื™ึทื˜ ืคึผืึธืœื™ื˜ื™ืง ืžืึทื ืึทื’ืขืžืขื ื˜

ื“ืึธ ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ื•ื•ืขื’ืŸ ืฆื• ืคึฟืึทืจื‘ืขืกืขืจืŸ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืึธืœื™ื˜ื™ืง ืขื ืคืึธืจืกืžืึทื ื˜ ืื™ืŸ Kubernetes:

  1. ื“ื™ ืกืขืจื•ื•ื™ืก ืžืขืฉ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจืึทืœ ืžื•ืกื˜ืขืจ ื ื™ืฆื˜ ืกื™ื™ื“ืงืึทืจ ืงืึทื ื˜ื™ื™ื ืขืจื– ืฆื• ืฆื•ืฉื˜ืขืœืŸ ื“ื™ื˜ื™ื™ืœื“ ื˜ืขืœืขืžืขื˜ืจื™ ืื•ืŸ ืคืึทืจืงืขืจ ืงืึธื ื˜ืจืึธืœ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ื™ืก ืžื“ืจื’ื”. ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ืžื™ืจ ืงืขื ืขืŸ ื ืขืžืขืŸ ื™ืกื˜ื™ืึธ.
  2. ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ CNI ื•ื•ืขื ื“ืึธืจืก ื”ืึธื‘ืŸ ืขืงืกื˜ืขื ื“ืขื“ ื–ื™ื™ืขืจ ืžื›ืฉื™ืจื™ื ืฆื• ื’ื™ื™ืŸ ื•ื•ื™ื™ึทื˜ืขืจ ืคื•ืŸ Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื–.
  3. ื˜ื•ืคื™ืŸ ืึธืจืงืึท ืคึผืจืึธื•ื•ื™ื“ืขืก ื•ื•ื™ื–ืึทื‘ื™ืœื™ื˜ื™ ืื•ืŸ ืึธื˜ืึทืžื™ื™ืฉืึทืŸ ืคื•ืŸ Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื–.

ื“ื™ Tufin Orca ืคึผืขืงืœ ืžืึทื ื™ื“ื–ืฉื™ื– Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื– (ืื•ืŸ ืื™ื– ื“ืขืจ ืžืงื•ืจ ืคื•ืŸ ื“ื™ ืกืงืจืขืขื ืฉืึธืฅ ืื•ื™ื‘ืŸ).

ื ืึธืš ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข

ืกืึธืฃ

Kubernetes ื ืขืฅ ืคึผืึทืœืึทืกื™ื– ืคืึธืจืฉืœืึธื’ืŸ ืึท ื’ื•ื˜ ื’ืึทื ื’ ืคื•ืŸ ืžื›ืฉื™ืจื™ื ืคึฟืึทืจ ืกืขื’ืžืขื ื˜ื™ื ื’ ืงืœืึทืกื˜ืขืจื–, ืึธื‘ืขืจ ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื™ื ื˜ื•ืึทื˜ื™ื•ื• ืื•ืŸ ื”ืึธื‘ืŸ ืคื™ืœืข ืกืึทื˜ืึทืœื˜ื™ื–. ื•ื•ื™ื™ึทืœ ืคื•ืŸ ื“ืขื ืงืึทืžืคึผืœืขืงืกื™ื˜ื™, ืื™ืš ื’ืœื•ื™ื‘ืŸ ืคื™ืœืข ื™ื’ื–ื™ืกื˜ื™ื ื’ ืงื ื•ื™ืœ ืคึผืึทืœืึทืกื™ื– ื–ืขื ืขืŸ ื•ื•ืึธื’ืŸ. ืžืขื’ืœืขืš ืกืึทืœื•ืฉืึทื ื– ืฆื• ื“ืขื ืคึผืจืึธื‘ืœืขื ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืึธื˜ืึทืžื™ื™ื˜ื™ื ื’ ืคึผืึธืœื™ื˜ื™ืง ื“ืขืคึฟื™ื ื™ืฆื™ืข ืึธื“ืขืจ ื ื™ืฆืŸ ืื ื“ืขืจืข ืกืขื’ืžืึทื ื˜ื™ื™ืฉืึทืŸ ืžื›ืฉื™ืจื™ื.

ืื™ืš ื”ืึธืคึฟืŸ ืึทื– ื“ืขืจ ืคื™ืจืขืจ ื”ืขืœืคึผืก ื•ื™ืกืžืขืงืŸ ืขื˜ืœืขื›ืข ืคืจืื’ืขืก ืื•ืŸ ืกืึธืœื•ื•ืข ื™ืฉื•ื– ื•ื•ืึธืก ืื™ืจ ืงืขืŸ ื˜ืจืขืคืŸ.

ืคึผืก ืคื•ืŸ ืื™ื‘ืขืจื–ืขืฆืขืจ

ืœื™ื™ืขื ืขืŸ ืื•ื™ืš ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื‘ืœืึธื’:

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’