เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เปเบ›.: เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก Reuven Harrison เบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™เบซเบผเบฒเบเบเบงเปˆเบฒ 20 เบ›เบตเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบง, เปเบฅเบฐเปƒเบ™เบกเบทเป‰เบ™เบตเป‰เปเบกเปˆเบ™ CTO เปเบฅเบฐเบœเบนเป‰เบฎเปˆเบงเบกเบเปเปˆเบ•เบฑเป‰เบ‡เบ‚เบญเบ‡ Tufin, เบšเปเบฅเบดเบชเบฑเบ”เบ—เบตเปˆเบชเป‰เบฒเบ‡เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฅเบฒเบงเป€เบšเบดเปˆเบ‡เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบžเปเบชเบปเบกเบ„เบงเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™เบเบธเปˆเบก, เบฅเบฒเบงเบเบฑเบ‡เป€เบŠเบทเปˆเบญเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™เบ™เบตเป‰ (เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบกเบตเปเบชเบ‡เบชเบฐเบซเบงเปˆเบฒเบ‡) เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบฎเบฑเบšเบฎเบนเป‰เบ‚เบญเบ‡เบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบ™เบตเป‰เปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™.

เปƒเบ™เบกเบทเป‰เบ™เบตเป‰, เบšเปเบฅเบดเบชเบฑเบ”เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบเปเบฒเบฅเบฑเบ‡เป€เบฅเบทเบญเบ Kubernetes เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปƒเบ™เบŠเบญเบšเปเบงเบ™เบตเป‰เปเบกเปˆเบ™เบชเบนเบ‡เบซเบผเบฒเบเบ—เบตเปˆเบšเบฒเบ‡เบ„เบปเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒ Kubernetes "เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™." เบ„เปˆเบญเบเป†, Kubernetes (เบซเบผเบท k8s) เบเปเบฒเบฅเบฑเบ‡เป€เบฅเบตเปˆเบกเบ–เบทเบเบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบ—เบธเบฅเบฐเบเบดเบ”, เป€เบŠเบดเปˆเบ‡เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเปƒเบซเบเปˆเป€เบ•เบฑเบกเบ—เบตเปˆ, เบฅเบงเบกเบ—เบฑเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เป‚เบ”เบเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Kubernetes, เบเบฒเบ™เป€เบ›เบตเบ”เป€เบœเบตเบเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ™เบฐเป‚เบเบšเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป€เบงเบ—เบต: เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡.

เบ„เบนเปˆเบกเบทเบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ; เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเปเบฒเบฅเบฑเบš firewalls เบ›เบปเบเบเบฐเบ•เบดเปเบ™เบงเปƒเบ”. เบกเบฑเบ™เบเบฑเบ‡เบˆเบฐเบเบงเบกเป€เบญเบปเบฒเบšเบฒเบ‡เบ‚เบธเบกเปเบฅเบฐเปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป€เบžเบทเปˆเบญเบŠเปˆเบงเบเปƒเบซเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบ›เบญเบ”เป„เบžเปƒเบ™ Kubernetes.

เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes

เบเบปเบ™เป„เบเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เปเบžเบฅเบ”เบŸเบญเบกเบ—เบตเปˆเบŠเบฑเป‰เบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ (เบญเบฑเบ™เบ—เบตเบชเบฒเบกเปƒเบ™เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡ OSI). เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ‚เบฒเบ”เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบฑเป‰เบ™เบชเบนเบ‡เบ‚เบญเบ‡ Firewalls เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเป€เบŠเบฑเปˆเบ™: OSI Layer 7 เบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบžเบปเบšเป„เบžเบ‚เบปเปˆเบกเบ‚เบนเปˆ, เปเบ•เปˆเบžเบงเบเป€เบ‚เบปเบฒเบชเบฐเบซเบ™เบญเบ‡เบฅเบฐเบ”เบฑเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเป€เบ›เบฑเบ™เบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบ”เบต.

เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฑเบ

เบ›เบฐเบฅเบดเบกเบฒเบ™เบงเบฝเบเปƒเบ™ Kubernetes เปเบกเปˆเบ™เปเบˆเบเบขเบฒเบเป„เบ›เบ—เบปเปˆเบงเบžเบญเบ”, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเปœเบถเปˆเบ‡ เบซเบผเบทเบซเบผเบฒเบเบ–เบฑเบ‡เบ—เบตเปˆเบ™เบณเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™. Kubernetes เบเบณเบ™เบปเบ”เปเบ•เปˆเบฅเบฐเบเบฑเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบขเบนเปˆ IP เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เบˆเบฒเบเบžเบญเบ”เบญเบทเปˆเบ™. เบ™เบฐโ€‹เป‚เบโ€‹เบšเบฒเบโ€‹เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบ Kubernetes เบ•เบฑเป‰เบ‡โ€‹เบชเบดเบ”โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบธเปˆเบกโ€‹เบ‚เบญเบ‡ pods เปƒเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบเบธเปˆเบกโ€‹เบ„เบงเบฒเบกโ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹เปƒเบ™โ€‹เบ„โ€‹เบฅเบฒเบงโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป€เบžเบทเปˆเบญโ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡ virtual machines.

เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ 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. เบžเบฒเบชเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบซเบเปเป‰เปœเป‰เบฒ (เบฅเบฐเบšเบธเป‚เบ”เบเบเบฐเบซเบงเปˆเบฒเบ‡เบซเบผเบฒเบเบเบงเปˆเบฒเปเบ–เบš). เบญเบปเบ‡เบ›เบฐเบเบญเบšเบซเบเปเป‰เปœเป‰เบฒเป€เบ›เบฑเบ™เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบซเบเปเป‰เปœเป‰เบฒเบ—เบตเปˆเปƒเบเป‰เบ—เบตเปˆเบชเบธเบ”เบขเบนเปˆเป€เบ—เบดเบ‡เบกเบฑเบ™. เบญเบปเบ‡เบ›เบฐเบเบญเบšเบฅเบฒเบเบŠเบทเปˆเปƒเปเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ‚เบตเบ”เปเบฒเบ, เบญเบปเบ‡เบ›เบฐเบเบญเบšเบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เปเบปเบ”เบกเบตเปเบšเบšเบŸเบญเบก key-value.

