เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹: เชชเชฐเชฟเชšเชฏ เช…เชจเซ‡ เชฅเซ‹เชกเซ‹ เช…เชจเซเชญเชต

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹: เชชเชฐเชฟเชšเชฏ เช…เชจเซ‡ เชฅเซ‹เชกเซ‹ เช…เชจเซเชญเชต

เชฒเซ‡เช–เชจเซ‹ เชนเซ‡เชคเซ เชตเชพเชšเช•เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เช…เชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชจเซ€เชคเชฟเช“เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹ เชคเซ‡เชฎเชœ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช•เซเชทเชฎเชคเชพเช“เชจเซ‡ เชตเชฟเชธเซเชคเชพเชฐเชคเชพ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เช•เซ‡เชฒเชฟเช•เซ‹ เชชเซเชฒเช—เช‡เชจเชจเซ‹ เชชเชฐเชฟเชšเชฏ เช•เชฐเชพเชตเชตเชพเชจเซ‹ เช›เซ‡. เชฐเชธเซเชคเชพเชฎเชพเช‚, เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซ€ เชธเชฐเชณเชคเชพ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชธเซเชตเชฟเชงเชพเช“ เช…เชฎเชพเชฐเชพ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เช…เชจเซเชญเชตเชฎเชพเช‚เชฅเซ€ เชตเชพเชธเซเชคเชตเชฟเช• เช‰เชฆเชพเชนเชฐเชฃเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฆเชฐเซเชถเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชเชชเซเชฒเชพเชฏเชจเซเชธเชจเซ‹ เชเชกเชชเซ€ เชชเชฐเชฟเชšเชฏ

เชจเซ‡เชŸเชตเชฐเซเช• เชตเชฟเชจเชพ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ€ เชถเช•เชพเชคเซ€ เชจเชฅเซ€. เช…เชฎเซ‡ เชคเซ‡เชฎเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹ เชชเชฐ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเชพเชฎเช—เซเชฐเซ€ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€ เช›เซ‡: โ€œKubernetes เชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เซ€เช‚เช— เชฎเชพเชŸเซ‡ เชธเชšเชฟเชคเซเชฐ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ"เช…เชจเซ‡"เชธเซเชฐเช•เซเชทเชพ เชตเซเชฏเชพเชตเชธเชพเชฏเชฟเช•เซ‹ เชฎเชพเชŸเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชจเซ‡เชŸเชตเชฐเซเช• เชจเซ€เชคเชฟเช“เชจเซ‹ เชชเชฐเชฟเชšเชฏยป.

เช† เชฒเซ‡เช–เชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚, เช เชจเซ‹เช‚เชงเชตเซเช‚ เช…เช—เชคเซเชฏเชจเซเช‚ เช›เซ‡ เช•เซ‡ K8s เชชเซ‹เชคเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช…เชจเซ‡ เชจเซ‹เชกเซเชธ เชตเชšเซเชšเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เช•เชจเซ‡เช•เซเชŸเชฟเชตเชฟเชŸเซ€ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เชจเชฅเซ€: เช† เชฎเชพเชŸเซ‡, เชตเชฟเชตเชฟเชง CNI เชชเซเชฒเช—เชˆเชจเซเชธ (เช•เชจเซเชŸเซ‡เชจเชฐ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชˆเชจเซเชŸเชฐเชซเซ‡เชธ). เช† เช–เซเชฏเชพเชฒ เชตเชฟเชถเซ‡ เชตเชงเซ เช…เชฎเซ‡ เชคเซ‡เช“เช เชฎเชจเซ‡ เชชเชฃ เช•เชนเซเชฏเซเช‚.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช† เชชเซเชฒเช—เชˆเชจเซ‹ เชธเซŒเชฅเซ€ เชธเชพเชฎเชพเชจเซเชฏ เช›เซ‡ เชซเชฒเชพเชจเซ€เชฒ โ€” เชฆเชฐเซ‡เช• เชจเซ‹เชก เชชเชฐ เชฌเซเชฐเชฟเชœ เช‰เชญเชพ เช•เชฐเซ€เชจเซ‡, เชคเซ‡เชจเซ‡ เชธเชฌเชจเซ‡เชŸ เชธเซ‹เช‚เชชเซ€เชจเซ‡ เชคเชฎเชพเชฎ เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชกเซเชธ เชตเชšเซเชšเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชจเซ‡เชŸเชตเชฐเซเช• เช•เชจเซ‡เช•เซเชŸเชฟเชตเชฟเชŸเซ€ เชชเซ‚เชฐเซ€ เชชเชพเชกเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชธเช‚เชชเซ‚เชฐเซเชฃ เช…เชจเซ‡ เช…เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เชธเซเชฒเชญเชคเชพ เชนเช‚เชฎเซ‡เชถเชพ เชซเชพเชฏเชฆเชพเช•เชพเชฐเช• เชนเซ‹เชคเซ€ เชจเชฅเซ€. เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซ€ เชจเซเชฏเซ‚เชจเชคเชฎ เช…เชฒเช—เชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชซเชพเชฏเชฐเชตเซ‹เชฒเชจเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ เชฆเช–เชฒ เช•เชฐเชตเซ€ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเซ‡ เชธเชฎเชพเชจ CNI เชจเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชนเซ‡เช เชณ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชœ iptables เชฎเชพเช‚ เช•เซ‹เชˆเชชเชฃ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชทเชจเชพ เชนเชธเซเชคเช•เซเชทเซ‡เชชเชจเซ‡ เช–เซ‹เชŸเซ€ เชฐเซ€เชคเซ‡ เช…เชฐเซเชฅเช˜เชŸเชจ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชฅเชตเชพ เชคเซ‡เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชตเช—เชฃเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เช…เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช• เชชเซ‹เชฒเชฟเชธเซ€ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸเชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ "เชฌเซ‰เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ" เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ NetworkPolicy API. เช† เชธเช‚เชธเชพเชงเชจ, เชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชชเชฐ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฅเซ€ เชฌเซ€เชœเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชเช•เซเชธเซ‡เชธเชจเซ‡ เช…เชฒเช— เชชเชพเชกเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชจเชฟเชฏเชฎเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡ เชคเชฎเชจเซ‡ เชšเซ‹เช•เซเช•เชธ เชชเซ‹เชกเซเชธ, เชชเชฐเซเชฏเชพเชตเชฐเชฃเซ‹ (เชจเซ‡เชฎเชธเซเชชเซ‡เชธ) เช…เชฅเชตเชพ IP เชธเชฐเชจเชพเชฎเชพเช‚เชจเชพ เชฌเซเชฒเซ‹เช•เซเชธ เชตเชšเซเชšเซ‡ เชเช•เซเชธเซ‡เชธเชฟเชฌเชฟเชฒเชฟเชŸเซ€ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชชเชฃ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: 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

