
ΠΡΠ΅ΠΆΠΎΠ²ΠΈΡΡ ΠΏΠ»ΡΠ³ΠΈΠ½ Calico ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠΈΡΠΎΠΊ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° Ρ
ΠΎΡΡΠΎΠ²Π΅ Π½Π° Ρ
Π°ΡΠ΄ΡΠ΅Ρ, Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅. Π’Π΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ Π΄Π° Π±ΡΠ΄Π°Ρ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ ΠΊΡΠΌ (Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Ρ
ΠΎΡΡΠ° β Ρ
ΠΎΡΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°ΠΌΠΈΡΡ ΡΡΡΠ²ΡΡ ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°) ΠΈΠ»ΠΈ ΠΊΡΠΌ (Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, Ρ
ΠΎΡΡΠ²Π°Π½ΠΈ Π½Π° Ρ
ΠΎΡΡΠ°). ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Calico ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΊΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΊΠ°ΡΠΎ preDNAT, unraracked ΠΈ applyOnForward. Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΡΡ ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ. Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠ²Π°Ρ ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Calico (preDNAT, unraracked ΠΈ applyOnForward), ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ ΠΊΡΠΌ host endpoints, Ρ Π°ΠΊΡΠ΅Π½Ρ Π²ΡΡΡ
Ρ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² ΠΏΡΡΠΈΡΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ (Π²Π΅ΡΠΈΠ³ΠΈ iptables).
Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π½Π° Kubernetes ΠΈ Calico. ΠΠΊΠΎ Π½Π΅, ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅ ΠΈ Ρ Calico, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΡΠ°ΠΊΠ²Π°ΠΌΠ΅, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π² Linux.
Calico Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΏΠΎ Π΅ΡΠΈΠΊΠ΅ΡΠΈ (ΠΊ Π³ΡΡΠΏΠΈ Ρ ΠΎΡΡΠΎΠ²Π΅ ΠΈ workloads/pods). Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π·Π°Π΅Π΄Π½ΠΎ Ρ Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ β Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° ΡΠ°ΠΌΠΈΡ Ρ Π°ΡΠ΄ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Kubernetes. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΡΠΈΡΠΈΡΠ΅ ΡΠ²ΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ (Π²ΡΠ·Π»ΠΈ) Ρ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΈ Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΊΡΠΌ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡΠ°ΡΠΈΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π· NodePorts ΠΈΠ»ΠΈ Π²ΡΠ½ΡΠ½ΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ).
ΠΠ° ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Calico ΡΠ²ΡΡΠ·Π²Π° pod Ρ ΠΌΡΠ΅ΠΆΠ°ΡΠ° (Π²ΠΈΠΆ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ), ΡΠΎΠΉ Π³ΠΎ ΡΠ²ΡΡΠ·Π²Π° Ρ Ρ ΠΎΡΡΠ° ΡΡΠ΅Π· Π²ΠΈΡΡΡΠ°Π»Π΅Π½ Ethernet ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (veth). Π’ΡΠ°ΡΠΈΠΊΡΡ, ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ ΠΎΡ pod, Π΄ΠΎΡΡΠΈΠ³Π° Π΄ΠΎ Ρ ΠΎΡΡΠ° ΡΡΠ΅Π· ΡΠΎΠ·ΠΈ Π²ΠΈΡΡΡΠ°Π»Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ°ΠΊΠ°, ΡΡΠΊΠ°Ρ ΠΈΠ΄Π²Π° ΠΎΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΌΡΠ΅ΠΆΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, Calico ΠΈΠΌΠ΅Π½ΡΠ²Π° ΡΠ΅Π·ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ caliXXX. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΠ°ΡΠΈΠΊΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠΎΠΉ ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· iptables, Π²ΡΠ΅ Π΅Π΄Π½ΠΎ podΡΡ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π½Π° ΡΠ°Π·ΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ hop. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°ΡΠΈΠΊΡΡ ΠΈΠ΄Π²Π°/ΠΈΠ·Π»ΠΈΠ·Π° ΠΎΡ pod, ΡΠΎΠΉ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° (forwarded) ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Ρ ΠΎΡΡΠ°.
ΠΠ° Π½ΠΎΠ΄Π° Π½Π° Kubernetes, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Calico, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (veth) Ρ workload ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½. Π ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ veth#10 (calic1cbf1ca0f8) Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ cnx-manager-* Π² namespace calico-monitoring.
[centos@ip-172-31-31-46 K8S]$ sudo ip a
...
10: calic1cbf1ca0f8@if4: mtu 1440 qdisc noqueue state UP group default
link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 5
inet6 fe80::ecee:eeff:feee:eeee/64 scope link
valid_lft forever preferred_lft forever
...
[centos@ip-172-31-31-46 K8S]$ calicoctl get wep --all-namespaces
...
calico-monitoring cnx-manager-8f778bd66-lz45m ip-172-31-31-46.ec2.internal 192.168.103.134/32
calic1cbf1ca0f8
... 
ΠΠ°ΡΠΎ ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Calico ΡΡΠ·Π΄Π°Π²Π° veth ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ workload, ΠΊΠ°ΠΊ ΡΠΎΠΉ ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅? ΠΠ° ΡΠ°Π·ΠΈ ΡΠ΅Π» Calico ΡΡΠ·Π΄Π°Π²Π° Ρ
ΡΠΊΠΎΠ²Π΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²Π΅ΡΠΈΠ³ΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ iptables.
ΠΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ Π²Π΅ΡΠΈΠ³ΠΈΡΠ΅, ΡΡΠ°ΡΡΠ²Π°ΡΠΈ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² iptables (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° netfilter). ΠΠΎΠ³Π°ΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΡΡ ΠΏΠΎΡΡΡΠΏΠ²Π° ΠΏΡΠ΅Π· ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠΎΠΉ ΠΏΡΡΠ²ΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³Π°ΡΠ° PREROUTING. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠΎΠ²Π° ΠΏΠ°ΠΊΠ΅ΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΈΠ»ΠΈ ΠΏΡΠ΅Π· INPUT (Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° Ρ ΠΎΡΡΠ°), ΠΈΠ»ΠΈ ΠΏΡΠ΅Π· FORWARD (Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ pod ΠΈΠ»ΠΈ ΠΊΡΠΌ Π΄ΡΡΠ³ Π½ΠΎΠ΄ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°). ΠΡ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³Π°ΡΠ° OUTPUT ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° POSTROUTING ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ ΠΏΠΎ ΠΊΠ°Π±Π΅Π»Π°.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ pod ΡΡΡΠΎ Π΅ Π²ΡΠ½ΡΠ΅Π½ ΠΎΠ±Π΅ΠΊΡ (ΡΠ²ΡΡΠ·Π°Π½ Ρ veth) ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π² iptables. ΠΠ° ΠΎΠ±ΠΎΠ±ΡΠΈΠΌ:
- ΠΡΠ΅ΠΏΡΠ°ΡΠ΅Π½ΠΈΡΡ (forwarded) ΡΡΠ°ΡΠΈΠΊ (nat, ΠΌΠ°ΡΡΡΡΡΠΈΡΠ°Π½ ΠΈΠ»ΠΈ Π²/ΠΎΡ pod) ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³ΠΈΡΠ΅ PREROUTING β FORWARD β POSTROUTING.
- Π’ΡΠ°ΡΠΈΠΊΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ Ρ ΠΎΡΡ-ΠΏΡΠΎΡΠ΅Ρ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³Π°ΡΠ° PREROUTING β INPUT.
- Π’ΡΠ°ΡΠΈΠΊΡΡ ΠΎΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ Ρ ΠΎΡΡ-ΠΏΡΠΎΡΠ΅Ρ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³Π°ΡΠ° OUTPUT β POSTROUTING.