เป‚เบ”เบเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบ™เบฐเป‚เบเบšเบฒเบเปƒเบ™ YAML, เปƒเบซเป‰เปƒเบŠเป‰ kubectlเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบเบธเปˆเบก:

kubectl create -f policy.yaml

เบเบฒเบ™เบฅเบฐเบšเบธเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ

เบ‚เปเป‰เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบ›เบฐเบเบญเบšเบกเบตเบชเบตเปˆเบญเบปเบ‡เบ›เบฐเบเบญเบš:

  1. podSelector: เบเปเบฒเบ™เบปเบ”เบเบฑเบเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบ™เบฐเป‚เบเบšเบฒเบเบ™เบตเป‰ (เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ) - เบ•เป‰เบญเบ‡เบเบฒเบ™;
  2. policyTypes: เบŠเบตเป‰เบšเบญเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ—เบตเปˆเบฅเบงเบกเบขเบนเปˆเปƒเบ™เบ™เบตเป‰: ingress เปเบฅเบฐ / เบซเบผเบท egress - เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เปƒเบ™เบ—เบธเบเบเปเบฅเบฐเบ™เบต;
  3. ingress: เบเปเบฒเบ™เบปเบ”เบญเบฐเบ™เบธเบเบฒเบ” เป€เบ‚เบปเป‰เบฒเบกเบฒ เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบซเบฒเป€เบกเบฑเบ”เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ - เบ—เบฒเบ‡เป€เบฅเบทเบญเบ;
  4. egress: เบเปเบฒเบ™เบปเบ”เบญเบฐเบ™เบธเบเบฒเบ” เบฅเบฒเบเบˆเปˆเบฒเบ เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบˆเบฒเบ pods เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเป€เบญเบปเบฒเบกเบฒเบˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ—เปŒ 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, เบ™เบฐโ€‹เป‚เบโ€‹เบšเบฒเบโ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ•เบตโ€‹เบฅเบฒโ€‹เบ„เบฒโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

  • เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบกเบฑเบ™เปเบกเปˆเบ™เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบกเบฑเบ™เบเปเบฒเบ™เบปเบ”เบ”เป‰เบฒเบ™ ingress. เบ–เป‰เบฒเบ™เบฐเป‚เบเบšเบฒเบเบšเปเปˆเป„เบ”เป‰เบšเบญเบเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡, เบฅเบฐเบšเบปเบšเบˆเบฐเบ–เบทเบงเปˆเบฒเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบฑเบ‡เปเบปเบ”เบ–เบทเบเบซเป‰เบฒเบก.
  • เบžเบถเบ”เบ•เบดเบเปเบฒเบขเบนเปˆเบ‚เป‰เบฒเบ‡ egress เบˆเบฐเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบฒเบ™เบกเบตเบซเบผเบทเบšเปเปˆเบกเบตเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™ egress เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™.

เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบœเบดเบ”เบžเบฒเบ”เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰ เบชเบฐเป€เบซเบกเบตเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบŠเบฑเบ”เป€เบˆเบ™ policyTypes.

เบญเบตเบ‡เบ•เบฒเบกเป€เบซเบ”เบœเบปเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบ–เป‰เบฒเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™ ingress เปเบฅเบฐ / เบซเบผเบท egress เบเบปเบเป€เบงเบฑเป‰เบ™, เบ™เบฐเป‚เบเบšเบฒเบเบˆเบฐเบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” (เป€เบšเบดเปˆเบ‡ "เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบฅเบญเบเป€เบญเบปเบฒ" เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰).

เบ™เบฐเป‚เบเบšเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”

เบ–เป‰เบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ™เบฐเป‚เบเบšเบฒเบ, Kubernetes เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบเบฑเบเบ—เบฑเบ‡เปเบปเบ”เบชเบฒเบกเบฒเบ”เปเบฅเบเบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฑเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เป€เบชเบฅเบต. เบญเบฑเบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบšเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž, เปเบ•เปˆเบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒ Kubernetes เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เป‚เบ”เบเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบ™เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ”เป‰. เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเบ•เปเปˆเบกเบฒ.

Namespaces

Namespaces เปเบกเปˆเบ™เบเบปเบ™เป„เบเบเบฒเบ™เบฎเปˆเบงเบกเบกเบท Kubernetes. เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบญเบญเบเปเบšเบšเป€เบžเบทเปˆเบญเปเบเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™เบˆเบฒเบเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบš Kubernetes เบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™ namespace เบชเบฐเป€เบžเบฒเบฐ. เปƒเบ™เบ•เบฑเบ™ metadata เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธเบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบ™เบฐเป‚เบเบšเบฒเบเป€เบ›เบฑเบ™เบ‚เบญเบ‡:

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

เบ–เป‰เบฒ namespace เบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เปƒเบ™ metadata, เบฅเบฐเบšเบปเบšเบˆเบฐเปƒเบŠเป‰ namespace เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ kubectl (เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. namespace=default):

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

เบ‚เป‰เบญเบเบ‚เปเปเบ™เบฐ เบ™เบณ เบฅเบฐเบšเบธ namespace เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡, เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบ‚เบฝเบ™เบ™เบฐเป‚เบเบšเบฒเบเบ—เบตเปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบซเบผเบฒเบ namespaces เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™.