เช† เชธเซŒเชฅเซ€ เช†เชฆเชฟเชฎ เช‰เชฆเชพเชนเชฐเชฃ เชจเชฅเซ€ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชจเซ‡เชŸเชตเชฐเซเช• เชจเซ€เชคเชฟเช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เชคเชฐเซเช•เชจเซ‡ เชธเชฎเชœเชตเชพเชจเซ€ เช‡เชšเซเช›เชพเชจเซ‡ เชเช•เชตเชพเชฐ เช…เชจเซ‡ เชฌเชงเชพ เชฎเชพเชŸเซ‡ เชจเชฟเชฐเชพเชถ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช…เชฎเซ‡ เชนเชœเซ เชชเชฃ เชจเซ‡เชŸเชตเชฐเซเช• เชจเซ€เชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชŸเซเชฐเชพเชซเชฟเช• เชชเซเชฐเชตเชพเชนเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเชพ เชฎเซ‚เชณเชญเซ‚เชค เชธเชฟเชฆเซเชงเชพเช‚เชคเซ‹ เช…เชจเซ‡ เชชเชฆเซเชงเชคเชฟเช“ เชธเชฎเชœเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เชถเซเช‚...

เชคเซ‡ เชคเชพเชฐเซเช•เชฟเช• เช›เซ‡ เช•เซ‡ เชคเซเชฏเชพเช‚ 2 เชชเซเชฐเช•เชพเชฐเชจเชพ เชŸเซเชฐเชพเชซเชฟเช• เช›เซ‡: เชชเซ‹เชกเชฎเชพเช‚ เชชเซเชฐเชตเซ‡เชถเชตเซเช‚ (เช‡เชจเซเช—เซเชฐเซ‡เชธ) เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเชตเซเช‚ (เชเช—เซเชฐเซ‡เชธ).

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹: เชชเชฐเชฟเชšเชฏ เช…เชจเซ‡ เชฅเซ‹เชกเซ‹ เช…เชจเซเชญเชต

เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เช†เช‚เชฆเซ‹เชฒเชจเชจเซ€ เชฆเชฟเชถเชพเชจเชพ เช†เชงเชพเชฐเซ‡ เชฐเชพเชœเช•เชพเชฐเชฃ เช† เชฌเซ‡ เชตเชฐเซเช—เซ‹เชฎเชพเช‚ เชตเชนเซ‡เช‚เชšเชพเชฏเซ‡เชฒเซเช‚ เช›เซ‡.

เช†เช—เชณเชจเซ€ เช†เชตเชถเซเชฏเช• เชตเชฟเชถเซ‡เชทเชคเชพ เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ เช›เซ‡; เชœเซ‡เชจเซ‡ เชจเชฟเชฏเชฎ เชฒเชพเช—เซ เชชเชกเซ‡ เช›เซ‡. เช† เชชเซ‹เชก (เช…เชฅเชตเชพ เชชเซ‹เชกเซเชธเชจเซเช‚ เชœเซ‚เชฅ) เช…เชฅเชตเชพ เชชเชฐเซเชฏเชพเชตเชฐเชฃ (เชเชŸเชฒเซ‡ โ€‹โ€‹เช•เซ‡ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ) เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชเช• เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชตเชฟเช—เชค: เช† เชฌเช‚เชจเซ‡ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชตเชธเซเชคเซเช“เชฎเชพเช‚ เชฒเซ‡เชฌเชฒ เชนเซ‹เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡ (เชฒเซ‡เชฌเชฒ เช•เซเชฌเชฐเชจเซ‡เชŸเซ€เชธ เชชเชฐเชฟเชญเชพเชทเชพเชฎเชพเช‚) - เช† เชคเซ‡ เช›เซ‡ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชฐเชพเชœเช•เชพเชฐเชฃเซ€เช“ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเชพ เชฒเซ‡เชฌเชฒ เชฆเซเชตเชพเชฐเชพ เชเช•เซ€เช•เซƒเชค เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐเซ‹เชจเซ€ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชธเช‚เช–เซเชฏเชพ เช‰เชชเชฐเชพเช‚เชค, เชตเชฟเชตเชฟเชง เชญเชฟเชจเซเชจเชคเชพเช“เชฎเชพเช‚ โ€œเชฌเชงเซเช‚ เชœ/เชฆเชฐเซ‡เช•เชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‹/เชจเช•เชพเชฐเซ‹โ€ เชœเซ‡เชตเชพ เชจเชฟเชฏเชฎเซ‹ เชฒเช–เชตเชพเชจเซเช‚ เชถเช•เซเชฏ เช›เซ‡. เช† เชนเซ‡เชคเซ เชฎเชพเชŸเซ‡, เชซเซ‹เชฐเซเชฎเชจเซ€ เชฐเชšเชจเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

  podSelector: {}
  ingress: []
  policyTypes:
  - Ingress

โ€” เช† เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช‚ เชคเชฎเชพเชฎ เชชเซ‹เชกเซเชธ เช†เชตเชคเชพ เชŸเซเชฐเชพเชซเชฟเช•เชฅเซ€ เช…เชตเชฐเซ‹เชงเชฟเชค เช›เซ‡. เชตเชฟเชชเชฐเซ€เชค เชตเชฐเซเชคเชจ เชจเซ€เชšเซ‡เชจเชพ เชฌเชพเช‚เชงเช•เชพเชฎ เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

  podSelector: {}
  ingress:
  - {}
  policyTypes:
  - Ingress

เช เชœ เชฐเซ€เชคเซ‡ เช†เช‰เชŸเช—เซ‹เช‡เช‚เช— เชฎเชพเชŸเซ‡:

  podSelector: {}
  policyTypes:
  - Egress

- เชคเซ‡เชจเซ‡ เชฌเช‚เชง เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เช…เชจเซ‡ เช…เชนเซ€เช‚ เชถเซเช‚ เชถเชพเชฎเซ‡เชฒ เช•เชฐเชตเซเช‚ เชคเซ‡ เช›เซ‡:

  podSelector: {}
  egress:
  - {}
  policyTypes:
  - Egress