Calico ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, ΡΡΠ΅Π· ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΠΈΠ³ΠΈ. ΠΠΌΠ°ΠΉΠΊΠΈ ΡΠΎΠ²Π° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅, Π½Π°Π»ΠΈΡΠ½ΠΈ Π² Calico. Π¦ΠΈΡΡΠΈΡΠ΅ Π² ΡΠΏΠΈΡΡΠΊΠ° Ρ ΠΎΠΏΡΠΈΠΈ ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΡΠΈΡΡΠΈΡΠ΅ Π² Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° Π³ΠΎΡΠ΅.
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ½ΠΈ ΡΠΎΡΠΊΠΈ (pod)
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° Ρ ΠΎΡΡ ΡΠΎΡΠΊΠΈ
- ΠΠΏΡΠΈΡ ApplyOnForward
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° PreDNAT
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Untracked
ΠΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ ΠΊΡΠΌ ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ (pod-ΠΎΠ²Π΅ Π½Π° Kubernetes ΠΈΠ»ΠΈ OpenStack VMs), ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π·Π° Ρ ΠΎΡΡ ΡΠΎΡΠΊΠΈ.
Π Π°Π±ΠΎΡΠ½ΠΈ ΡΠΎΡΠΊΠΈ
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ½Π° ΡΠΎΡΠΊΠ° (1)
Π’ΠΎΠ²Π° Π΅ ΠΎΠΏΡΠΈΡ Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° Π²Π°ΡΠΈΡΠ΅ Kubernetes pod-ΠΎΠ²Π΅. Calico ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π±ΠΎΡΠ° Ρ Kubernetes NetworkPolicy, Π½ΠΎ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ β Calico NetworkPolicy ΠΈ GlobalNetworkPolicy. Calico ΡΡΠ·Π΄Π°Π²Π° Π²Π΅ΡΠΈΠ³Π° Π·Π° Π²ΡΡΠΊΠΈ pod (ΡΠ°Π±ΠΎΡΠ½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅) ΠΈ Ρ ΡΠΊΠ²Π° Π² Π²Π΅ΡΠΈΠ³ΠΈΡΠ΅ INPUT ΠΈ OUTPUT Π·Π° ΡΠ°Π±ΠΎΡΠ½ΠΎΡΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π² Π²Π΅ΡΠΈΠ³Π° FORWARD.
Π₯ΠΎΡΡ ΡΠΎΡΠΊΠΈ
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° Ρ ΠΎΡΡ ΡΠΎΡΠΊΠ° (2)
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ CNI (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ), ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Calico ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΡΠ°ΠΌΠΈΡ Ρ ΠΎΡΡ. Π Calico ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Ρ ΠΎΡΡ ΡΠΎΡΠΊΠ°, Π·Π°Π΄Π°Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° Ρ ΠΎΡΡΠ° ΠΈ, Π°ΠΊΠΎ Π΅ Π½ΡΠΆΠ½ΠΎ, Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΡΠΎΠ²Π΅ΡΠ΅. ΠΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΠΈ ΡΡΡΠ½ΠΎΡΡ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΡΡΠ΅Π· ΡΠ°Π±Π»ΠΈΡΠ° Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π² Π²Π΅ΡΠΈΠ³ΠΈΡΠ΅ INPUT ΠΈ OUTPUT. ΠΠ°ΠΊΡΠΎ ΡΠ΅ Π²ΠΈΠΆΠ΄Π° ΠΎΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ°, (2) ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΊΡΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° Π½ΠΎΠ΄Π°/Ρ ΠΎΡΡΠ°. Π’ΠΎΠ΅ΡΡ, Π°ΠΊΠΎ ΡΡΠ΅ ΡΡΠ·Π΄Π°Π»ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΡΠΌ Ρ ΠΎΡΡ ΡΠΎΡΠΊΠ°, ΡΡ Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΠ²Π»ΠΈΡΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΈΠ΄Π²Π°Ρ ΠΊΡΠΌ/ΠΎΡ Π²Π°ΡΠΈΡΠ΅ pod-ΠΎΠ²Π΅. ΠΠΎ Π·Π° ΡΠΌΠ΅ΡΠΊΠ° Π½Π° ΡΠΎΠ²Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π΅Π΄ΠΈΠ½Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ/ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π·Π° Π²Π°ΡΠΈΡ Ρ ΠΎΡΡ ΠΈ pod-ΠΎΠ²Π΅ ΡΡΠ΅Π· ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Calico. Π’ΠΎΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π·Π° Ρ Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ°. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° Ρ ΠΎΡΡ ΡΠΎΡΠΊΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π° ΡΡΠΈΠ»Π²Π°Π½Π΅ Π½Π° Π·Π°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π΅ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ Π²Π°ΠΆΠ΅Π½ ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΡΡ Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅.
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° ApplyOnForward (3)
ΠΠΏΡΠΈΡΡΠ° ApplyOnForward Π΅ Π½Π°Π»ΠΈΡΠ½Π° Π² Π³Π»ΠΎΠ±Π°Π»Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½Π° Calico, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΊΡΠΌ ΡΠ΅Π»ΠΈΡ ΡΡΠ°ΡΠΈΠΊ, ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ ΠΏΡΠ΅Π· Ρ ΠΎΡΡ ΡΠΎΡΠΊΠ°ΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ΅Π½ ΠΎΡ Ρ ΠΎΡΡΠ° (forwarded). Π’ΠΎΠ·ΠΈ ΡΡΠ°ΡΠΈΠΊ Π²ΠΊΠ»ΡΡΠ²Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π΅Π½ pod ΠΈΠ»ΠΈ ΠΊΡΠ΄Π΅ΡΠΎ ΠΈ Π΄Π° Π΅ Π΄ΡΡΠ³Π°Π΄Π΅ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°. Calico ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π° Π±ΡΠ΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ PreDNAT ΠΈ untracked, Π²ΠΈΠΆΡΠ΅ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ApplyOnForward ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° Ρ ΠΎΡΡΠ° Π² ΡΠ»ΡΡΠ°ΠΈ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π΅Π½ ΡΡΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ NAT.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π°ΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΊΠ°ΠΊΡΠΎ Π·Π° Ρ ΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° podβΠΎΠ²Π΅, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΠΏΡΠΈΡΡΠ° ApplyOnForward. ΠΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π΅ΡΠΈΠΊΠ΅Ρ Π·Π° Π½ΡΠΆΠ½ΠΈΡΠ΅ hostendpoint ΠΈ workload endpoint (pod). Calico Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΠΌΠ΅Π½, Π·Π° Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° Π΅ΡΠΈΠΊΠ΅ΡΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΈΠΏΠ° Π½Π° endpoint (hostendpoint ΠΈΠ»ΠΈ workload).
PreDNAT ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° (4)
Π Kubernetes ΠΏΠΎΡΡΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΡΠΎ service ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠ±ΠΈΡΠΈ Π½Π°Π²ΡΠ½ ΡΡΠ΅Π· ΠΎΠΏΡΠΈΡΡΠ° NodePorts ΠΈΠ»ΠΈ, ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΎ (ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Calico), ΡΡΠ΅Π· ΠΎΠ±ΡΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΡ ΡΡΠ΅Π· ΠΎΠΏΡΠΈΠΈ Cluster IPs ΠΈΠ»ΠΈ External IPs. Kube-proxy Π±Π°Π»Π°Π½ΡΠΈΡΠ° Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡΠ°ΡΠΈΠΊ, ΡΠ²ΡΡΠ·Π°Π½ Ρ service, ΠΊΡΠΌ podβΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ service, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ DNAT. ΠΠΌΠ°ΠΉΠΊΠΈ ΡΠΎΠ²Π° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π·Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΏΠΎΡΡΡΠΏΠ²Π°Ρ ΠΏΡΠ΅Π· NodePorts? ΠΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΡΡΠ°ΡΠΈΠΊΡΡ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ DNAT (ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π° Ρ ΠΎΡΡ:ΠΏΠΎΡΡ ΠΈ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΡΠΈΡ service), Calico ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π° globalNetworkPolicy, Π½Π°ΡΠ΅ΡΠ΅Π½ Β«preDNAT: trueΒ».
ΠΠΎΠ³Π°ΡΠΎ pre-DNAT Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½, ΡΠ΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π² (4) Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° β Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° mangle Π½Π° Π²Π΅ΡΠΈΠ³Π° PREROUTING β Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈ DNAT. ΠΠ±ΠΈΡΠ°ΠΉΠ½Π°ΡΠ° ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ (order) ΡΡΠΊ Π½Π΅ ΡΠ΅ ΡΠΏΠ°Π·Π²Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΡΠ°Π½ΠΎ ΠΏΠΎ ΠΏΡΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ preDNAT ΡΠΏΠ°Π·Π²Π°Ρ ΡΠ΅Π΄Π° Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ (order) ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ.
ΠΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Ρ pre-DNAT Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΈ ΠΊΡΠΌ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΠΉΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΡΠ΅, ΠΈ Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΡ Π½Π΅Π³ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΡΡ
Π²ΡΡΠ»Π΅Π½. Π’ΡΠ°ΡΠΈΠΊΡΡ, ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ ΠΊΠ°ΡΠΎ βallowβ Π² ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° pre-DNAT, Π²Π΅ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π½ ΠΎΡ hostendpoint ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΡΠ°ΡΠΈΠΊΡΡ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΡΡΠΏΠ΅Π΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΏΡΠ΅Π· ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° pre-DNAT, ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ ΠΏΡΠ΅Π· ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ Π²Π΅ΡΠΈΠ³ΠΈ.
Calico Π½Π°ΠΏΡΠ°Π²ΠΈ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΡΠΈΡΡΠ° applyOnForward ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° preDNAT, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ½ΠΊΡΡΡ Π½Π° Π΄Π΅ΡΡΠΈΠ½Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΈΠ·Π±ΡΠ°Π½. Π’ΡΠ°ΡΠΈΠΊΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ Ρ
ΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΠ°, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ pod ΠΈΠ»ΠΈ Π½Π° Π΄ΡΡΠ³Π° Π½ΠΎΠ΄Π°.
Untracked ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° (5)
ΠΡΠ΅ΠΆΠΈΡΠ΅ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠΌΠ°Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ. Π Π½ΡΠΊΠΎΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΎΡΠ½ΠΈ Π²ΡΡΠ·ΠΊΠΈ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅Π΄ΠΎΡΡΠΈΠ³ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π² conntrack (ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΡΠ΅ΠΊ Π² Linux). Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡ ΡΠΎΠ·ΠΈ ΡΠΈΠΏ Π² Linux ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΡΡΡΠ½ΠΎ ΠΈΠ»ΠΈ Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ conntrack, ΠΈΠ»ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° iptables, Π·Π° Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡΠ΅ conntrack. ΠΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° untracked Π² Calico Π΅ ΠΏΠΎ-ΠΏΡΠΎΡΡ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ Π²ΡΡΠ·ΠΊΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π±ΡΡΠ·ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΌΠ°ΡΠΈΠ²Π΅Π½ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π½Π° ΠΌΡΡΠΊΠ° ΡΡΠ΅ΡΡ .
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠΎΠ·ΠΈ (ΠΈΠ»ΠΈ ) Π·Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ΡΡΠΎΠ²Π΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° untracked policy.
ΠΠΎΠ³Π°ΡΠΎ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΠΏΡΠΈΡΡΠ° βdoNotTrack: trueβ Π² Calico globalNetworkPolicy, ΡΡ ΡΡΠ°Π²Π° **Π½Π΅ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠ°** ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΈ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° Π½Π° Π½Π°ΠΉ-ΡΠ°Π½Π½ΠΈΡ Π΅ΡΠ°ΠΏ ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π² Linux. ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ untracked ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π² Π²Π΅ΡΠΈΠ³ΠΈΡΠ΅ PREROUTING ΠΈ OUTPUT Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° raw, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΠΎΡΡΠ»Π΅ΠΆΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅ (conntrack). ΠΠΎΠ³Π°ΡΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ Π±ΡΠ΄Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΠΎΡ untracked ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°, ΡΠΎΠΉ ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°, Π·Π° Π΄Π° ΡΠ΅ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΎΡΡΠ»Π΅ΠΆΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ° Π·Π° ΡΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°:
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° untracked ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ. ΠΡΠΌΠ° ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π·Π° Π²ΡΡΠ·ΠΊΠ° (ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ). ΠΠΈΠΏΡΠ°ΡΠ° Π½Π° Π²ΡΡΠ·ΠΊΠΈ (connection) Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²Π°ΠΆΠ½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ:
- ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅, Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΊΠ°ΠΊΡΠΎ Π·Π° Π²Ρ ΠΎΠ΄ΡΡ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΠΈΠ·Ρ ΠΎΠ΄ΡΡ ΡΡΠ°ΡΠΈΠΊ (ΡΡΠΉ ΠΊΠ°ΡΠΎ Calico ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° conntrack, Π·Π° Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ° ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅ ΠΊΠ°ΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½).
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° untracked Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ Π·Π° workloada Π½Π° Kubernetes (podβΠΎΠ²Π΅), ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π½ΡΠΌΠ° Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈ ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠ°ΡΠ° Π²ΡΡΠ·ΠΊΠ° ΠΎΡ pod-Π°.
- NAT Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ ΡΡΡΠ±Π²Π° Ρ Π½Π΅ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ (ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΄ΡΠΎΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° NAT Π² conntrack).
- ΠΡΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΡΠ΅Π· ΠΏΡΠ°Π²ΠΈΠ»ΠΎ βΡΠ°Π·ΡΠ΅ΡΠΈ Π²ΡΠΈΡΠΊΠΎβ Π² untracked-ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π²ΡΠΈΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ Π½Π΅ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠΈ. Π’ΠΎΠ²Π° ΠΏΠΎΡΡΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π½Π΅ Π΅ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ Π΅ Π½ΡΠΆΠ½ΠΎ, Π·Π°ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»Π½ΠΈ ΠΊΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ ΠΎΡ untracked-ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ (ΠΈ Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΡΠ°ΡΠΈΠΊΠ° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ).
- ΠΠ΅ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π² ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Calico. ΠΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° pod Ρ order:1 ΠΈ Π½Π΅ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Ρ order:1000. Π’ΠΎΠ²Π° Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½Π° ΠΏΡΠ΅Π΄ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π·Π° pod. ΠΠ΅ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΠΏΠ°Π·Π²Π°Ρ ΡΠ΅Π΄Π° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π΅Π΄Π½Π° ΠΎΡ ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° doNotTrack Π΅ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° Π½Π°ΠΉ-ΡΠ°Π½Π΅Π½ Π΅ΡΠ°ΠΏ ΠΎΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² Linux, Calico ΠΏΡΠ°Π²ΠΈ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΡΠΈΡΡΠ° applyOnForward ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° doNotTrack. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΡΠ΅ Π½Π΅ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° (5) ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΡΠ΅Π΄ΠΈ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅. Π’ΡΠ°ΡΠΈΠΊΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ Ρ ΠΎΡΡ-ΠΏΡΠΎΡΠ΅Ρ, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ pod ΠΈΠ»ΠΈ Π½Π° Π΄ΡΡΠ³Π° Π½ΠΎΠ΄Π°.
ΠΡΠΎΠ³
Π Π°Π·Π³Π»Π΅Π΄Π°Ρ ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ (Endpoint Ρ ΠΎΡΡ, ApplyOnForward, preDNAT, ΠΈ ΠΠ΅ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΎ) Π² Calico ΠΈ ΠΊΠ°ΠΊ ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΏΠΎ ΠΏΡΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ. Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΡ Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎΠΌΠ°Π³Π° ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΈ ΡΠΈΠ³ΡΡΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Calico ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΡΠΌ Π΅ΡΠΈΠΊΠ΅Ρ (Π³ΡΡΠΏΠ° ΠΎΡ Π½ΠΎΠ΄ΠΈ ΠΈ podβΠΎΠ²Π΅) ΠΈ Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ. Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈΡΠ΅ ΠΏΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π΄Π° Π·Π°ΡΠΈΡΠ°Π²Π°Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π²ΡΠΈΡΠΊΠΎ (ΡΠΈΠΏΠΎΠ²Π΅ endpoints) Ρ Π΅Π΄ΠΈΠ½Π΅Π½ Π΅Π·ΠΈΠΊ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Calico.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΠΈ: ΠΡΠΊΠ°ΠΌ Π΄Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈ Π·Π° ΡΠ΅Ρ
Π½ΠΈΡ ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ Π·Π° ΡΠ΅Π½Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