เบซเบฅเบฑเบ เบญเบปเบ‡เบ›เบฐเบเบญเบš podSelector เปƒเบ™เบ™เบฐเป‚เบเบšเบฒเบเบˆเบฐเป€เบฅเบทเบญเบ pods เบˆเบฒเบ namespace เบ—เบตเปˆเบ™เบฐเป‚เบเบšเบฒเบเบ‚เบถเป‰เบ™เบเบฑเบš (เบกเบฑเบ™เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ pods เบˆเบฒเบ namespace เบญเบทเปˆเบ™).

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, podSelectors เปƒเบ™ ingress เปเบฅเบฐ egress เบ•เบฑเบ™ เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเบเบฑเบเบˆเบฒเบ namespace เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบญเบ‡, เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเปเบ™เปˆเบ™เบญเบ™เบ—เปˆเบฒเบ™เบชเบปเบกเบ—เบปเบšเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบเบฑเบš namespaceSelector (เบ™เบตเป‰เบˆเบฐเบ–เบทเบเบชเบปเบ™เบ—เบฐเบ™เบฒเปƒเบ™เบžเบฒเบ "เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เป‚เบ”เบ namespaces เปเบฅเบฐ pods").

เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบŠเบทเปˆเบ™เบฐเป‚เบเบšเบฒเบ

เบŠเบทเปˆเบ™เบฐเป‚เบเบšเบฒเบเปเบกเปˆเบ™เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเบžเบฒเบเปƒเบ™ namespace เบ”เบฝเบงเบเบฑเบ™. เบšเปเปˆเบชเบฒเบกเบฒเบ”เบกเบตเบชเบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เบขเบนเปˆเปƒเบ™เบŠเปˆเบญเบ‡เบ”เบฝเบงเบเบฑเบ™, เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบกเบตเบ™เบฐเป‚เบเบšเบฒเบเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เบขเบนเปˆเปƒเบ™เบŠเปˆเบญเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบญเบฑเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ™เบฐเป‚เบเบšเบฒเบเบ”เบฝเบงเบเบฑเบ™เบ„เบทเบ™เปƒเปเปˆเปƒเบ™เบ—เบปเปˆเบงเบซเบผเบฒเบเบŠเปˆเบญเบ‡.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปเบกเปˆเบ™เบกเบฑเบเบซเบ™เบถเปˆเบ‡เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบŠเบทเปˆ. เบกเบฑเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบฒเบ™เบฅเบงเบกเบŠเบทเปˆ namespace เบเบฑเบš pods เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

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, เป€เบŠเบฑเปˆเบ™: เบเบฑเบ เปเบฅเบฐ namespaces. เบ›เป‰เบฒเบเบเบณเบเบฑเบš (เบ›เป‰เบฒเบเบเปเบฒเบเบฑเบš - tags) เปเบกเปˆเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบเบฑเบš tags เปƒเบ™เป€เบกเบ„. เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เปƒเบŠเป‰เบ›เป‰เบฒเบเบเบณเบเบฑเบšเป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบ เบเบฑเบเบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฐเบซเบกเบฑเบ:

podSelector:
  matchLabels:
    role: db

โ€ฆ เบซเบผเบท namespacesเบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฐเบซเบกเบฑเบ. เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เป€เบฅเบทเบญเบ pods เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ namespaces เบ—เบตเปˆเบกเบตเบ›เป‰เบฒเบเบŠเบทเปˆเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™:

namespaceSelector:
  matchLabels:
    project: myproject

เบ‚เปเป‰เบ„เบงเบ™เบฅเบฐเบงเบฑเบ‡เบซเบ™เบถเปˆเบ‡: เป€เบกเบทเปˆเบญเปƒเบŠเป‰ namespaceSelector เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒ namespaces เบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบฅเบทเบญเบเบกเบตเบ›เป‰เบฒเบเบŠเบทเปˆเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบˆเบปเปˆเบ‡เบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒเบชเป‰เบฒเบ‡เปƒเบ™ namespaces เป€เบŠเบฑเปˆเบ™ default ะธ kube-system, เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบšเปเปˆเบกเบตเบ›เป‰เบฒเบเบŠเบทเปˆ.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ›เป‰เบฒเบเบŠเบทเปˆเปƒเบชเปˆเบŠเปˆเบญเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

kubectl label namespace default namespace=default

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, namespace เปƒเบ™เบžเบฒเบ metadata เบ„เบงเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบŠเบทเปˆเบžเบทเป‰เบ™เบ—เบตเปˆเบ•เบปเบงเบˆเบดเบ‡, เบšเปเปˆเปเบกเปˆเบ™เบ›เป‰เบฒเบเบŠเบทเปˆ:

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

เปเบซเบผเปˆเบ‡เปเบฅเบฐเบ›เบฒเบเบ—เบฒเบ‡

เบ™เบฐเป‚เบเบšเบฒเบ Firewall เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเบกเบตเปเบซเบผเปˆเบ‡เปเบฅเบฐเบˆเบธเบ”เบซเบกเบฒเบเบ›เบฒเบเบ—เบฒเบ‡. เบ™เบฐโ€‹เป‚เบโ€‹เบšเบฒเบโ€‹เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบ Kubernetes เบ–เบทเบโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบ - เบŠเบธเบ”โ€‹เบ‚เบญเบ‡ pods เบ—เบตเปˆโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ - เปเบฅเบฐโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบšโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบˆเบฐโ€‹เบฅเบฒโ€‹เบˆเบญเบ™ ingress เปเบฅเบฐ / เบซเบผเบท egress. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบˆเบฐเป€เบ›เบฑเบ™ pods เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ namespace 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 เปƒเบ™เบ™เบฐเป‚เบเบšเบฒเบเบ™เบตเป‰, เป€เบ›เบตเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เบซเบฒ pods เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ. เปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบญเบทเปˆเบ™เป†, ingress เปเบกเปˆเบ™เปเบซเบผเปˆเบ‡เปเบฅเบฐเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบกเปˆเบ™เบˆเบธเบ”เบซเบกเบฒเบเบ›เบฒเบเบ—เบฒเบ‡เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, egress เปเบกเปˆเบ™เบˆเบธเบ”เบซเบกเบฒเบเบ›เบฒเบเบ—เบฒเบ‡เปเบฅเบฐเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบกเปˆเบ™เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบกเบฑเบ™.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบšเบชเบญเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡ Firewall: Ingress โ†’ Target; เป€เบ›เบปเป‰เบฒเปเบฒเบ โ†’ เบเป‰เบฒเบงเบญเบญเบ.