เช•เซเชฒเชธเซเชŸเชฐ เชฎเชพเชŸเซ‡ CNI เชชเซเชฒเช—เช‡เชจเชจเซ€ เชชเชธเช‚เชฆเช—เซ€ เชชเชฐ เชชเชพเช›เชพ เชซเชฐเชตเซเช‚, เชคเซ‡ เชจเซ‹เช‚เชงเชตเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เชฆเชฐเซ‡เช• เชจเซ‡เชŸเชตเชฐเซเช• เชชเซเชฒเช—เช‡เชจ NetworkPolicy เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชซเซเชฒเซ‡เชจเซ‡เชฒ เชจเซ‡เชŸเชตเชฐเซเช• เชจเซ€เชคเชฟเช“เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเชตเซ€ เชคเซ‡ เชœเชพเชฃเชคเซเช‚ เชจเชฅเซ€, เชœเซ‡ เชคเซ‡ เชธเซ€เชงเซเช‚ เช•เชนเซเชฏเซเช‚ เช›เซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชญเช‚เชกเชพเชฐเชฎเชพเช‚. เชคเซเชฏเชพเช‚ เชเช• เชตเชฟเช•เชฒเซเชชเชจเซ‹ เชชเชฃ เช‰เชฒเซเชฒเซ‡เช– เช›เซ‡ - เชเช• เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เชพเชฒเชฟเช•เซ‹, เชœเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชจเซ€เชคเชฟเช“เชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ Kubernetes API เชจเชพ เชฎเชพเชจเช• เชธเชฎเซ‚เชนเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเซ‡ เช›เซ‡.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹: เชชเชฐเชฟเชšเชฏ เช…เชจเซ‡ เชฅเซ‹เชกเซ‹ เช…เชจเซเชญเชต

เช•เซ‡เชฒเชฟเช•เซ‹: เชธเชฟเชฆเซเชงเชพเช‚เชคเชจเซ‡ เชœเชพเชฃเชตเซเช‚

เช•เซ‡เชฒเชฟเช•เซ‹ เชชเซเชฒเช—เช‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชซเซเชฒเซ‡เชจเซ‡เชฒ (เชธเชฌเชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เซ‡เชจเชพเชฒ) เช…เชฅเชตเชพ เชธเซเชตเชคเช‚เชคเซเชฐ เชฐเซ€เชคเซ‡, เชจเซ‡เชŸเชตเชฐเซเช• เช•เชจเซ‡เช•เซเชŸเชฟเชตเชฟเชŸเซ€ เช…เชจเซ‡ เช‰เชชเชฒเชฌเซเชงเชคเชพ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชจ เช•เซเชทเชฎเชคเชพเช“ เชฌเช‚เชจเซ‡เชจเซ‡ เช†เชตเชฐเซ€ เชฒเซ‡ เช›เซ‡.

K8s โ€œเชฌเซ‹เช•เซเชธเซเชกโ€ เชธเซ‹เชฒเซเชฏเซเชถเชจ เช…เชจเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹เชฎเชพเช‚เชฅเซ€ API เชธเซ‡เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฅเซ€ เช•เชˆ เชคเช•เซ‹ เชฎเชณเซ‡ เช›เซ‡?

NetworkPolicy เชฎเชพเช‚ เชถเซเช‚ เชฌเชฟเชฒเซเชŸ เช›เซ‡ เชคเซ‡ เช…เชนเซ€เช‚ เช›เซ‡:

  • เชฐเชพเชœเช•เชพเชฐเชฃเซ€เช“ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฆเซเชตเชพเชฐเชพ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช›เซ‡;
  • เชจเซ€เชคเชฟเช“ เชฒเซ‡เชฌเชฒ เชธเชพเชฅเซ‡ เชšเชฟเชนเซเชจเชฟเชค เชถเซ€เช‚เช—เซ‹ เชชเชฐ เชฒเชพเช—เซ เชฅเชพเชฏ เช›เซ‡;
  • เชจเชฟเชฏเชฎเซ‹ เชถเซ€เช‚เช—เซ‹, เชตเชพเชคเชพเชตเชฐเชฃ เช…เชฅเชตเชพ เชธเชฌเชจเซ‡เชŸ เชชเชฐ เชฒเชพเช—เซ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡;
  • เชจเชฟเชฏเชฎเซ‹เชฎเชพเช‚ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ, เชจเชพเชฎ เช…เชฅเชตเชพ เชธเชพเช‚เช•เซ‡เชคเชฟเช• เชชเซ‹เชฐเซเชŸ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เช•เซ‡เชฒเชฟเช•เซ‹ เช† เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เช…เชนเซ€เช‚ เช›เซ‡:

  • เชจเซ€เชคเชฟเช“ เช•เซ‹เชˆเชชเชฃ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชชเชฐ เชฒเชพเช—เซ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡: เชชเซ‹เชก, เช•เชจเซเชŸเซ‡เชจเชฐ, เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เช…เชฅเชตเชพ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ;
  • เชจเชฟเชฏเชฎเซ‹เชฎเชพเช‚ เชšเซ‹เช•เซเช•เชธ เช•เซเชฐเชฟเชฏเชพ (เชชเซเชฐเชคเชฟเชฌเช‚เชง, เชชเชฐเชตเชพเชจเช—เซ€, เชฒเซ‹เช—เชฟเช‚เช—) เชถเชพเชฎเซ‡เชฒ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡;
  • เชจเชฟเชฏเชฎเซ‹เชจเซเช‚ เชฒเช•เซเชทเซเชฏ เช…เชฅเชตเชพ เชธเซเชคเซเชฐเซ‹เชค เชชเซ‹เชฐเซเชŸ, เชชเซ‹เชฐเซเชŸเชจเซ€ เชถเซเชฐเซ‡เชฃเซ€, เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ, HTTP เช…เชฅเชตเชพ ICMP เชตเชฟเชถเซ‡เชทเชคเชพเช“, IP เช…เชฅเชตเชพ เชธเชฌเชจเซ‡เชŸ (4เชฅเซ€ เช…เชฅเชตเชพ 6เช เซเช เซ€ เชชเซ‡เชขเซ€), เช•เซ‹เชˆเชชเชฃ เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐเซ‹ (เชจเซ‹เชกเซเชธ, เชฏเชœเชฎเชพเชจเซ‹, เชตเชพเชคเชพเชตเชฐเชฃ) เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡;
  • เชตเชงเซเชฎเชพเช‚, เชคเชฎเซ‡ DNAT เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช…เชจเซ‡ เชŸเซเชฐเชพเชซเชฟเช• เชซเซ‹เชฐเชตเชฐเซเชกเชฟเช‚เช— เชจเซ€เชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชŸเซเชฐเชพเชซเชฟเช•เชจเชพ เชชเซ‡เชธเซ‡เชœเชจเซเช‚ เชจเชฟเชฏเชฎเชจ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เช•เซ‡เชฒเชฟเช•เซ‹ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ GitHub เชชเชฐ เชชเซเชฐเชฅเชฎ เช•เชฎเชฟเชŸ เชœเซเชฒเชพเช‡ 2016 เชจเซ€ เช›เซ‡, เช…เชจเซ‡ เชเช• เชตเชฐเซเชท เชชเช›เซ€ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชจเซ‡เชŸเชตเชฐเซเช• เช•เชจเซ‡เช•เซเชŸเชฟเชตเชฟเชŸเซ€เชจเซเช‚ เช†เชฏเซ‹เชœเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช…เช—เซเชฐเชฃเซ€ เชธเซเชฅเชพเชจ เชฎเซ‡เชณเชตเซเชฏเซเช‚ - เช†เชจเซ‹ เชชเซเชฐเชพเชตเซ‹ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเชฐเซเชตเซ‡เช•เซเชทเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฆเซเชตเชพเชฐเชพ, เชง เชจเซเชฏเซ‚ เชธเซเชŸเซ‡เช• เชฆเซเชตเชพเชฐเชพ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹: เชชเชฐเชฟเชšเชฏ เช…เชจเซ‡ เชฅเซ‹เชกเซ‹ เช…เชจเซเชญเชต

