Π¦Π΅Π»ΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π΅ Π΄Π° Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Ρ ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π² ΠΌΡΠ΅ΠΆΠ° ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π² Kubernetes, ΠΊΠ°ΠΊΡΠΎ ΠΈ Ρ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°ΡΠ° Calico Π½Π° ΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½Π°, ΠΊΠΎΡΡΠΎ ΡΠ°Π·ΡΠΈΡΡΠ²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠΎ ΠΏΡΡΡ, Π»Π΅ΡΠ½ΠΎΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ ΠΈ Π½ΡΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ΅Π°Π»Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΎΡ Π½Π°ΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π΅Π½ ΠΎΠΏΠΈΡ.
ΠΡΠ°ΡΠΊΠΎ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Kubernetes
ΠΠ»ΡΡΡΠ΅Ρ Π½Π° Kubernetes Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈ Π±Π΅Π· ΠΌΡΠ΅ΠΆΠ°. ΠΠ΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ
ΠΌΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ Π·Π° ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΈ: β
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΡΠ°ΠΌΠΈΡΡ K8s Π½Π΅ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° ΠΌΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈ Π²ΡΠ·Π»ΠΈ: Π·Π° ΡΠΎΠ²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ CNI Π΄ΠΎΠ±Π°Π²ΠΊΠΈ (ΠΡΠ΅ΠΆΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ). ΠΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π½ΠΈΠ΅
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈΡΡ ΠΎΡ ΡΠ΅Π·ΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π΅
ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ΅ βΠΈΠ·Π²ΡΠ½ ΠΊΡΡΠΈΡΡΠ°β Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π² ΠΊΠ»ΡΡΡΠ΅Ρ Π½Π° Kubernetes
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 Π²ΠΈΠ΄Π° ΡΡΠ°ΡΠΈΠΊ: Π²Π»ΠΈΠ·Π°Ρ Π² ΠΏΠΎΠ΄ (Ingress) ΠΈ ΠΈΠ·Ρ ΠΎΠ΄ΡΡ ΠΎΡ Π½Π΅Π³ΠΎ (Egress).
ΠΡΡΡΠ½ΠΎΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° ΡΠ΅ Π΄Π΅Π»ΠΈ Π½Π° ΡΠ΅Π·ΠΈ 2 ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠΏΠΎΡΠ΅Π΄ ΠΏΠΎΡΠΎΠΊΠ°ΡΠ° Π½Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π΅Π½ Π°ΡΡΠΈΠ±ΡΡ Π΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ; ΡΠΎΠ·ΠΈ, Π·Π° ΠΊΠΎΠ³ΠΎΡΠΎ Π²Π°ΠΆΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΡΠΎ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ΄ (ΠΈΠ»ΠΈ Π³ΡΡΠΏΠ° ΠΎΡ ΠΏΠΎΠ΄) ΠΈΠ»ΠΈ ΡΡΠ΅Π΄Π° (Ρ.Π΅. ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°). ΠΠ°ΠΆΠ½Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡ: ΠΈ Π΄Π²Π°ΡΠ° ΡΠΈΠΏΠ° Π½Π° ΡΠ΅Π·ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ΄ΡΡΠΆΠ°Ρ Π΅ΡΠΈΠΊΠ΅Ρ (Π΅ΡΠΈΠΊΠ΅Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° Kubernetes) - ΡΠΎΠ²Π° ΡΠ° ΡΠ΅Π·ΠΈ, Ρ ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΠ΅ΡΠΈΡΠ°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΡΠΈΡΠ΅.
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΊΡΠ°Π΅Π½ Π±ΡΠΎΠΉ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΈ, ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ Π΅ΡΠΈΠΊΠ΅Ρ, Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΊΠ°ΡΠΎ βΠ Π°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅/ΠΎΡΠΊΠ°Π· Π½Π° Π²ΡΠΈΡΠΊΠΎ/Π²ΡΠΈΡΠΊΠΈβ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ. ΠΠ° ΡΠ°Π·ΠΈ ΡΠ΅Π» ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΡΠΎΡΠΌΠ°ΡΠ°:
podSelector: {}
ingress: []
policyTypes:
- Ingress
β Π² ΡΠΎΠ·ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² ΡΡΠ΅Π΄Π°ΡΠ° ΡΠ° Π±Π»ΠΎΠΊΠΈΡΠ°Π½ΠΈ ΠΎΡ Π²Ρ ΠΎΠ΄ΡΡ ΡΡΠ°ΡΠΈΠΊ. ΠΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΡΡΡ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ:
podSelector: {}
ingress:
- {}
policyTypes:
- Ingress
ΠΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½ Π·Π° ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠΈ:
podSelector: {}
policyTypes:
- Egress
- Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅. Π Π΅ΡΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅:
podSelector: {}
egress:
- {}
policyTypes:
- Egress
ΠΡΡΡΠ°ΠΉΠΊΠΈ ΡΠ΅ ΠΊΡΠΌ ΠΈΠ·Π±ΠΎΡΠ° Π½Π° CNI ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° ΠΊΠ»ΡΡΡΠ΅Ρ, Π·Π°ΡΠ»ΡΠΆΠ°Π²Π° Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ Π½Π΅ Π²ΡΠ΅ΠΊΠΈ ΠΌΡΠ΅ΠΆΠΎΠ² ΠΏΠ»ΡΠ³ΠΈΠ½ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° NetworkPolicy. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈΡΡ Flannel Π½Π΅ Π·Π½Π°Π΅ ΠΊΠ°ΠΊ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ
ΠΠ°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Ρ Calico: ΡΠ΅ΠΎΡΠΈΡ
ΠΡΠΈΡΡΠ°Π²ΠΊΠ°ΡΠ° Calico ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Flannel (ΠΏΠΎΠ΄ΠΏΡΠΎΠ΅ΠΊΡ
ΠΠ°ΠΊΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° βΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΎΡΠΎβ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° K8s ΠΈ Π½Π°Π±ΠΎΡΠ° API ΠΎΡ Calico?
ΠΡΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π²Π³ΡΠ°Π΄Π΅Π½ΠΎ Π² NetworkPolicy:
- ΠΏΠΎΠ»ΠΈΡΠΈΡΠΈΡΠ΅ ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΠΎΡ ΡΡΠ΅Π΄Π°ΡΠ°;
- ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΊΡΠΌ ΠΊΠ°ΠΏΡΡΠ»ΠΈ, ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ Ρ Π΅ΡΠΈΠΊΠ΅ΡΠΈ;
- ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΊΡΠΌ ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΡΡΠ΅Π΄ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠΈ;
- ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ, Π½Π°ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° ΠΏΠΎΡΡΠΎΠ²Π΅.
ΠΡΠΎ ΠΊΠ°ΠΊ Calico ΡΠ°Π·ΡΠΈΡΡΠ²Π° ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ:
- ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΊΡΠΌ Π²ΡΠ΅ΠΊΠΈ ΠΎΠ±Π΅ΠΊΡ: pod, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ;
- ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ (Π·Π°Π±ΡΠ°Π½Π°, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅);
- ΡΠ΅Π»ΡΠ° ΠΈΠ»ΠΈ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΡΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΡ, Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΠΎΡΡΠΎΠ²Π΅, ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ, HTTP ΠΈΠ»ΠΈ ICMP Π°ΡΡΠΈΠ±ΡΡΠΈ, IP ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° (4-ΡΠΎ ΠΈΠ»ΠΈ 6-ΡΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅), Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΈ (Π²ΡΠ·Π»ΠΈ, Ρ ΠΎΡΡΠΎΠ²Π΅, ΡΡΠ΅Π΄ΠΈ);
- ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅Π³ΡΠ»ΠΈΡΠ°ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΠΊ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° DNAT ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°.
ΠΡΡΠ²ΠΈΡΠ΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Π½Π° GitHub Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Calico Π΄Π°ΡΠΈΡΠ°Ρ ΠΎΡ ΡΠ»ΠΈ 2016 Π³., Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡΡ Π·Π°Π΅ Π²ΠΎΠ΄Π΅ΡΠ° ΠΏΠΎΠ·ΠΈΡΠΈΡ Π² ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΎΡΡ Π½Π° Kubernetes - ΡΠΎΠ²Π° ΡΠ΅ Π΄ΠΎΠΊΠ°Π·Π²Π° Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΏΡΠΎΡΡΠ²Π°Π½Π΅ΡΠΎ,
ΠΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ K8, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡ
Π©ΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΡΡΠΊ Π²ΡΠΈΡΠΊΠΎ Π΅ ΡΡΡΠ°Ρ
ΠΎΡΠ½ΠΎ. ΠΡΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ²ΠΎΡ ΠΏΡΠΎΠ΄ΡΠΊΡ Π΅ΠΊΠΈΠΏΡΡ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Calico Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° Π°ΡΡΡΠΎΠ½ΠΎΠΌΠΈΡΠ΅ΡΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΡΠ°Π±ΠΎΡΠ΅ΠΉΠΊΠΈ Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 50000 500 ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π½Π° 20 ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·Π΅Π»Π° ΡΡΡ ΡΠΊΠΎΡΠΎΡΡ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ ΠΎΡ XNUMX ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² ΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠ΅ ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ΡΠΎ. Π’Π°ΠΊΠΈΠ²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ
ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ·ΠΎ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π±ΠΎΡΠ° Π² ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΈ K8s, OpenShift, OpenStack, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Calico ΠΏΡΠΈ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΡΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ°
Π’ΡΠ΅Π½ΠΈΡΠ°ΠΉΡΠ΅ Ρ Calico
Π ΠΎΠ±ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²Π°Π½ΠΈΠ»Π΅Π½ Kubernetes, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° CNI ΡΠ΅ ΡΠ²Π΅ΠΆΠ΄Π° Π΄ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»Π° calico.yaml
, kubectl apply -f
.
ΠΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π° Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 2-3 Π²Π΅ΡΡΠΈΠΈ Π½Π° Kubernetes: ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π² ΠΏΠΎ-ΡΡΠ°ΡΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π΅ Π΅ ΡΠ΅ΡΡΠ²Π°Π½Π° ΠΈ Π½Π΅ Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½Π°. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Calico ΡΠ°Π±ΠΎΡΠΈ Π½Π° Linux ΡΠ΄ΡΠ° Π½Π°Π΄ 3.10, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ ΠΏΠΎΠ΄ CentOS 7, Ubuntu 16 ΠΈΠ»ΠΈ Debian 8, Π²ΡΡΡ Ρ iptables ΠΈΠ»ΠΈ IPVS.
ΠΠ·ΠΎΠ»Π°ΡΠΈΡ Π² ΠΎΠΊΠΎΠ»Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°
ΠΠ° ΠΎΠ±ΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡΠΎΡΡ ΡΠ»ΡΡΠ°ΠΉ, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π² Π½ΠΎΡΠ°ΡΠΈΡΡΠ° Π½Π° Calico ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΡΡΡ Π½Π°ΡΠ° ΡΠ΅ΡΠ»ΠΈΠ²ΠΎΡΡ ΠΈ Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°:
Π ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΡΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ 2 ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: Π² Node.js ΠΈ PHP, Π΅Π΄Π½ΠΎΡΠΎ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Redis. ΠΠ° Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ Redis ΠΎΡ PHP, ΠΊΠ°ΡΠΎ ΡΡΡΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ Π²ΡΡΠ·ΠΊΠ° Ρ Node.js, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅ΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°:
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
ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π²Ρ ΠΎΠ΄ΡΡ ΡΡΠ°ΡΠΈΠΊ ΠΊΡΠΌ ΠΏΠΎΡΡΠ° Π½Π° Redis ΠΎΡ Node.js. Π ΡΠ²Π½ΠΎ Π½Π΅ ΡΠ° Π·Π°Π±ΡΠ°Π½ΠΈΠ»ΠΈ Π½ΠΈΡΠΎ Π΄ΡΡΠ³ΠΎ. ΠΠ΅Π΄Π½Π°Π³Π° ΡΠΎΠΌ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ NetworkPolicy, Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΈ, ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈ Π² Π½Π΅Π³ΠΎ, Π·Π°ΠΏΠΎΡΠ²Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Ρ, ΠΎΡΠ²Π΅Π½ Π°ΠΊΠΎ Π½Π΅ Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ Π΄ΡΡΠ³ΠΎ. ΠΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ ΠΎΠ±Π°ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π·Π° Π΄ΡΡΠ³ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΠΎΠ±Ρ Π²Π°Π½Π°ΡΠΈ ΠΎΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ°.
ΠΡΠΈΠΌΠ΅ΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° apiVersion
Kubernetes Π΅ Π³ΠΎΡΠΎΠ², Π½ΠΎ Π½ΠΈΡΠΎ Π½Π΅ Π²ΠΈ ΠΏΡΠ΅ΡΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅
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
ΠΠΎΡΠ΅ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ°Π· Π½Π° ΡΠ΅Π»ΠΈΡ ΡΡΠ°ΡΠΈΠΊ ΠΏΡΠ΅Π· ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ API Π½Π° NetworkPolicy ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΡΡ ΡΠΊΠΎΠ±ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΡΡΠ΄Π½ΠΈ Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΡΠ½Π΅. Π ΡΠ»ΡΡΠ°Ρ Ρ Calico, Π·Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΠΎΡΠΎ Π½Π° Π·Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΡΠ΅Π½Π° Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ action: Allow
Π½Π° action: Deny
.
ΠΠ·ΠΎΠ»Π°ΡΠΈΡ ΠΎΡ ΠΎΠΊΠΎΠ»Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°
Π‘Π΅Π³Π° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π±ΠΈΠ·Π½Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π² Prometheus ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ Π°Π½Π°Π»ΠΈΠ· Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Grafana. ΠΠ°ΡΠ²Π°Π½Π΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ½ΠΎΠ²ΠΎ ΡΠ° ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΠ΅ΠΊΠ° ΡΠΊΡΠΈΠ΅ΠΌ ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π»ΡΠ±ΠΎΠΏΠΈΡΠ½ΠΈ ΠΎΡΠΈ:
Prometheus, ΠΊΠ°ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ΅ ΠΏΠΎΡΡΠ°Π²Ρ Π² ΠΎΡΠ΄Π΅Π»Π½Π° ΡΠ΅ΡΠ²ΠΈΠ·Π½Π° ΡΡΠ΅Π΄Π° - Π² ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π°:
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
Π Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π½Π° Calico, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΊΠ°ΡΠΎ ΡΠΎΠ·ΠΈ:
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
ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ, ΠΊΠ°ΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠ΅Π·ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π½ΡΠΆΠ΄ΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΡΠΈΡΠΈΡΠ΅ ΡΡΠ΅ΡΡ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π° ΠΈΠ»ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½Π° Π½Π°ΠΌΠ΅ΡΠ° Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
ΠΠ°ΠΉ-Π΄ΠΎΠ±ΡΠ°ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΠΏΠΎΡΠ΅Π΄ ΡΡΠ·Π΄Π°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Calico, Π΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ βΠΠ»ΠΎΠΊΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΈ ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΎΡΠ²ΠΎΡΠ΅ΡΠ΅ ΡΠΎΠ²Π°, ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅β, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°Π½ Π²
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Calico ΠΎΠ±Π΅ΠΊΡΠΈ
ΠΠΎΠ·Π²ΠΎΠ»Π΅ΡΠ΅ ΠΌΠΈ Π΄Π° Π²ΠΈ Π½Π°ΠΏΠΎΠΌΠ½Ρ, ΡΠ΅ ΡΡΠ΅Π· ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π½Π°Π±ΠΎΡ ΠΎΡ API Π½Π° Calico ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅Π³ΡΠ»ΠΈΡΠ°ΡΠ΅ Π½Π°Π»ΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° Π²ΡΠ·Π»ΠΈ, Π±Π΅Π· Π΄Π° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°ΡΠ΅ Π΄ΠΎ pods. Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° GlobalNetworkPolicy
Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ICMP Π·Π°ΡΠ²ΠΊΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π΅ Π·Π°ΡΠ²ΠΎΡΠ΅Π½Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ping ΠΎΡ ΠΏΠΎΠ΄ ΠΊΡΠΌ Π²ΡΠ·Π΅Π», ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΎΡ Π²ΡΠ·Π΅Π» ΠΊΡΠΌ 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
Π Π½Π°ΠΊΡΠ°Ρ, ΡΠ΅ Π΄Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π°Π»Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Calico Π·Π° ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ ΠΊΠ»ΡΡΡΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π½Π΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½. ΠΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ VPN ΡΡΠ½Π΅Π» ΠΈ ΡΠΎΠ·ΠΈ Π΄ΠΎΡΡΡΠΏ Π΅ ΡΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΡΡΠ»ΡΠ³ΠΈ, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅:
ΠΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Ρ ΠΊΡΠΌ VPN ΡΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ UDP ΠΏΠΎΡΡ 1194 ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΠ²ΡΡΠΆΠ°Ρ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ ΠΌΠ°ΡΡΡΡΡΠΈ ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠΈ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈ ΡΡΠ»ΡΠ³ΠΈ. Π¦Π΅Π»ΠΈ ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠΈ ΡΠ΅ Π½Π°ΡΠΈΡΠΊΠ°Ρ, Π·Π° Π΄Π° Π½Π΅ ΡΠ΅ Π·Π°Π³ΡΠ±ΡΡ ΡΡΠ»ΡΠ³ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π°Π΄ΡΠ΅ΡΠ°.
ΠΠΎΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½, ΠΊΠΎΠ΅ΡΠΎ Π½Π°Π»Π°Π³Π° Π½ΡΠΊΠΎΠΈ Π½ΡΠ°Π½ΡΠΈ Π²ΡΡΡ Ρ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ΡΠΎ ΠΌΡ ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΡΡΠΈΡ AWS LoadBalancer Π·Π° UDP ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π±ΡΠΊΠ²Π°Π»Π½ΠΎ Π² ΠΊΡΠ°Ρ Π½Π° ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° Π² ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ, Π° NodePort Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ ΠΌΡ ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ ΠΈ Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ° Π±ΡΠΎΡΡ Π½Π° ΡΡΡΠ²ΡΡΠ½ΠΈΡΠ΅ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΈ Π·Π° ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ½ΠΎΡΡΡΠ° ΠΊΡΠΌ Π³ΡΠ΅ΡΠΊΠΈ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ ΠΏΠΎΡΡΠΎΠ²Π΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅...
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΡΡΡΠ΅Π½Π΅ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅ΡΠ΅ ΠΈΠ·Π±ΡΠ°Π½ΠΎ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
- ΠΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ Ρ VPN ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Ρ Π½Π° Π²ΡΠ·Π΅Π» Π²
hostNetwork
, ΡΠΎΠ΅ΡΡ ΠΊΡΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ IP. - Π£ΡΠ»ΡΠ³Π°ΡΠ° Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° ΠΈΠ·Π²ΡΠ½ ΡΡΠ΅Π·
ClusterIP
. ΠΠ° Π²ΡΠ·Π΅Π»Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΠΏΠΎΡΡ, ΠΊΠΎΠΉΡΠΎ Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΎΡΠ²ΡΠ½ Ρ ΠΌΠ°Π»ΠΊΠΈ ΡΠ΅Π·Π΅ΡΠ²ΠΈ (ΡΡΠ»ΠΎΠ²Π½ΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΡΠ΅Π°Π»Π΅Π½ IP Π°Π΄ΡΠ΅Ρ). - ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° Π²ΡΠ·Π΅Π»Π°, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΡΡΡΠ»ΠΊΠ°ΡΠ° Π΅ ΠΈΠ·Π²ΡΠ½ ΠΎΠ±Ρ Π²Π°ΡΠ° Π½Π° Π½Π°ΡΠ°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ. Π©Π΅ ΠΊΠ°ΠΆΠ° ΡΠ°ΠΌΠΎ, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ»ΡΡΠ½ΠΎ Π΄Π° βΠ·Π°ΠΊΠΎΠ²Π°ΡΠ΅β ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΊΡΠΌ Π²ΡΠ·Π΅Π» ΠΈΠ»ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ°Π»ΠΊΠ° ΡΡΠ»ΡΠ³Π° Π·Π° ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ ΠΊΠΎΠ»ΠΈ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ ΡΠ΅ΠΊΡΡΠΈΡ IP Π°Π΄ΡΠ΅Ρ Π½Π° VPN ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΈ ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ° DNS Π·Π°ΠΏΠΈΡΠΈΡΠ΅, ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ - ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π²ΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
ΠΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅, ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΎ Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°ΠΌΠ΅ VPN ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΠ΅Π· Π½Π΅Π³ΠΎΠ²ΠΈΡ IP Π°Π΄ΡΠ΅Ρ, ΠΈΠ·Π΄Π°Π΄Π΅Π½ ΠΎΡ VPN ΡΡΡΠ²ΡΡΠ°. ΠΠΎ-Π΄ΠΎΠ»Ρ Π΅ Π΄Π°Π΄Π΅Π½ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π½Π° ΡΠ°ΠΊΡΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄ΠΎ ΡΡΠ»ΡΠ³ΠΈ, ΠΈΠ»ΡΡΡΡΠΈΡΠ°Π½ Π½Π° Π³ΠΎΡΠ΅ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈΡ Redis:
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 Π½Π° Calico, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π³ΡΠ²ΠΊΠ°Π²ΠΎ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π² ΠΈ ΠΎΠΊΠΎΠ»ΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°ΡΠΎ ΡΡΡΠ΅Π»Π±Π° ΠΏΠΎ Π²ΡΠ°Π±ΡΠ΅ΡΠ° Ρ ΠΎΡΡΠ΄ΠΈΠ΅, Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° L3 ΠΌΡΠ΅ΠΆΠ° Ρ BGP ΠΈ IP-IP ΡΡΠ½Π΅Π»ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΡΠ΄ΠΎΠ²ΠΈΡΠ½ΠΎ Π² ΠΏΡΠΎΡΡΠ° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π½Π° Kubernetes Π² ΠΏΠ»ΠΎΡΠΊΠ° ΠΌΡΠ΅ΠΆΠ°... Π ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΠΎΠ±Π°ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΄ΠΎΡΡΠ° ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΈ ΠΏΠΎΠ»Π΅Π·Π΅Π½ .
ΠΠ·ΠΎΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ»ΡΡΡΠ΅Ρ, Π·Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠΌΠΎ ΠΈ ΡΡΠΊ Calico (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅) ΠΈΠ΄Π²Π° Π½Π° ΠΏΠΎΠΌΠΎΡ. ΠΡΠΈΠΌΠ΅ΡΠΈΡΠ΅, Π΄Π°Π΄Π΅Π½ΠΈ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ (Ρ ΠΌΠ°Π»ΠΊΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ), ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈ Π½Π° Π½Π°ΡΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Π² AWS.
PS
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- Β«
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈ ΠΏΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Β»; - βΠΠ»ΡΡΡΡΠΎΠ²Π°Π½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π² ΠΌΡΠ΅ΠΆΠ° Π² Kubernetesβ:
ΡΠ°ΡΡΠΈ 1 ΠΈ 2 (ΠΌΡΠ΅ΠΆΠΎΠ² ΠΌΠΎΠ΄Π΅Π», ΠΌΡΠ΅ΠΆΠΈ Ρ Π½Π°ΡΠ»Π°Π³Π²Π°Π½Π΅) ,ΡΠ°ΡΡ 3 (ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈΠΊ) ; - Β«
Container Networking Interface (CNI) - ΠΌΡΠ΅ΠΆΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡ Π·Π° Linux ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com