Egress เปเบฅเบฐ DNS (เบชเปเบฒเบ„เบฑเบ™!)

เป‚เบ”เบเบเบฒเบ™เบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเบญเบญเบ, เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเป€เบ›เบฑเบ™เบžเบดเป€เบชเบ”เบ•เปเปˆ DNS - Kubernetes เปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เบ™เบตเป‰เป€เบžเบทเปˆเบญเปเบœเบ™เบ—เบตเปˆเบšเปเบฅเบดเบเบฒเบ™เป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆ IP. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ™เบฐเป‚เบเบšเบฒเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป€เบžเบฒเบฐเบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ balance เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ DNS:

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 เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เป€เบ›เบตเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ DNS:

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 เปเบกเปˆเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เป‚เบ”เบเบ—เบฒเบ‡เบญเป‰เบญเบกเป€เบฅเบทเบญเบ เบเบฑเบเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ namespaces เบ—เบฑเบ‡เปเบปเบ”, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ balance เบชเบปเปˆเบ‡เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก DNS เป„เบ›เบซเบฒเบšเปเบฅเบดเบเบฒเบ™ Kubernetes เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก (เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆ kube-system).

เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบ, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เบซเบผเบฒเบโ€‹เป€เบเบตเบ™โ€‹เป„เบ›โ€‹เปเบฅเบฐโ€‹เบšเปเปˆโ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก DNS เบ–เบทเบเบ™เปเบฒเป„เบ›เบ™เบญเบเบเบธเปˆเบก.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ›เบธเบ‡เบกเบฑเบ™เป„เบ”เป‰เปƒเบ™เบชเบฒเบกเบ‚เบฑเป‰เบ™เบ•เบญเบ™.

1. เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเบญเบšเบ–เบฒเบก DNS เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ เบžเบฒเบเปƒเบ™ เบเบธเปˆเบกเป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบก 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. เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเบญเบšเบ–เบฒเบก DNS เบžเบฒเบเปƒเบ™ namespace เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ kube-system.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบ›เป‰เบฒเบเบŠเบทเปˆเปƒเบชเปˆ namespace 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. เบ„เบปเบ™ Paranoid เบชเบฒเบกเบฒเบ”เป„เบ›เบ•เบทเปˆเบกเบญเบตเบเปเบฅเบฐเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก DNS เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ DNS เบชเบฐเป€เบžเบฒเบฐเปƒเบ™ kube-system. เบžเบฒเบเบชเปˆเบงเบ™ "เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เป‚เบ”เบ namespaces เปเบฅเบฐ pods" เบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบšเบฑเบ™เบฅเบธเป„เบ”เป‰.

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เปเบกเปˆเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚ DNS เปƒเบ™เบฅเบฐเบ”เบฑเบš namespace. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบกเบฑเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ›เบตเบ”เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™:

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 เป€เบฅเบทเบญเบเบเบฑเบเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ namespace.

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบ„เปเบฒเบชเบฑเปˆเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบš

เปƒเบ™ Firewalls เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” (เบญเบฐเบ™เบธเบเบฒเบ”เบซเบผเบทเบ›เบฐเบ•เบดเป€เบชเบ”) เปƒเบ™เปเบžเบฑเบเป€เบเบฑเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบกเบฑเบ™เบžเปเปƒเบˆ. เปƒเบ™ Kubernetes, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบšเปเปˆเบชเปเบฒเบ„เบฑเบ™.

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบกเบทเปˆเบญเบšเปเปˆเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ™เบฐเป‚เบเบšเบฒเบ, เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฑเบเปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ” เปเบฅเบฐเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เปเบฅเบเบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เป€เบชเบฅเบต. เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบ, เปเบ•เปˆเบฅเบฐเบเบฑเบเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเป‚เบ”เบ”เบ”เปˆเบฝเบงเบ•เบฒเบกเบ„เบงเบฒเบกเปเบ•เบเปเบเบ (เบซเบผเบทเป€เบซเบ”เบœเบปเบ™) เบ‚เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป€เบฅเบทเบญเบเบกเบฑเบ™. Pods เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฐเบ—เบปเบšเบˆเบฒเบเบ™เบฐเป‚เบเบšเบฒเบเปƒเบ”เป†เบเบฑเบ‡เบ„เบปเบ‡เป€เบ›เบตเบ”เบขเบนเปˆ.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบฅเบญเบเป€เบญเบปเบฒ.

เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบ–เบญเบ”เบญเบญเบ ("เบ›เบฐเบ•เบดเป€เบชเบ”")

เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบ™เบฐเป‚เบเบšเบฒเบ Firewall เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปƒเบ”เป†เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™.

เบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เปƒเบ™ Kubernetesเปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เบ”เป‰เบงเบเบ™เบฐเป‚เบเบšเบฒเบเบ›เบปเบเบเบฐเบ•เบด (เบญเบฐเบ™เบธเบเบฒเบ”) เป‚เบ”เบเบเบฒเบ™เป€เบฅเบทเบญเบเบเบธเปˆเบกเป€เบ›เบปเปˆเบฒเบ‚เบญเบ‡เบเบฑเบเปเบซเบผเปˆเบ‡ (ingress):

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

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบ™เบฐเป‚เบเบšเบฒเบเบ™เบตเป‰เป€เบฅเบทเบญเบ pods เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ namespace เปเบฅเบฐเบ›เปˆเบญเบเปƒเบซเป‰ ingress เบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”, เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”.

เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเบญเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบ namespace:

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

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ เบ™เบฐโ€‹เป‚เบโ€‹เบšเบฒเบโ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบˆเบฐโ€‹เบฅเบฒโ€‹เบˆเบญเบ™โ€‹เป„เบ› pods เปƒเบ™ namespace เบˆเบฐโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เปƒเบ™โ€‹เป„เบฅโ€‹เบเบฐโ€‹เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบšโ€‹เบ™เบตเป‰โ€‹ (เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบเปˆเบญเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป„เบŸเบงเป).