K8 เชธเชพเชฅเซ‡ เช˜เชฃเชพ เชฎเซ‹เชŸเชพ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เช‰เช•เซ‡เชฒเซ‹, เชœเซ‡เชฎ เช•เซ‡ เชเชฎเซ‡เชเซ‹เชจ EX, Azure AKS, Google GKE เช…เชจเซ‡ เช…เชจเซเชฏ เชฒเซ‹เช•เซ‹เช เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚.

เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเชพเชŸเซ‡, เช…เชนเซ€เช‚ เชฌเชงเซเช‚ เชธเชฐเชธ เช›เซ‡. เชคเซ‡เชฎเชจเชพ เช‰เชคเซเชชเชพเชฆเชจเชจเชพ เชชเชฐเซ€เช•เซเชทเชฃเชฎเชพเช‚, เช•เซ‡เชฒเชฟเช•เซ‹ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชŸเซ€เชฎเซ‡ เช–เช—เซ‹เชณเชถเชพเชธเซเชคเซเชฐเซ€เชฏ เช•เชพเชฎเช—เซ€เชฐเซ€ เชฆเชฐเซเชถเชพเชตเซ€, 50000 เชญเซŒเชคเชฟเช• เช—เชพเช‚เช เซ‹ เชชเชฐ 500 เชฅเซ€ เชตเชงเซ เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเซ€เชจเซ‡ 20 เช•เชจเซเชŸเซ‡เชจเชฐ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชกเชจเชพ เชจเชฟเชฐเซเชฎเชพเชฃ เชฆเชฐ เชธเชพเชฅเซ‡. เชธเซเช•เซ‡เชฒเชฟเช‚เช— เชธเชพเชฅเซ‡ เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพ เช“เชณเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจเชฅเซ€. เช†เชตเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชชเซเชฐเชฅเชฎ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ€ เชœเชพเชนเซ‡เชฐเชพเชค เชชเชฐ. เชฅเซเชฐเซเชชเซเชŸ เช…เชจเซ‡ เชธเช‚เชธเชพเชงเชจ เชตเชชเชฐเชพเชถ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเชคเชพ เชธเซเชตเชคเช‚เชคเซเชฐ เช…เชญเซเชฏเชพเชธเซ‹ เชชเชฃ เชชเซเชทเซเชŸเชฟ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฒเชฟเช•เซ‹เชจเซเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชฒเช—เชญเช— เชซเซเชฒเซ‡เชจเซ‡เชฒ เชœเซ‡เชŸเชฒเซเช‚ เชธเชพเชฐเซเช‚ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹: เชชเชฐเชฟเชšเชฏ เช…เชจเซ‡ เชฅเซ‹เชกเซ‹ เช…เชจเซเชญเชต

เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช–เซ‚เชฌ เชœ เชเชกเชชเชฅเซ€ เชตเชฟเช•เชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡, เชคเซ‡ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เช‰เช•เซ‡เชฒเซ‹ เชธเช‚เชšเชพเชฒเชฟเชค K8s, OpenShift, OpenStack เชฎเชพเช‚ เช•เชพเชฎเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเซ‡ เช›เซ‡, เช•เซเชฒเชธเซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชถเช•เซเชฏ เช›เซ‡. เช•เซ‹เชชเซเชธ, เชคเซเชฏเชพเช‚ เชธเซ‡เชตเชพ เชฎเซ‡เชถ เชจเซ‡เชŸเชตเชฐเซเช•เซเชธเชจเชพ เชจเชฟเชฐเซเชฎเชพเชฃเชจเชพ เชธเช‚เชฆเชฐเซเชญเซ‹ เช›เซ‡ (เช…เชนเซ€เช‚ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡ Istio เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฃเชฎเชพเช‚ เชตเชชเชฐเชพเชฏ เช›เซ‡).

เช•เซ‡เชฒเชฟเช•เซ‹ เชธเชพเชฅเซ‡ เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เช•เชฐเซ‹

เชตเซ‡เชจเซ€เชฒเชพ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, CNI เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ เชซเชพเช‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชจเซ€เชšเซ‡ เช†เชตเซ‡ เช›เซ‡ calico.yaml, เชธเชคเซเชคเชพเชตเชพเชฐ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชชเชฐเชฅเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก, เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ kubectl apply -f.

เชจเชฟเชฏเชฎ เชชเซเชฐเชฎเชพเชฃเซ‡, เชชเซเชฒเช—เช‡เชจเชจเซเช‚ เชตเชฐเซเชคเชฎเชพเชจ เชธเช‚เชธเซเช•เชฐเชฃ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชจเชตเซ€เชจเชคเชฎ 2-3 เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เชธเซเชธเช‚เช—เชค เช›เซ‡: เชœเซ‚เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชฎเชพเช‚ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซเช‚ เชจเชฅเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€. เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเชพ เชฎเชคเซ‡, เช•เซ‡เชฒเชฟเช•เซ‹ 3.10 เชฅเซ€ เช‰เชชเชฐเชจเชพ Linux เช•เชฐเซเชจเชฒ เชชเชฐ CentOS 7, Ubuntu 16 เช…เชฅเชตเชพ Debian 8 เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡, iptables เช…เชฅเชตเชพ IPVSเชจเซ€ เชŸเซ‹เชš เชชเชฐ.

เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเซ€ เช…เช‚เชฆเชฐ เช…เชฒเช—เชคเชพ

เชธเชพเชฎเชพเชจเซเชฏ เชธเชฎเชœเชฃ เชฎเชพเชŸเซ‡, เช•เซ‡เชฒเชฟเช•เซ‹ เชจเซ‹เชŸเซ‡เชถเชจเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช• เชจเซ€เชคเชฟเช“ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช•เชฐเชคเชพเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชฒเช— เช›เซ‡ เช…เชจเซ‡ เชจเชฟเชฏเชฎเซ‹ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เช…เชญเชฟเช—เชฎ เชคเซ‡เชฎเชจเซ€ เชตเชพเช‚เชšเชจเช•เซเชทเชฎเชคเชพ เช…เชจเซ‡ เช—เซ‹เช เชตเชฃเซ€เชจเซ€ เชธเซเช—เชฎเชคเชพเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชšเชพเชฒเซ‹ เชเช• เชธเชฐเชณ เช•เซ‡เชธ เชœเซ‹เชˆเช:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹: เชชเชฐเชฟเชšเชฏ เช…เชจเซ‡ เชฅเซ‹เชกเซ‹ เช…เชจเซเชญเชต

เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ 2 เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชคเซˆเชจเชพเชค เช›เซ‡: Node.js เช…เชจเซ‡ PHP เชฎเชพเช‚, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชเช• Redis เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. Node.js เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸเชฟเชตเชฟเชŸเซ€ เชœเชพเชณเชตเซ€ เชฐเชพเช–เชคเซ€ เชตเช–เชคเซ‡, PHP เชฅเซ€ Redisเชจเซ€ เชเช•เซเชธเซ‡เชธเชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชซเช•เซเชค เชจเซ€เชšเซ‡เชจเซ€ เชจเซ€เชคเชฟ เชฒเชพเช—เซ เช•เชฐเซ‹:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: allow-redis-nodejs
spec:
  podSelector:
    matchLabels:
      service: redis
  ingress:
  - from:
    - podSelector:
        matchLabels:
          service: nodejs
    ports:
    - protocol: TCP
      port: 6379

เช†เชตเชถเซเชฏเช•เชชเชฃเซ‡ เช…เชฎเซ‡ Node.js เชฅเซ€ Redis เชชเซ‹เชฐเซเชŸ เชชเชฐ เช†เชตเชคเชพ เชŸเซเชฐเชพเชซเชฟเช•เชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ€ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡เช“เช เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชฌเซ€เชœเซเช‚ เช•เช‚เชˆเชชเชฃ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช•เชฐเซเชฏเซเช‚ เชจเชฅเซ€. เชจเซ‡เชŸเชตเชฐเซเช• เชชเซ‹เชฒเชฟเชธเซ€ เชฆเซ‡เช–เชพเชฏ เช•เซ‡ เชคเชฐเชค เชœ, เชคเซ‡เชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชคเชฎเชพเชฎ เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐเซ‹ เช…เชฒเช— เชฅเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡, เชธเชฟเชตเชพเชฏ เช•เซ‡ เช…เชจเซเชฏเชฅเชพ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชนเซ‹เชฏ. เชœเซ‹ เช•เซ‡, เช†เช‡เชธเซ‹เชฒเซ‡เชถเชจ เชจเชฟเชฏเชฎเซ‹ เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ เชฆเซเชตเชพเชฐเชพ เช†เชตเชฐเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเชคเชพเช‚ เช…เชจเซเชฏ เชชเชฆเชพเชฐเซเชฅเซ‹ เชชเชฐ เชฒเชพเช—เซ เชชเชกเชคเชพ เชจเชฅเซ€.

เช‰เชฆเชพเชนเชฐเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ apiVersion เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชฌเซ‰เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฎเชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฅเซ€ เช•เช‚เชˆเชชเชฃ เช…เชŸเช•เชพเชตเชคเซเช‚ เชจเชฅเซ€ เช•เซ‡เชฒเชฟเช•เซ‹ เชกเชฟเชฒเชฟเชตเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชธเชฎเชพเชจ เชจเชพเชฎเชจเซ‹ เชธเซเชคเซเชฐเซ‹เชค. เชคเซเชฏเชพเช‚เชจเซ€ เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเชฎเชพเชฐเซ‡ เช‰เชชเชฐเซ‹เช•เซเชค เช•เซ‡เชธ เชฎเชพเชŸเซ‡เชจเชพ เชจเชฟเชฏเชฎเชจเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡:

apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
  name: allow-redis-nodejs
spec:
  selector: service == 'redis'
  ingress:
  - action: Allow
    protocol: TCP
    source:
      selector: service == 'nodejs'
    destination:
      ports:
      - 6379

เชจเชฟเชฏเชฎเชฟเชค NetworkPolicy API เชฆเซเชตเชพเชฐเชพ เชคเชฎเชพเชฎ เชŸเซเชฐเชพเชซเชฟเช•เชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชตเชพ เช…เชฅเชตเชพ เชจเช•เชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฐเซ‹เช•เซเชค เชฐเชšเชจเชพเช“เชฎเชพเช‚ เช•เซŒเช‚เชธ เชธเชพเชฅเซ‡เชจเชพ เชฌเชพเช‚เชงเช•เชพเชฎเซ‹ เช›เซ‡ เชœเซ‡ เชธเชฎเชœเชตเชพ เช…เชจเซ‡ เชฏเชพเชฆ เชฐเชพเช–เชตเชพ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡. เช•เซ‡เชฒเชฟเช•เซ‹เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชซเชพเชฏเชฐเชตเซ‹เชฒ เชจเชฟเชฏเชฎเชจเชพ เชคเชฐเซเช•เชจเซ‡ เชตเชฟเชฐเซเชฆเซเชงเชฎเชพเช‚ เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡, เชซเช•เซเชค เชฌเชฆเชฒเซ‹ action: Allow เชชเชฐ action: Deny.

เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฆเซเชตเชพเชฐเชพ เช…เชฒเช—เชคเชพ

เชนเชตเซ‡ เชเชตเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ€ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ‹ เช•เซ‡ เชœเซเชฏเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธเชฎเชพเช‚ เช•เชฒเซ‡เช•เซเชถเชจ เชฎเชพเชŸเซ‡ เชฌเชฟเชเชจเซ‡เชธ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เช—เซเชฐเชพเชซเชจเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชงเซ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‡ เช›เซ‡. เช…เชชเชฒเซ‹เชกเชฎเชพเช‚ เชธเช‚เชตเซ‡เชฆเชจเชถเซ€เชฒ เชกเซ‡เชŸเชพ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เชซเชฐเซ€เชฅเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชฐเซ‚เชชเซ‡ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡. เชšเชพเชฒเซ‹ เช† เชกเซ‡เชŸเชพเชจเซ‡ เช…เชธเซเชชเชทเซเชŸ เช†เช‚เช–เซ‹เชฅเซ€ เช›เซเชชเชพเชตเซ€เช:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹: เชชเชฐเชฟเชšเชฏ เช…เชจเซ‡ เชฅเซ‹เชกเซ‹ เช…เชจเซเชญเชต