เบญเบฐเบ™เบธเบเบฒเบ”เบ—เบธเบเบขเปˆเบฒเบ‡ (Any-Any-Any-Allow)

เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบญเบฐเบ™เบธเบเบฒเบ”เบ—เบฑเบ‡เปเบปเบ”, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบ™เบฐเป‚เบเบšเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ”เป‰เบงเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ ingress:

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

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบกเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบˆเบฒเบ pods เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ namespaces เบ—เบฑเบ‡เบซเบกเบปเบ” (เปเบฅเบฐ IP เบ—เบฑเบ‡เบซเบกเบปเบ”) เบเบฑเบš pod เปƒเบ”เปƒเบ™ namespace default. เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบกเบฑเบเบˆเบฐเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบ•เบทเปˆเบกเบญเบตเบ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบ›เบดเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบชเบฐเป€เบžเบฒเบฐเบšเบฒเบ‡เบญเบฑเบ™เบŠเบปเปˆเบงเบ„เบฒเบงเป€เบžเบทเปˆเบญเบงเบดเบ™เบดเบ”เป„เบชเบšเบฑเบ™เบซเบฒ.

เบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเบฒเบกเบฒเบ”เปเบ„เบšเบฅเบปเบ‡เป€เบžเบทเปˆเบญเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบฝเบ‡เปเบ•เปˆ เบŠเบธเบ”เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบเบฑเบ (app:balance) เปƒเบ™ namespace เป„เบ”เป‰ 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 เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบซเบผเบฒเบเบ™เบฐเป‚เบเบšเบฒเบ

เบ™เบฐเป‚เบเบšเบฒเบเปเบกเปˆเบ™เบฅเบงเบกเบเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เป€เบซเบ”เบœเบปเบ™ OR เปƒเบ™เบชเบฒเบกเบฅเบฐเบ”เบฑเบš; เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบเบฑเบเปเบกเปˆเบ™เบ–เบทเบเบเบณเบ™เบปเบ”เปƒเบซเป‰เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบเบฒเบ™เปเบเบเบ™เบฐเป‚เบเบšเบฒเบเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบเบฑเบšเบกเบฑเบ™:

1. เปƒเบ™เบ—เบปเปˆเบ‡เบ™เบฒ from ะธ to เบชเบฒเบกเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ” (เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ OR):

  • namespaceSelector โ€” เป€เบฅเบทเบญเบ namespace เบ—เบฑเบ‡ เบซเบกเบปเบ”;
  • podSelector - เป€เบฅเบทเบญเบเบเบฑเบ;
  • ipBlock โ€” เป€เบฅเบทเบญเบ subnet เป€เบ›เบฑเบ™.

เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš (เปเบกเป‰เปเบ•เปˆเบญเบฑเบ™เบ”เบฝเบงเบเบฑเบ™) เปƒเบ™เบชเปˆเบงเบ™เบเปˆเบญเบ 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

เปเบ•เปˆเป€เบกเบทเปˆเบญเบฅเบงเบกเบžเบงเบเบกเบฑเบ™, เบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆ เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™ Chris Cooney: Kubernetes เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบชเบปเบกเบ—เบปเบšเบ™เบฐเป‚เบเบšเบฒเบเบเบฑเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ policyTypes (Ingress เบซเบผเบท Egress). เบ™เบฐเป‚เบเบšเบฒเบเบ—เบตเปˆเบเปเบฒเบ™เบปเบ” ingress (เบซเบผเบท egress) เบˆเบฐเบ‚เบฝเบ™เบ—เบฑเบšเป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™.

เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ namespaces

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ namespaces เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบ™เบฐเป‚เบเบšเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบ—เบตเปˆเบˆเบฐเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเบญเบญเบเปเบฅเบฐ / เบซเบผเบทเบ‚เบฒเป€เบ‚เบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ namespace (เป€เบšเบดเปˆเบ‡ "เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบฅเบญเบเป€เบญเบปเบฒ" เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡).

เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป„เบ”เป‰เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ namespace (เป€เบšเบดเปˆเบ‡ "เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบฅเบญเบเป€เบญเบปเบฒ" เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡), เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบปเบเป€เบงเบฑเป‰เบ™เบ™เบฐเป‚เบเบšเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เป‚เบ”เบเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบˆเบฒเบ namespace เบชเบฐเป€เบžเบฒเบฐเป‚เบ”เบเปƒเบŠเป‰ 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 เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ namespace default เบˆเบฐเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฑเบ postgres เปƒเบ™ namespace database. เปเบ•เปˆเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ postgres เบชเบฐเป€เบžเบฒเบฐเบเบฑเบเปƒเบ™ namespace default?

เบเบฑเปˆเบ™เบ•เบญเบ‡เบ•เบฒเบก namespaces เปเบฅเบฐ pods

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.

เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเบเบฑเบเบ—เบตเปˆเบกเบตเบ›เป‰เบฒเบเบชเบฐเป€เบžเบฒเบฐ เปƒเบ™ namespaces เบ—เบฑเบ‡เบซเบกเบปเบ”, เปƒเบชเปˆเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡ 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

เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบšโ€‹เบชเปเบฒโ€‹เบฅเบฑเบš firewall เบ—เบตเปˆโ€‹เบกเบตโ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹เบซเบผเบฒเบ (เปเบกเปˆโ€‹เบ‚เปˆเบฒเบโ€‹, เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบโ€‹, เบเบธเปˆเบกโ€‹) เบ–เบทเบโ€‹เบฅเบงเบกโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบเบฑเบ™โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบขเปˆเบฒเบ‡โ€‹เบกเบตโ€‹เป€เบซเบ”โ€‹เบœเบปเบ™ ORโ€‹. เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบ–เป‰เบฒเปเบซเบผเปˆเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบเบปเบ‡เบเบฑเบ™ Host_1 OR Host_2:

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

เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เปƒเบ™ Kubernetes เบ›เป‰เบฒเบเบŠเบทเปˆเบ•เปˆเบฒเบ‡เป†เปƒเบ™ podSelector เบซเบผเบท namespaceSelector เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบšเป€เบซเบ”เบœเบปเบ™ AND. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฐเป€เบฅเบทเบญเบ pods เบ—เบตเปˆเบกเบตเบ›เป‰เบฒเบเบŠเบทเปˆเบ—เบฑเบ‡เบชเบญเบ‡, role=db ะ˜ version=v2:

podSelector:
  matchLabels:
    role: db
    version: v2

เป€เบซเบ”เบœเบปเบ™เบ”เบฝเบงเบเบฑเบ™เปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบšเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™: เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบ›เบปเป‰เบฒเปเบฒเบเบ™เบฐเป‚เบเบšเบฒเบ, เบ•เบปเบงเป€เบฅเบทเบญเบเบžเบญเบ”, เปเบฅเบฐเบ•เบปเบงเป€เบฅเบทเบญเบ namespace.

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบ เปเบฅเบฐเบ—เบตเปˆเบขเบนเปˆ IP (IPBlocks)

Firewalls เปƒเบŠเป‰ VLANs, เบ—เบตเปˆเบขเบนเปˆ IP, เปเบฅเบฐเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเป€เบžเบทเปˆเบญเปเบšเปˆเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

เปƒเบ™ Kubernetes, เบ—เบตเปˆเบขเบนเปˆ IP เป„เบ”เป‰เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰ pods เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบฅเบทเป‰เบญเบเป†, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ›เป‰เบฒเบเบŠเบทเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบ pods เปเบฅเบฐ namespaces เปƒเบ™เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบ (ipBlocks) เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒ (เบ‚เบฒโ€‹เป€เบ‚เบปเป‰เบฒโ€‹) เบซเบผเบทโ€‹เบ‚เบฒโ€‹เบญเบญเบ (egressโ€‹) เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เบžเบฒเบโ€‹เบ™เบญเบ (เป€เบซเบ™เบทเบญโ€‹เปƒเบ•เป‰โ€‹)โ€‹. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ™เบฐเป‚เบเบšเบฒเบเบ™เบตเป‰เป€เบ›เบตเบ”เปƒเบซเป‰เบ—เบธเบ pods เบˆเบฒเบ namespace default เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ DNS เบ‚เบญเบ‡ Google:

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 เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบ•เบปเบงเป€เบฅเบทเบญเบเบเบฑเบเป€เบ›เบปเปˆเบฒเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ "เป€เบฅเบทเบญเบเบเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ namespace."

เบ™เบฐเป‚เบเบšเบฒเบเบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ 8.8.8.8 เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™; เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ IP เบญเบทเปˆเบ™เป†เปเบกเปˆเบ™เบ–เบทเบเบซเป‰เบฒเบก. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบง, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบชเบฐเบเบฑเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ DNS Kubernetes เบžเบฒเบเปƒเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบกเบฑเบ™, เปƒเบซเป‰เบŠเบตเป‰เบšเบญเบเบญเบฑเบ™เบ™เบตเป‰เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡.

เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง ipBlocks ะธ podSelectors เปเบกเปˆเบ™เบชเบฐเป€เบžเบฒเบฐเป€เบŠเบดเปˆเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบเบฑเบเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ ipBlocks. เป‚เบ”เบเบเบฒเบ™เบŠเบตเป‰เบšเบญเบ เบเบฑเบ IP เบžเบฒเบเปƒเบ™, เบ—เปˆเบฒเบ™เบˆเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ / เบˆเบฒเบ pods เบเบฑเบšเบ—เบตเปˆเบขเบนเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปƒเบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบˆเบฐเปƒเบŠเป‰เบ—เบตเปˆเบขเบนเปˆ IP เปƒเบ”, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบ„เบงเบ™เปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเบเบฑเบ.

เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เป‰เบฒเบ™, เบ™เบฐเป‚เบเบšเบฒเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบต IPs เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ pods เบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เบซเบกเบปเบ”:

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 เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบฝเบ‡เปเบ•เปˆ IPs เบžเบฒเบเบ™เบญเบ, เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ pods. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเบ‚เบญเบ‡เบžเบญเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบกเปˆเบ™ 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 เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž

เบžเบญเบ”เปเบฅเบฐเป‚เบ›เป‚เบ•เบ„เบญเบ™

เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด pods เบŸเบฑเบ‡เบซเบ™เบถเปˆเบ‡เบžเบญเบ”. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ•เบปเบงเป€เบฅเบเบžเบญเบ”เปƒเบ™เบ™เบฐเป‚เบเบšเบฒเบเปเบฅเบฐเบ›เปˆเบญเบเปƒเบซเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เป€เบฎเบฑเบ”เบ™เบฐเป‚เบเบšเบฒเบเบˆเปเบฒเบเบฑเบ”เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบžเบญเบ”:

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), เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบญเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”: เบขเปˆเบฒเบญเบตเบ‡เปƒเบชเปˆเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบฅเบฐเบšเบธเบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡.

เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบžเบญเบ”เบžเบญเบ”, เบšเปเปˆเปเบกเปˆเบ™เบžเบญเบ”เบšเปเบฅเบดเบเบฒเบ™ (เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เปƒเบ™เบงเบฑเบเบ•เปเปˆเป„เบ›).

เบ™เบฐเป‚เบเบšเบฒเบเบ–เบทเบเบเปเบฒเบ™เบปเบ”เบชเปเบฒเบฅเบฑเบš pods เบซเบผเบทเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™?

เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, pods เปƒเบ™ Kubernetes เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ - virtual load balancer เบ—เบตเปˆเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบซเบฒ pods เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ„เบดเบ”เบงเปˆเบฒเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบต. เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบžเบญเบ”เบžเบญเบ”, เบšเปเปˆเปเบกเปˆเบ™เบžเบญเบ”เบšเปเบฅเบดเบเบฒเบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบšเปเบฅเบดเบเบฒเบ™เบŸเบฑเบ‡เบžเบญเบ” 80, เปเบ•เปˆเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™เป„เบ›เบซเบฒเบžเบญเบ” 8080 เบ‚เบญเบ‡เบเบฑเบเบ‚เบญเบ‡เบกเบฑเบ™, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธ 8080 เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เปƒเบ™เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

เบเบปเบ™เป„เบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”: เบ–เป‰เบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ (เบšเบฑเบ™เบ”เบฒเบ—เปˆเบฒเป€เบฎเบทเบญเบ—เบตเปˆ pods เบŸเบฑเบ‡) เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบˆเบฐเบ•เป‰เบญเบ‡เบ›เบฑเบšเบ›เบธเบ‡.

เบงเบดเบ—เบตเบเบฒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปƒเบซเบกเปˆเป‚เบ”เบเปƒเบŠเป‰ Service Mesh (เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบšเบดเปˆเบ‡เบเปˆเบฝเบงเบเบฑเบš Istio เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰ - approx. transl.) เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบžเบทเปˆเบญเบฎเบฑเบšเบกเบทเบเบฑเบšเบšเบฑเบ™เบซเบฒเบ™เบตเป‰.

เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบฑเบ‡ Ingress เปเบฅเบฐ Egress เบšเป?

เบ„เปเบฒเบ•เบญเบšเบชเบฑเป‰เบ™เปเบกเปˆเบ™เปเบกเปˆเบ™เปเบฅเป‰เบง, เป€เบžเบทเปˆเบญเปƒเบซเป‰ pod A เบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เบเบฑเบš pod B, เบกเบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบฒเบญเบญเบ (เบชเปเบฒเบฅเบฑเบšเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบ™เบฐเป‚เบเบšเบฒเบ egress), เปเบฅเบฐ pod B เบˆเบฐเบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบฒเป€เบ‚เบปเป‰เบฒ ( เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰, เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบฐเป‚เบเบšเบฒเบ ingress).

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เปƒเบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเบตเบ‡เปƒเบชเปˆเบ™เบฐเป‚เบเบšเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบžเบทเปˆเบญเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบ—เบฑเบ‡เบชเบญเบ‡เบ—เบดเบ”เบ—เบฒเบ‡.

เบ–เป‰เบฒเบšเบฒเบ‡เบเบฑเบ -เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™ เบˆเบฐเบ–เบทเบเป€เบฅเบทเบญเบเป‚เบ”เบเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™ เบœเบนเป‰เบเบดเบ‡- เบ™เบฑเบเบเบฒเบ™เป€เบกเบทเบญเบ‡, เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ—เบตเปˆเบงเบฒเบ‡เป„เบงเป‰เบˆเบฐเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบฒเบ™เปเบšเปˆเบ‡เปเบเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰โ€‹, เบ—เปˆเบฒเบ™โ€‹เบˆเบฐโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เบเบฑเบšโ€‹เบเบฑเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™ -เบเบฑเบšเบœเบนเป‰เบฎเบฑเบš. เบ–เป‰เบฒ pod เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบฅเบทเบญเบเป‚เบ”เบเบ™เบฐเป‚เบเบšเบฒเบเปƒเบ”เป†, เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเบญเบญเบเบ‚เบญเบ‡เบกเบฑเบ™เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เบŠเบฐเบ•เบฒเบเปเบฒเบ‚เบญเบ‡เบเบฑเบเปเบกเปˆเบ™เบ—เบตเปˆเบขเบนเปˆ, เป€เบฅเบทเบญเบเป‚เบ”เบเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™ เป€เบ„เบทเปˆเบญเบ‡เบ”เบทเปˆเบก- เบ™เบฑเบเบเบฒเบ™เป€เบกเบทเบญเบ‡, เบˆเบฐเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบ disjunction เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบˆเบฒเบเบเบฑเบเปเบซเบผเปˆเบ‡เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™. เบ–เป‰เบฒ pod เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบฅเบทเบญเบเป‚เบ”เบเบ™เบฐเป‚เบเบšเบฒเบเปƒเบ”เป†, เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบฒเป€เบ‚เบปเป‰เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เป€เบšเบดเปˆเบ‡ Stateful เบซเบผเบท Stateless เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

เบšเบฑเบ™เบ—เบถเบ

เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบšเปเปˆเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ”เป‰. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบ™เบฐเป‚เบเบšเบฒเบเปเบกเปˆเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž.

เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบžเบฒเบเบ™เบญเบ

เบ™เบฐโ€‹เป‚เบโ€‹เบšเบฒเบโ€‹เป€เบ„เบทเบญโ€‹เบ‚เปˆเบฒเบ Kubernetes เบšเปเปˆโ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบŠเบทเปˆโ€‹เป‚เบ”โ€‹เป€เบกเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบ„เบธเบ™โ€‹เบชเบปเบกโ€‹เบšเบฑเบ” (DNS) เบขเปˆเบฒเบ‡โ€‹เป€เบ•เบฑเบกโ€‹เบ—เบตเปˆโ€‹เปƒเบ™โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™ egress. เบ„เบงเบฒเบกเบˆเบดเบ‡เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบšเปเปˆเบชเบฐเบ”เบงเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบซเบฒเบˆเบธเบ”เบซเบกเบฒเบเบ›เบฒเบเบ—เบฒเบ‡เบžเบฒเบเบ™เบญเบเบ—เบตเปˆเบšเปเปˆเบกเบตเบ—เบตเปˆเบขเบนเปˆ IP เบ„เบปเบ‡เบ—เบตเปˆ (เป€เบŠเบฑเปˆเบ™: aws.com).

เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ™เบฐเป‚เบเบšเบฒเบ