เชชเซเชฐเซ‹เชฎเชฟเชฅเชฟเชฏเชธ, เชเช• เชจเชฟเชฏเชฎ เชคเชฐเซ€เช•เซ‡, เชเช• เช…เชฒเช— เชธเซ‡เชตเชพ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ - เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ เชคเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชนเชถเซ‡:

apiVersion: v1
kind: Namespace
metadata:
  labels:
    module: prometheus
  name: kube-prometheus

เช•เซเชทเซ‡เชคเซเชฐ metadata.labels เช† เช•เซ‹เชˆ เช…เช•เชธเซเชฎเชพเชค เชจเชฅเซ€. เช‰เชชเชฐ เชœเชฃเชพเชตเซเชฏเชพ เชฎเซเชœเชฌ, namespaceSelector (เชคเซ‡เชฎเชœ podSelector) เชฒเซ‡เชฌเชฒเซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชšเซ‹เช•เซเช•เชธ เชชเซ‹เชฐเซเชŸ เชชเชฐเชจเชพ เชคเชฎเชพเชฎ เชชเซ‹เชกเซเชธเชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฒเซ‡เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เชฒเซ‡เชฌเชฒ เช‰เชฎเซ‡เชฐเชตเซเช‚ เชชเชกเชถเซ‡ (เช…เชฅเชตเชพ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เช›เซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฒเซ‹), เช…เชจเซ‡ เชชเช›เซ€ เช—เซ‹เช เชตเชฃเซ€ เชฒเชพเช—เซ เช•เชฐเซ‹ เชœเซ‡เชฎ เช•เซ‡:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-metrics-prom
spec:
  podSelector: {}
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          module: prometheus
    ports:
    - protocol: TCP
      port: 9100

เช…เชจเซ‡ เชœเซ‹ เชคเชฎเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹ เชจเซ€เชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เช†เชจเชพ เชœเซ‡เชตเซ€ เชนเชถเซ‡:

apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
  name: allow-metrics-prom
spec:
  ingress:
  - action: Allow
    protocol: TCP
    source:
      namespaceSelector: module == 'prometheus'
    destination:
      ports:
      - 9100

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชšเซ‹เช•เซเช•เชธ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชฎเชพเชŸเซ‡ เช† เชชเซเชฐเช•เชพเชฐเชจเซ€ เชจเซ€เชคเชฟเช“ เช‰เชฎเซ‡เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชธเช‚เชšเชพเชฒเชจเชฎเชพเช‚ เชฆเซ‚เชทเชฟเชค เช…เชฅเชตเชพ เช†เช•เชธเซเชฎเชฟเช• เชนเชธเซเชคเช•เซเชทเซ‡เชช เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

เช•เซ‡เชฒเชฟเช•เซ‹เชจเชพ เชจเชฟเชฐเซเชฎเชพเชคเชพเช“ เช…เชจเซเชธเชพเชฐ, เชถเซเชฐเซ‡เชทเซเช  เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เช เช›เซ‡ "เชฌเชงเซเช‚ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเซ‹ เช…เชจเซ‡ เชคเชฎเชจเซ‡ เชœเซ‡ เชœเซ‹เชˆเช เช›เซ‡ เชคเซ‡ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เช–เซ‹เชฒเซ‹" เช…เชญเชฟเช—เชฎ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เซƒเชค เช›เซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ (เช…เชจเซเชฏ เชฒเซ‹เช•เซ‹ เชธเชฎเชพเชจ เช…เชญเชฟเช—เชฎเชจเซ‡ เช…เชจเซเชธเชฐเซ‡ เช›เซ‡ - เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เชฎเชพเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชฒเซ‡เช–).

เชตเชงเชพเชฐเชพเชจเชพ เช•เซ‡เชฒเชฟเช•เซ‹ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹

เชนเซเช‚ เชคเชฎเชจเซ‡ เชฏเชพเชฆ เช…เชชเชพเชตเซ€ เชฆเช‰เช‚ เช•เซ‡ เช•เซ‡เชฒเชฟเช•เซ‹ API เชจเชพ เชตเชฟเชธเซเชคเซƒเชค เชธเซ‡เชŸ เชฆเซเชตเชพเชฐเชพ เชคเชฎเซ‡ เชจเซ‹เชกเซเชธเชจเซ€ เช‰เชชเชฒเชฌเซเชงเชคเชพเชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเซ‹เชกเซเชธ เชธเซเชงเซ€ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชจเชฅเซ€. เชจเซ€เชšเซ‡เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ GlobalNetworkPolicy เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ ICMP เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชธเชพเชฐ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชฌเช‚เชง เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซ‹เชกเชฅเซ€ เชจเซ‹เชก เชชเชฐ, เชชเซ‹เชกเซเชธ เชตเชšเซเชšเซ‡, เช…เชฅเชตเชพ เชจเซ‹เชกเชฅเซ€ IP เชชเซ‹เชก เชชเชฐ เชชเชฟเช‚เช—เซเชธ):

apiVersion: crd.projectcalico.org/v1
kind: GlobalNetworkPolicy
metadata:
  name: block-icmp
spec:
  order: 200
  selector: all()
  types:
  - Ingress
  - Egress
  ingress:
  - action: Deny
    protocol: ICMP
  egress:
  - action: Deny
    protocol: ICMP

เช‰เชชเชฐเซ‹เช•เซเชค เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชกเซเชธ เชฎเชพเชŸเซ‡ ICMP เชฆเซเชตเชพเชฐเชพ เชเช•เชฌเซ€เชœเชพ เชธเซเชงเซ€ "เชชเชนเซ‹เช‚เชšเชตเชพเชจเซเช‚" เชนเชœเซ€ เชชเชฃ เชถเช•เซเชฏ เช›เซ‡. เช…เชจเซ‡ เช† เชฎเซเชฆเซเชฆเซ‹ เชฎเชพเชงเซเชฏเชฎ เชฆเซเชตเชพเชฐเชพ เช‰เช•เซ‡เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ GlobalNetworkPolicy, เชเช• เชเชจเซเชŸเชฟเชŸเซ€ เชชเชฐ เชฒเชพเช—เซ HostEndpoint:

apiVersion: crd.projectcalico.org/v1
kind: GlobalNetworkPolicy
metadata:
  name: deny-icmp-kube-02
spec:
  selector: "role == 'k8s-node'"
  order: 0
  ingress:
  - action: Allow
    protocol: ICMP
  egress:
  - action: Allow
    protocol: ICMP
---
apiVersion: crd.projectcalico.org/v1
kind: HostEndpoint
metadata:
  name: kube-02-eth0
  labels:
    role: k8s-node
spec:
  interfaceName: eth0
  node: kube-02
  expectedIPs: ["192.168.2.2"]

VPN เช•เซ‡เชธ

เช›เซ‡เชฒเซเชฒเซ‡, เชนเซเช‚ เชจเชœเซ€เช•เชจเชพ-เช•เซเชฒเชธเซเชŸเชฐ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช•เซ‡เชฒเชฟเช•เซ‹ เชซเช‚เช•เซเชถเชจเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชเช• เชตเชพเชธเซเชคเชตเชฟเช• เช‰เชฆเชพเชนเชฐเชฃ เช†เชชเซ€เชถ, เชœเซเชฏเชพเชฐเซ‡ เชจเซ€เชคเชฟเช“เชจเซ‹ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชธเชฎเซ‚เชน เชชเซ‚เชฐเชคเซ‹ เชจเชฅเซ€. เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช•เซเชฒเชพเชฏเช‚เชŸ VPN เชŸเชจเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เช† เชเช•เซเชธเซ‡เชธ เชšเซเชธเซเชคเชชเชฃเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช›เซ‡ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชฎเชพเชจเซเชฏ เชธเซ‡เชตเชพเช“เชจเซ€ เชšเซ‹เช•เซเช•เชธ เชธเซ‚เชšเชฟ เชธเซเชงเซ€ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช›เซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ เช•เซ‡เชฒเชฟเช•เซ‹: เชชเชฐเชฟเชšเชฏ เช…เชจเซ‡ เชฅเซ‹เชกเซ‹ เช…เชจเซเชญเชต

เช—เซเชฐเชพเชนเช•เซ‹ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค UDP เชชเซ‹เชฐเซเชŸ 1194 เชฆเซเชตเชพเชฐเชพ VPN เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏ เช›เซ‡ เช…เชจเซ‡, เชœเซเชฏเชพเชฐเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชชเซ‹เชกเซเชธ เช…เชจเซ‡ เชธเซ‡เชตเชพเช“เชจเชพ เช•เซเชฒเชธเซเชŸเชฐ เชธเชฌเชจเซ‡เชŸเชจเชพ เชฐเซ‚เชŸ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡. เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช…เชจเซ‡ เชธเชฐเชจเชพเชฎเชพเช‚เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชธเซ‡เชตเชพเช“ เชจ เช—เซเชฎเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเช—เซเชฐ เชธเชฌเชจเซ‡เชŸเชจเซ‡ เชฆเชฌเชพเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ เชชเซ‹เชฐเซเชŸ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช›เซ‡, เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเชฐ เช•เซ‡เชŸเชฒเซ€เช• เช˜เซ‹เช‚เช˜เชพเชŸ เชฒเชพเชฆเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช เชœ AWS เชฎเชพเช‚ UDP เชฎเชพเชŸเซ‡ เชฒเซ‹เชกเชฌเซ‡เชฒเซ‡เชจเซเชธเชฐ เชถเชพเชฌเซเชฆเชฟเช• เชฐเซ€เชคเซ‡ เช—เชฏเชพ เชตเชฐเซเชทเชจเชพ เช…เช‚เชคเชฎเชพเช‚ เชชเซเชฐเชฆเซ‡เชถเซ‹เชจเซ€ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชธเซ‚เชšเชฟเชฎเชพเช‚ เชฆเซ‡เช–เชพเชฏเซ‹, เช…เชจเซ‡ เชจเซ‹เชกเชชเซ‹เชฐเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชคเชฎเชพเชฎ เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชกเซเชธ เชชเชฐ เชซเซ‹เชฐเชตเชฐเซเชกเชฟเช‚เช—เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฅเชˆ เชถเช•เชคเซ‹ เชจเชฅเซ€ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชธเชฐเซเชตเชฐ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเซ‡ เชฎเชพเชชเชตเชพเชจเซเช‚ เช…เชถเช•เซเชฏ เช›เซ‡. เชฆเซ‹เชท เชธเชนเชจเชถเซ€เชฒเชคเชพ เชนเซ‡เชคเซเช“. เช‰เชชเชฐเชพเช‚เชค, เชคเชฎเชพเชฐเซ‡ เชฌเช‚เชฆเชฐเซ‹เชจเซ€ เชกเชฟเชซเซ‰เชฒเซเชŸ เชถเซเชฐเซ‡เชฃเซ€ เชฌเชฆเชฒเชตเซ€ เชชเชกเชถเซ‡...

เชธเช‚เชญเชตเชฟเชค เช‰เช•เซ‡เชฒเซ‹ เชถเซ‹เชงเชตเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชจเซ€เชšเซ‡เชจเซ€ เชชเชธเช‚เชฆเช—เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€:

  1. VPN เชธเชพเชฅเซ‡ เชชเซ‹เชกเซเชธ เชจเซ‹เชก เชฆเซ€เช  เชธเซเชจเชฟเชถเซเชšเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡ hostNetwork, เชเชŸเชฒเซ‡ เช•เซ‡, เชตเชพเชธเซเชคเชตเชฟเช• IP เชชเชฐ.
  2. เชฆเซเชตเชพเชฐเชพ เชธเซ‡เชตเชพ เชฌเชนเชพเชฐ เชชเซ‹เชธเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ ClusterIP. เชจเซ‹เชก เชชเชฐ เชชเซ‹เชฐเซเชŸ เชญเซŒเชคเชฟเช• เชฐเซ€เชคเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡, เชœเซ‡ เชฌเชนเชพเชฐเชฅเซ€ เชจเชพเชจเชพ เชฐเชฟเชเชฐเซเชตเซ‡เชถเชจ (เชตเชพเชธเซเชคเชตเชฟเช• IP เชธเชฐเชจเชพเชฎเชพเชจเซ€ เชถเชฐเชคเซ€ เชนเชพเชœเชฐเซ€) เชธเชพเชฅเซ‡ เชธเซเชฒเชญ เช›เซ‡.
  3. เชจเซ‹เชก เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชชเซ‹เชก เช—เซเชฒเชพเชฌ เช›เซ‡ เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเซเช‚ เช เช…เชฎเชพเชฐเซ€ เชตเชพเชฐเซเชคเชพเชจเชพ เช…เชตเช•เชพเชถเชจเซ€ เชฌเชนเชพเชฐ เช›เซ‡. เชนเซเช‚ เชซเช•เซเชค เชเชŸเชฒเซเช‚ เชœ เช•เชนเซ€เชถ เช•เซ‡ เชคเชฎเซ‡ เชจเซ‹เชก เชชเชฐ เชธเซ‡เชตเชพเชจเซ‡ เชšเซเชธเซเชคเชชเชฃเซ‡ "เชจเซ‡เชฒ" เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชฅเชตเชพ เชเช• เชจเชพเชจเซ€ เชธเชพเช‡เชกเช•เชพเชฐ เชธเซ‡เชตเชพ เชฒเช–เซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡ VPN เชธเซ‡เชตเชพเชจเชพ เชตเชฐเซเชคเชฎเชพเชจ IP เชธเชฐเชจเชพเชฎเชพเชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชถเซ‡ เช…เชจเซ‡ เช•เซเชฒเชพเชฏเชจเซเชŸเซเชธ เชธเชพเชฅเซ‡ เชจเซ‹เช‚เชงเชพเชฏเซ‡เชฒเชพ DNS เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชถเซ‡ - เชœเซ‡เชจเซ€ เชชเชพเชธเซ‡ เชชเซ‚เชฐเชคเซ€ เช•เชฒเซเชชเชจเชพ เช›เซ‡.