Firewalls เบˆเบฐเป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบซเบผเบทเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบ›เบฐเบ•เบดเป€เบชเบ”เบ—เบตเปˆเบˆเบฐเบเบญเบกเบฎเบฑเบšเบ™เบฐเป‚เบเบšเบฒเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. Kubernetes เบเบฑเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เป€เบกเบทเปˆเบญเบ•เบฑเป‰เบ‡เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบœเปˆเบฒเบ™ kubectl, Kubernetes เบญเบฒเบ”เบˆเบฐเบ›เบฐเบเบฒเบ”เบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ เปเบฅเบฐเบ›เบฐเบ•เบดเป€เบชเบ”เบšเปเปˆเบเบญเบกเบฎเบฑเบšเบกเบฑเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบญเบทเปˆเบ™เป†, Kubernetes เบˆเบฐเป€เบญเบปเบฒเบ™เบฐเป‚เบเบšเบฒเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบฅเบฐเบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›. เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡:

kubernetes get networkpolicy <policy-name> -o yaml

เบˆเบปเปˆเบ‡เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบš Kubernetes เปเบกเปˆเบ™เบšเปเปˆเบœเบดเบ”เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบžเบฒเบ”เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”

Kubernetes เบšเปเปˆเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เปเบ•เปˆเป€เบ›เบฑเบ™เบžเบฝเบ‡เบ›เบฐเบ•เบน API เบ—เบตเปˆเบกเบญเบšเบซเบกเบฒเบเบžเบฒเบฅเบฐเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเปƒเบซเป‰เบเบฑเบšเบฅเบฐเบšเบปเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ Container Networking Interface (CNI). เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบฐเป‚เบเบšเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบเบธเปˆเบก Kubernetes เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ” CNI เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบเปˆเบฝเบงเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เป„เบŸเบงเปเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป„เบŸเบงเป. เบกเบฑเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ—เปˆเบฒเบ™เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบต CNI เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบซเบผเบท, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เป€เบงเบ—เบต Kubernetes, เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบšเบขเบนเปˆเปƒเบ™เบ„เบฅเบฒเบง. (เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบฅเบฒเบเบŠเบทเปˆเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ เบ—เบตเปˆเบ™เบตเป‰ โ€” เบ›เบฐโ€‹เบกเบฒเบ™โ€‹. trans.), เป€เบ›เบตเบ”เปƒเบŠเป‰เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ” CNI เบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ Kubernetes เบˆเบฐเบšเปเปˆเป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เบฑเป‰เบ‡เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเป‚เบ”เบเบšเปเปˆเบกเบตเบ•เบปเบงเบŠเปˆเบงเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก CNI.

Stateful เบซเบผเบท Stateless?

Kubernetes CNI เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบžเบปเบšเปเบกเปˆเบ™เบชเบฐเบ–เบฒเบ™เบฐ (เบ•เบปเบงเบขเปˆเบฒเบ‡, Calico เปƒเบŠเป‰ Linux conntrack). เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเบฑเบเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ—เบตเปˆเบกเบฑเบ™เบฅเบดเป€เบฅเบตเปˆเบกเป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบกเบฑเบ™เปƒเบซเบกเปˆ. เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ‚เป‰เบญเบเบšเปเปˆเบฎเบนเป‰เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ Kubernetes เบ—เบตเปˆเบˆเบฐเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™.

เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบฑเป‰เบ™เบชเบนเบ‡

เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบงเบดเบ—เบตเป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เบ™เบฐเป‚เบเบšเบฒเบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเปƒเบ™ Kubernetes:

  1. เบฎเบนเบšเปเบšเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ Service Mesh เปƒเบŠเป‰เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต sidecar เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ” telemetry เปเบฅเบฐเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒ เบญเบดเบŠเบดเป‚เบญ.
  2. เบœเบนเป‰เบ‚เบฒเบ CNI เบšเบฒเบ‡เบ„เบปเบ™เป„เบ”เป‰เบ‚เบฐเบซเบเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป„เบ›เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes.
  3. Tufin Orca เบชเบฐเปœเบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™ เปเบฅเบฐเบฅเบฐเบšเบปเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes.

เบŠเบธเบ” Tufin Orca เบ„เบธเป‰เบกเบ„เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes (เปเบฅเบฐเป€เบ›เบฑเบ™เบ—เบตเปˆเบกเบฒเบ‚เบญเบ‡เบžเบฒเบšเปœเป‰เบฒเบˆเปเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡).

เบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก

เบชเบฐเบซเบฅเบธเบš

เบ™เบฐเป‚เบเบšเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ Kubernetes เบชเบฐเป€เปœเบตเบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบ”เบตเบชเบณเบฅเบฑเบšเบเบฒเบ™เปเบšเปˆเบ‡เบเบธเปˆเบกเบเบธเปˆเบก, เปเบ•เปˆเบžเบงเบเบกเบฑเบ™เบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ‡เปˆเบฒเบ เปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเบญเปˆเบญเบ™เป‚เบเบ™เบซเบผเบฒเบ. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ™เบตเป‰, เบ‚เป‰เบญเบเป€เบŠเบทเปˆเบญเบงเปˆเบฒเบ™เบฐเป‚เบเบšเบฒเบเบ‚เบญเบ‡เบเบธเปˆเบกเบ—เบตเปˆเบกเบตเบขเบนเปˆเบซเบผเบฒเบเปเบกเปˆเบ™ buggy. เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบฅเบงเบกเบกเบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ™เบฐเป‚เบเบšเบฒเบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบซเบผเบทเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบญเบทเปˆเบ™เป†.

เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเบ„เบนเปˆเบกเบทเบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเบฅเบถเบšเบšเบฒเบ‡เบ„เปเบฒเบ–เบฒเบกเปเบฅเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเบžเบปเบš.

PS เบˆเบฒเบเบ™เบฑเบเปเบ›

เบญเปˆเบฒเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™