เชฐเซ‚เชŸเซ€เช‚เช— เชชเชฐเชฟเชชเซเชฐเซ‡เช•เซเชทเซเชฏเชฎเชพเช‚, เช…เชฎเซ‡ VPN เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เชœเชพเชฐเซ€ เช•เชฐเชพเชฏเซ‡เชฒ เชคเซ‡เชจเชพ IP เชธเชฐเชจเชพเชฎเชพ เชฆเซเชตเชพเชฐเชพ VPN เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชตเชฟเชถเชฟเชทเซเชŸ เชฐเซ€เชคเซ‡ เช“เชณเช–เซ€ เชถเช•เซ€เช เช›เซ€เช. เชจเซ€เชšเซ‡ เช†เชตเชพ เช•เซเชฒเชพเชฏเชจเซเชŸเชจเซ€ เชธเซ‡เชตเชพเช“เชจเซ€ เชเช•เซเชธเซ‡เชธเชจเซ‡ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เช†เชฆเชฟเชฎ เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡, เช‰เชชเชฐเซ‹เช•เซเชค เชฐเซ‡เชกเชฟเชธ เชชเชฐ เชธเชšเชฟเชคเซเชฐ เช›เซ‡:

apiVersion: crd.projectcalico.org/v1
kind: HostEndpoint
metadata:
  name: vpnclient-eth0
  labels:
    role: vpnclient
    environment: production
spec:
  interfaceName: "*"
  node: kube-02
  expectedIPs: ["172.176.176.2"]
---
apiVersion: crd.projectcalico.org/v1
kind: GlobalNetworkPolicy
metadata:
  name: vpn-rules
spec:
  selector: "role == 'vpnclient'"
  order: 0
  applyOnForward: true
  preDNAT: true
  ingress:
  - action: Deny
    protocol: TCP
    destination:
      ports: [6379]
  - action: Allow
    protocol: UDP
    destination:
      ports: [53, 67]

เช…เชนเซ€เช‚, เชชเซ‹เชฐเซเชŸ 6379 เชฅเซ€ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เชธเช–เชค เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ DNS เชธเซ‡เชตเชพเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เชธเชšเชตเชพเชฏ เช›เซ‡, เชœเซ‡เชจเซเช‚ เช•เชพเชฐเซเชฏ เชจเชฟเชฏเชฎเซ‹ เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เช˜เชฃเซ€ เชตเชพเชฐ เชชเซ€เชกเชพเชฏ เช›เซ‡. เช•เชพเชฐเชฃ เช•เซ‡, เช…เช—เชพเช‰ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซเชฏเชพ เชฎเซเชœเชฌ, เชœเซเชฏเชพเชฐเซ‡ เชชเชธเช‚เชฆเช—เซ€เช•เชพเชฐ เชฆเซ‡เช–เชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชกเชฟเชซเซ‹เชฒเซเชŸ เชจเชพเชฎเช‚เชœเซ‚เชฐ เชจเซ€เชคเชฟ เชคเซ‡เชจเชพ เชชเชฐ เชฒเชพเช—เซ เชฅเชพเชฏ เช›เซ‡ เชธเชฟเชตเชพเชฏ เช•เซ‡ เช…เชจเซเชฏเชฅเชพ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชนเซ‹เชฏ.

เชชเชฐเชฟเชฃเชพเชฎเซ‹

เช†เชฎ, เช•เซ‡เชฒเชฟเช•เซ‹เชจเชพ เช…เชฆเซเชฏเชคเชจ API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เช†เชธเชชเชพเชธเชจเชพ เชฐเซ‚เชŸเซ€เช‚เช—เชจเซ‡ เชฒเชตเชšเซ€เช• เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เซ‹ เช›เซ‹. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชคเซ‹เชช เชตเชกเซ‡ เชธเซเชชเซ‡เชฐเซ‹เชจเซ‡ เชฎเชพเชฐเชตเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ BGP เช…เชจเซ‡ IP-IP เชŸเชจเชฒ เชธเชพเชฅเซ‡ L3 เชจเซ‡เชŸเชตเชฐเซเช• เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเซเช‚ เช เชซเซเชฒเซ‡เชŸ เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฐ เชธเชฐเชณ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชฎเชพเช‚ เชญเชฏเช‚เช•เชฐ เชฒเชพเช—เซ‡ เช›เซ‡... เชœเซ‹ เช•เซ‡, เช…เชจเซเชฏเชฅเชพ เชธเชพเชงเชจ เชคเชฆเซเชฆเชจ เชตเซเชฏเชตเชนเชพเชฐเซ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชฒเชพเช—เซ‡ เช›เซ‡. .

เชธเซเชฐเช•เซเชทเชพ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เชชเชนเซ‹เช‚เชšเซ€ เชตเชณเชตเชพ เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เช…เชฒเช— เช•เชฐเชตเซเช‚ เชนเช‚เชฎเซ‡เชถเชพ เชถเช•เซเชฏ เชจ เชนเซ‹เชˆ เชถเช•เซ‡, เช…เชจเซ‡ เช…เชนเซ€เช‚ เช•เซ‡เชฒเชฟเช•เซ‹ (เช…เชฅเชตเชพ เชธเชฎเชพเชจ เช‰เช•เซ‡เชฒ) เชฌเชšเชพเชตเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชฒเซ‡เช–เชฎเชพเช‚ เช†เชชเซ‡เชฒเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ (เชจเชพเชจเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชธเชพเชฅเซ‡) AWS เชฎเชพเช‚ เช…เชฎเชพเชฐเชพ เช•เซเชฒเชพเชฏเช‚เชŸเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡.

PS

เช…เชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เช— เชชเชฐ เชชเชฃ เชตเชพเช‚เชšเซ‹:

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