ΠΠ΅Π»Π΅ΡΠΊΠ°. ΡΡΠ°Π½ΡΠ».: ΠΡΡΠΎΡ ΡΠ»Π°Π½ΠΊΠ°, Π Π΅ΡΠ²Π΅Π½ Π₯Π°ΡΡΠΈΡΠΎΠ½, ΠΈΠΌΠ° ΠΏΡΠ΅ΠΊΠΎ 20 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈΡΠΊΡΡΡΠ²Π° Ρ ΡΠ°Π·Π²ΠΎΡΡ ΡΠΎΡΡΠ²Π΅ΡΠ°, Π° Π΄Π°Π½Π°Ρ ΡΠ΅ Π¦Π’Π ΠΈ ΡΡΠΎΡΠ½ΠΈΠ²Π°Ρ Π’ΡΡΠΈΠ½Π°, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΡΠ° ΠΊΡΠ΅ΠΈΡΠ° ΡΠ΅ΡΠ΅ΡΠ° Π·Π° ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΎΠΌ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΌ. ΠΠΎΠΊ ΠΎΠ½ ΠΏΠΎΡΠΌΠ°ΡΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΠΊΠ°ΠΎ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΠΌΠΎΡΠ°Π½ Π°Π»Π°Ρ Π·Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΌΡΠ΅ΠΆΠ΅ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΡ, ΠΎΠ½ ΡΠ°ΠΊΠΎΡΠ΅ Π²Π΅ΡΡΡΠ΅ Π΄Π° ΠΈΡ
Π½ΠΈΡΠ΅ ΡΠ°ΠΊΠΎ Π»Π°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠΈ Ρ ΠΏΡΠ°ΠΊΡΠΈ. ΠΠ²Π°Ρ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π» (ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΠΎΠ±ΠΈΠΌΠ°Π½) ΠΈΠΌΠ° Π·Π° ΡΠΈΡ Π΄Π° ΠΏΠΎΠ±ΠΎΡΡΠ° ΡΠ²Π΅ΡΡ ΡΡΡΡΡΡΠ°ΠΊΠ° ΠΎ ΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΈΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²Π΅ Π½Π΅ΠΎΠΏΡ
ΠΎΠ΄Π½Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅.
ΠΠ°Π½Π°Ρ ΠΌΠ½ΠΎΠ³Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ΅ ΡΠ²Π΅ Π²ΠΈΡΠ΅ Π±ΠΈΡΠ°ΡΡ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΠ²ΠΎΡΠΈΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΠ΅ Π·Π° ΠΎΠ²Π°Ρ ΡΠΎΡΡΠ²Π΅Ρ ΡΠ΅ ΡΠΎΠ»ΠΈΠΊΠΎ Π²Π΅Π»ΠΈΠΊΠΎ Π΄Π° Π½Π΅ΠΊΠΈ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π½Π°Π·ΠΈΠ²Π°ΡΡ βΠ½ΠΎΠ²ΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠΎΠΌ Π·Π° ΡΠ΅Π½ΡΠ°Ρ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°β. ΠΠΎΡΡΠ΅ΠΏΠ΅Π½ΠΎ, ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ (ΠΈΠ»ΠΈ ΠΊ8Ρ) ΠΏΠΎΡΠΈΡΠ΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠΆΠΈΠ²ΡΠ°Π²Π° ΠΊΠ°ΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΈ Π΄Π΅ΠΎ ΠΏΠΎΡΠ»ΠΎΠ²Π°ΡΠ°, ΠΊΠΎΡΠΈ Π·Π°Ρ ΡΠ΅Π²Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡ Π·ΡΠ΅Π»ΠΈΡ ΠΏΠΎΡΠ»ΠΎΠ²Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΠ°, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ ΠΌΡΠ΅ΠΆΠ΅.
ΠΠ° ΡΡΡΡΡΡΠ°ΠΊΠ΅ Π·Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ ΠΊΠΎΡΠΈ ΡΡ Π·Π±ΡΡΠ΅Π½ΠΈ ΡΠ°Π΄ΠΎΠΌ ΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΠΎΠΌ, ΠΏΡΠ°Π²ΠΎ ΠΎΡΠΊΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅: Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ ΡΠ²Π΅.
ΠΠ²Π°Ρ Π²ΠΎΠ΄ΠΈΡ ΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΠΈ Π΄Π° ΡΠ°Π·ΡΠΌΠ΅ΡΠ΅ ΡΠ½ΡΡΡΠ°ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΌΡΠ΅ΠΆΠ½ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°; ΡΠ°Π·ΡΠΌΠ΅ΡΡ ΠΏΠΎ ΡΠ΅ΠΌΡ ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΡΡ ΠΎΠ΄ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΎΠ±ΠΈΡΠ½Π΅ Π·Π°ΡΡΠΈΡΠ½Π΅ Π·ΠΈΠ΄ΠΎΠ²Π΅. Π’Π°ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΏΠΎΠΊΡΠΈΡΠΈ Π½Π΅ΠΊΠ΅ Π·Π°ΠΌΠΊΠ΅ ΠΈ Π΄Π°ΡΠΈ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ΅ ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΏΠΎΠΌΠΎΡΠΈ Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π½Π° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ-Ρ.
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅
ΠΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠΎΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ°ΡΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠ½ΠΎΠΌ ΡΠ»ΠΎΡΡ (ΡΡΠ΅ΡΠΈ Ρ ΠΠ‘Π ΠΌΠΎΠ΄Π΅Π»Ρ). ΠΡΠ΅ΠΆΠ½ΠΈΠΌ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΠΌΠ° Π½Π΅Π΄ΠΎΡΡΠ°ΡΡ Π½Π΅ΠΊΠ΅ ΠΎΠ΄ Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈΡ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΡ Π·Π°ΡΡΠΈΡΠ½ΠΈΡ Π·ΠΈΠ΄ΠΎΠ²Π°, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π° ΠΠ‘Π ΡΠ»ΠΎΡΠ° 7 ΠΈ ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ ΠΏΡΠ΅ΡΡΠΈ, Π°Π»ΠΈ ΠΎΠ½Π΅ ΠΏΡΡΠΆΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΈΠ²ΠΎ ΠΌΡΠ΅ΠΆΠ½Π΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠΈ ΠΊΠΎΡΠΈ ΡΠ΅ Π΄ΠΎΠ±ΡΠ° ΠΏΠΎΠ»Π°Π·Π½Π° ΡΠ°ΡΠΊΠ°.
ΠΡΠ΅ΠΆΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΡ ΠΏΠΎΠ΄ΠΎΠ²Π°
Π Π°Π΄Π½Π° ΠΎΠΏΡΠ΅ΡΠ΅ΡΠ΅ΡΠ° Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ-Ρ ΡΡ ΡΠ°ΡΠΏΠΎΡΠ΅ΡΠ΅Π½Π° Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠΎΡΠΈ ΡΠ΅ ΡΠ°ΡΡΠΎΡΠ΅ ΠΎΠ΄ ΡΠ΅Π΄Π½ΠΎΠ³ ΠΈΠ»ΠΈ Π²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΊΠΎΡΠΈ ΡΡ ΡΠ°ΡΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈ Π·Π°ΡΠ΅Π΄Π½ΠΎ. ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠ²Π°ΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΠ΄Π΅ΡΡΡΠ΅ ΠΠ Π°Π΄ΡΠ΅ΡΡ ΠΊΠΎΡΠΎΡ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π°. ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΡ ΠΏΡΠ°Π²Π° ΠΏΡΠΈΡΡΡΠΏΠ° Π·Π° Π³ΡΡΠΏΠ΅ ΠΏΠΎΠ΄ΠΎΠ²Π° Π½Π° ΠΈΡΡΠΈ Π½Π°ΡΠΈΠ½ Π½Π° ΠΊΠΎΡΠΈ ΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½Π΅ Π³ΡΡΠΏΠ΅ Ρ ΠΎΠ±Π»Π°ΠΊΡ ΠΊΠΎΡΠΈΡΡΠ΅ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΏΡΠΈΡΡΡΠΏΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠ° Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅.
ΠΠ΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΠΌΡΠ΅ΠΆΠ½ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°
ΠΠ°ΠΎ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΠΈ, ΠΌΡΠ΅ΠΆΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΡΡ Π½Π°Π²Π΅Π΄Π΅Π½Π΅ Ρ ΠΠΠΠ-Ρ. Π£ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ΄, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° 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
(ΠΠ΅Π»Π΅ΡΠΊΠ°. ΡΡΠ°Π½ΡΠ».: ΠΎΠ²Π°Ρ ΡΠ½ΠΈΠΌΠ°ΠΊ Π΅ΠΊΡΠ°Π½Π°, ΠΊΠ°ΠΎ ΠΈ ΡΠ²ΠΈ ΡΠ»Π΅Π΄Π΅ΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈ, Π½ΠΈΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΠΌ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΡ
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π°Π»Π°ΡΠ°, Π²Π΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π°Π»Π°ΡΠ° Π’ΡΡΠΈΠ½ ΠΡΡΠ°, ΠΊΠΎΡΠΈ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ»Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ° Π°ΡΡΠΎΡΠ° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΠ³ ΡΠ»Π°Π½ΠΊΠ° ΠΈ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΠΎΠΌΠΈΡΠ΅ Π½Π° ΠΊΡΠ°ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π°.)
ΠΠ° Π±ΠΈΡΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π»ΠΈ ΡΠΎΠΏΡΡΠ²Π΅Π½Ρ ΠΌΡΠ΅ΠΆΠ½Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ, Π±ΠΈΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π·Π½Π°ΡΠ΅ ΠΎ ΠΠΠΠ-Ρ. ΠΠ²Π°Ρ ΡΠ΅Π·ΠΈΠΊ ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠ²Π»Π°ΡΠ΅ΡΡ (Π½Π°Π²Π΅Π΄Π΅Π½ΠΎΠΌ ΡΠ°Π·ΠΌΠ°ΡΠΈΠΌΠ°, Π° Π½Π΅ ΡΠ°Π±ΡΠ»Π°ΡΠΎΡΠΈΠΌΠ°). Π£Π²ΡΡΠ΅Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΏΡΠΈΠΏΠ°Π΄Π° Π½Π°ΡΠ±Π»ΠΈΠΆΠ΅ΠΌ ΡΠ²ΡΡΠ΅Π½ΠΎΠΌ Π΅Π»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ·Π½Π°Π΄ ΡΠ΅Π³Π°. ΠΠΎΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π»ΠΈΡΡΠ΅ ΠΏΠΎΡΠΈΡΠ΅ ΡΡΡΠΈΡΠΎΠΌ, ΡΠ²ΠΈ ΠΎΡΡΠ°Π»ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΈΠΌΠ°ΡΡ ΠΎΠ±Π»ΠΈΠΊ ΠΊΡΡΡ/Π²ΡΠ΅Π΄Π½ΠΎΡΡ.
ΠΠΎΡΡΠΎ ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π»ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Ρ ΠΠΠΠ-Ρ, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅
kubectl create -f policy.yaml
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° ΠΌΡΠ΅ΠΆΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΡΠΊΡΡΡΡΡΠ΅ ΡΠ΅ΡΠΈΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°:
-
podSelector
: Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π½Π° ΠΊΠΎΡΠ΅ ΡΡΠΈΡΠ΅ ΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° (ΡΠΈΡΠ΅Π²ΠΈ) - ΠΎΠ±Π°Π²Π΅Π·Π½ΠΎ; -
policyTypes
: ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΠΊΠΎΡΠ΅ Π²ΡΡΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΡ ΡΠΊΡΡΡΠ΅Π½Π΅ Ρ ΠΎΠ²ΠΎ: ΡΠ»Π°Π· ΠΈ/ΠΈΠ»ΠΈ ΠΈΠ·Π»Π°Π· - ΠΎΠΏΡΠΈΠΎΠ½ΠΎ, Π°Π»ΠΈ ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ΠΌ Π΄Π° ΡΠ΅ ΡΠΎ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π°Π²Π΅Π΄Π΅ Ρ ΡΠ²ΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ°; -
ingress
: Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΡΠ΅Π½ΠΎ Π΄ΠΎΠ»Π°Π·Π½ΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ Π΄ΠΎ ΡΠΈΡΠ½ΠΈΡ ΠΌΠ°Ρ ΡΠ½Π° - ΠΎΠΏΡΠΈΠΎΠ½ΠΎ; -
egress
: Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΡΠ΅Π½ΠΎ ΠΎΠ΄Π»Π°Π·Π½ΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ ΠΈΠ· ΡΠΈΡΠ½ΠΈΡ ΠΌΠ°Ρ ΡΠ½Π° ΡΠ΅ ΠΎΠΏΡΠΈΠΎΠ½ΠΈ.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅ΡΠ·Π΅Ρ ΡΠ° Π²Π΅Π± Π»ΠΎΠΊΠ°ΡΠΈΡΠ΅ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ (Π·Π°ΠΌΠ΅Π½ΠΈΠΎ ΡΠ°ΠΌ 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
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΠ²Π° ΡΠ΅ΡΠΈΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π΅ ΠΌΠΎΡΠ°ΡΡ Π±ΠΈΡΠΈ ΡΠΊΡΡΡΠ΅Π½Π°. Π’ΠΎ ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΎΠ±Π°Π²Π΅Π·Π½ΠΎ podSelector
, Π΄ΡΡΠ³ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΏΠΎ ΠΆΠ΅ΡΠΈ.
ΠΠΊΠΎ ΠΈΠ·ΠΎΡΡΠ°Π²ΠΈΡΠ΅ policyTypes
, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΡΠΌΠ°ΡΠΈΡΠΈ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠΈ Π½Π°ΡΠΈΠ½:
- ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ° ΡΠ΅ Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ ΡΠ»Π°Π·Π½Ρ ΡΡΡΠ°Π½Ρ. ΠΠΊΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΠΎ ΠΈΠ·ΡΠΈΡΠΈΡΠΎ Π½Π΅ Π½Π°Π²ΠΎΠ΄ΠΈ, ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ Π΄Π° ΡΠ΅ ΡΠ°Π² ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ Π·Π°Π±ΡΠ°ΡΠ΅Π½.
- ΠΠΎΠ½Π°ΡΠ°ΡΠ΅ Π½Π° ΠΈΠ·Π»Π°Π·Π½ΠΎΡ ΡΡΡΠ°Π½ΠΈ Π±ΠΈΡΠ΅ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΡΠΈΡΡΡΡΠ²ΠΎΠΌ ΠΈΠ»ΠΈ ΠΎΠ΄ΡΡΡΡΠ²ΠΎΠΌ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅Π³ ΠΈΠ·Π»Π°Π·Π½ΠΎΠ³ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΈΠ·Π±Π΅Π³Π»ΠΈ Π³ΡΠ΅ΡΠΊΠ΅, ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ΠΌ ΡΠ²Π΅ΠΊ ΠΈΠ·ΡΠΈΡΠΈΡΠ΅ policyTypes
.
ΠΡΠ΅ΠΌΠ° Π½Π°Π²Π΅Π΄Π΅Π½ΠΎΡ Π»ΠΎΠ³ΠΈΡΠΈ, Π°ΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ingress
ΠΈ / ΠΈΠ»ΠΈ egress
ΠΈΠ·ΠΎΡΡΠ°Π²ΡΠ΅Π½ΠΎ, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΠ΅ ΡΡΠΊΡΠ°ΡΠΈΡΠΈ ΡΠ°Π² ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ (ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ βΠΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΊΠ»Π°ΡΠ°ΡΠ°β Ρ Π½Π°ΡΡΠ°Π²ΠΊΡ).
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΠ΅ ΠΠΎΠ·Π²ΠΎΠ»ΠΈ
ΠΠΊΠΎ Π½ΠΈΡΠ΅Π΄Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½ΠΈΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π°, ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π° ΡΠ°Π² ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ. Π‘Π²Π΅ ΠΌΠ°Ρ ΡΠ½Π΅ ΠΌΠΎΠ³Ρ ΡΠ»ΠΎΠ±ΠΎΠ΄Π½ΠΎ Π΄Π° ΡΠ°Π·ΠΌΠ΅ΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΌΠ΅ΡΡ ΡΠΎΠ±ΠΎΠΌ. ΠΠ²ΠΎ ΠΌΠΎΠΆΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΊΠΎΠ½ΡΡΠ°ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΈΠ· Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½Π΅ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅, Π°Π»ΠΈ Π·Π°ΠΏΠ°ΠΌΡΠΈΡΠ΅ Π΄Π° ΡΡ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΏΡΠ²ΠΎΠ±ΠΈΡΠ½ΠΎ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ Π΄Π° ΠΎΠΌΠΎΠ³ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΎΠΏΠ΅ΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΡΠ΅ΠΆΠ½Π΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅ ΡΡ Π΄ΠΎΠ΄Π°ΡΠ΅ ΠΊΠ°ΡΠ½ΠΈΡΠ΅.
ΠΠ°ΠΌΠ΅ΡΠΏΠ°ΡΠ΅Ρ
ΠΡΠΎΡΡΠΎΡΠΈ ΠΈΠΌΠ΅Π½Π° ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° ΡΠ°ΡΠ°Π΄ΡΡ Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΡ. ΠΠ½ΠΈ ΡΡ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ΠΈ Π΄Π° ΠΈΠ·ΠΎΠ»ΡΡΡ Π»ΠΎΠ³ΠΈΡΠΊΠ° ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΡΠ΅Π΄Π½ΠΎ ΠΎΠ΄ Π΄ΡΡΠ³ΠΎΠ³, Π΄ΠΎΠΊ ΡΠ΅ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈΠ·ΠΌΠ΅ΡΡ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ Π΄ΠΎΠ·Π²ΠΎΡΠ΅Π½Π°.
ΠΠ°ΠΎ ΠΈ Π²Π΅ΡΠΈΠ½Π° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΌΡΠ΅ΠΆΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΠΆΠΈΠ²Π΅ Ρ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠΌ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ. Π£ Π±Π»ΠΎΠΊΡ metadata
ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠΈ ΠΊΠΎΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΏΡΠΈΠΏΠ°Π΄Π°:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: my-namespace # <<<
spec:
...
ΠΠΊΠΎ ΠΏΡΠΎΡΡΠΎΡ ΠΈΠΌΠ΅Π½Π° Π½ΠΈΡΠ΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ Ρ ΠΌΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ°, ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΏΡΠΎΡΡΠΎΡ ΠΈΠΌΠ΅Π½Π° Π½Π°Π²Π΅Π΄Π΅Π½ Ρ ΠΊΡΠ±Π΅ΡΡΠ» (ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ namespace=default
):
kubectl apply -n my-namespace -f namespace.yaml
ΠΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ΠΌ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π°Π²Π΅Π΄ΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎΡ ΠΈΠΌΠ΅Π½Π°, ΠΎΡΠΈΠΌ Π°ΠΊΠΎ Π½Π΅ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ ΠΊΠΎΡΠ° ΡΠΈΡΠ° Π²ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΡ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΎΠ΄ΡΠ΅Π΄Π½ΠΎΠΌ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ podSelector
Ρ ΠΏΠΎΠ»ΠΈΡΠΈΡΠΈ ΡΠ΅ ΠΈΠ·Π°Π±ΡΠ°ΡΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈΠ· ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΊΠΎΠΌΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΏΡΠΈΠΏΠ°Π΄Π° (Π·Π°Π±ΡΠ°ΡΠ΅Π½ ΡΠ΅ ΠΏΡΠΈΡΡΡΠΏ ΠΏΠΎΠ΄ΠΎΠ²ΠΈΠΌΠ° ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ°).
Π‘Π»ΠΈΡΠ½ΠΎ, ΠΏΠΎΠ΄Π‘Π΅Π»Π΅ΡΡΠΎΡΡ Ρ ΡΠ»Π°Π·Π½ΠΈΠΌ ΠΈ ΠΈΠ·Π»Π°Π·Π½ΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠ²ΠΈΠΌΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΡΠ° ΡΠ°ΠΌΠΎ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈΠ· ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎΠ³ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ°, ΠΎΡΠΈΠΌ Π°ΠΊΠΎ ΠΈΡ
, Π½Π°ΡΠ°Π²Π½ΠΎ, Π½Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΠ΅ΡΠ΅ ΡΠ° namespaceSelector
(ΠΎ ΡΠΎΠΌΠ΅ ΡΠ΅ Π±ΠΈΡΠΈ ΡΠ΅ΡΠΈ Ρ ΠΎΠ΄Π΅ΡΠΊΡ βΠ€ΠΈΠ»ΡΡΠΈΡΠ°Ρ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΡΠΎΡΠΈΠΌΠ° ΠΈ ΠΏΠΎΠ΄ΠΎΠ²ΠΈΠΌΠ°β).
ΠΡΠ°Π²ΠΈΠ»Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅
ΠΠ°Π·ΠΈΠ²ΠΈ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ° ΡΡ ΡΠ΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈ Ρ ΠΎΠΊΠ²ΠΈΡΡ ΠΈΡΡΠΎΠ³ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ°. ΠΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈ Π΄Π²Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΡΠ° ΠΈΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ Ρ ΠΈΡΡΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ, Π°Π»ΠΈ ΠΌΠΎΠ³Ρ ΠΏΠΎΡΡΠΎΡΠ°ΡΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΡΠ° ΠΈΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΡΠΈΠΌΠ°. ΠΠ²ΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ ΠΊΠ°Π΄Π° ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΡΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Π½Π° Π²ΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎΡΠ°.
ΠΠΎΡΠ΅Π±Π½ΠΎ ΠΌΠΈ ΡΠ΅ ΡΠ²ΠΈΡΠ° ΡΠ΅Π΄Π½Π° ΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΠ°. Π‘Π°ΡΡΠΎΡΠΈ ΡΠ΅ ΠΎΠ΄ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°ΡΠ° ΠΈΠΌΠ΅Π½Π° ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠ° ΡΠΈΡΠ½ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ²ΠΈΠΌΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.postgres # <<<
namespace: default
spec:
podSelector:
matchLabels:
app: postgres
ingress:
- from:
- podSelector:
matchLabels:
app: admin
policyTypes:
- Ingress
ΠΡΠΈΠΊΠ΅ΡΠ΅
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠΌΠ°, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡ ΠΏΠΎΠ΄ΠΎΠ²ΠΈ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ ΠΈΠΌΠ΅Π½Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠΈ ΠΏΡΠΈΠ»Π°Π³ΠΎΡΠ΅Π½Π΅ ΠΎΠ·Π½Π°ΠΊΠ΅. ΠΠ·Π½Π°ΠΊΠ΅ (Π΅ΡΠΈΠΊΠ΅ΡΠ΅ - ΠΎΠ·Π½Π°ΠΊΠ΅) ΡΡ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ ΠΎΠ·Π½Π°ΠΊΠ°ΠΌΠ° Ρ ΠΎΠ±Π»Π°ΠΊΡ. ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠ΅ Π·Π° ΠΈΠ·Π±ΠΎΡ ΠΏΠΎΠ΄ΡΠ½Π° ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡΡΡ:
podSelector:
matchLabels:
role: db
β¦ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΡ ΠΏΡΠΎΡΡΠΎΡΠ°Π½Π° ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡΡΡ. ΠΠ²Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΠΈΡΠ° ΡΠ²Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΡΠΎΡΠΈΠΌΠ° ΡΠ° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΈΠΌ ΠΎΠ·Π½Π°ΠΊΠ°ΠΌΠ°:
namespaceSelector:
matchLabels:
project: myproject
ΠΠ΅Π΄Π½ΠΎ ΡΠΏΠΎΠ·ΠΎΡΠ΅ΡΠ΅: ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΡΠΏΠΎΡΡΠ΅Π±Π΅ namespaceSelector
ΡΠ²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΡΠΎΡΠΈ ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡΠ΅ ΠΈΠ·Π°Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ°Π΄ΡΠΆΠ΅ ΠΈΡΠΏΡΠ°Π²Π½Ρ ΠΎΠ·Π½Π°ΠΊΡ. ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΠ³ΡΠ°ΡΠ΅Π½ΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ ΠΈΠΌΠ΅Π½Π° ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡ default
ΠΈ kube-system
, ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ Π½Π΅ ΡΠ°Π΄ΡΠΆΠ΅ ΠΎΠ·Π½Π°ΠΊΠ΅.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΈ ΠΎΠ·Π½Π°ΠΊΡ Ρ ΠΏΡΠΎΡΡΠΎΡ ΠΎΠ²Π°ΠΊΠΎ:
kubectl label namespace default namespace=default
ΠΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ, ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ Ρ ΠΎΠ΄Π΅ΡΠΊΡ metadata
ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΎΠ΄Π½ΠΎΡΠΈ Π½Π° ΡΡΠ²Π°ΡΠ½ΠΎ ΠΈΠΌΠ΅ ΠΏΡΠΎΡΡΠΎΡΠ°, Π° Π½Π΅ Π½Π° ΠΎΠ·Π½Π°ΠΊΡ:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default # <<<
spec:
...
ΠΠ·Π²ΠΎΡ ΠΈ ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΡΠ΅
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π°ΡΡΠΈΡΠ½ΠΎΠ³ Π·ΠΈΠ΄Π° ΡΠ΅ ΡΠ°ΡΡΠΎΡΠΈ ΠΎΠ΄ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ° ΠΈΠ·Π²ΠΎΡΠΈΠΌΠ° ΠΈ ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΡΠΈΠΌΠ°. ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΡ Π·Π° ΡΠΈΡ β ΡΠΊΡΠΏ ΠΏΠΎΠ΄ΠΎΠ²Π° Π½Π° ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡΡΡ β Π° Π·Π°ΡΠΈΠΌ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΡΠ»Π°Π·Π½ΠΈ ΠΈ/ΠΈΠ»ΠΈ ΠΈΠ·Π»Π°Π·Π½ΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ. Π£ Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΡΠ΅ Π±ΠΈΡΠΈ ΡΠ²ΠΈ ΠΏΠΎΠ΄ΠΎΠ²ΠΈ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ 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
ΠΠΎΠ΄ΠΎΠ΄Π΅ΡΠ°ΠΊ ingress
Ρ ΠΎΠ²ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΡΠΈ, ΠΎΡΠ²Π°ΡΠ° Π΄ΠΎΠ»Π°Π·Π½ΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ ΠΊΠ° ΡΠΈΡΠ½ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ²ΠΈΠΌΠ°. ΠΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΠΈΠΌΠ°, ΡΠ»Π°Π· ΡΠ΅ ΠΈΠ·Π²ΠΎΡ, Π° ΡΠΈΡ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΡΠ΅. ΠΡΡΠΎ ΡΠ°ΠΊΠΎ, ΠΈΠ·Π»Π°Π· ΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΡΠ΅, Π° ΡΠΈΡ ΡΠ΅ ΡΠ΅Π³ΠΎΠ² ΠΈΠ·Π²ΠΎΡ.
ΠΠ²ΠΎ ΡΠ΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Π΄Π²Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π°ΡΡΠΈΡΠ½ΠΎΠ³ Π·ΠΈΠ΄Π°: Π£Π»Π°Π· β Π¦ΠΈΡ; Π¦ΠΈΡ β ΠΠ·Π»Π°Π·Π°ΠΊ.
ΠΠ·Π»Π°Π· ΠΈ ΠΠΠ‘ (Π²Π°ΠΆΠ½ΠΎ!)
ΠΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°ΡΠ΅ΠΌ ΠΎΠ΄Π»Π°Π·Π½ΠΎΠ³ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°ΡΠ°, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ ΠΏΠΎΡΠ΅Π±Π½Ρ ΠΏΠ°ΠΆΡΡ Π½Π° ΠΠΠ‘ - ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΊΠΎΡΠΈΡΡΠΈ ΠΎΠ²Ρ ΡΡΠ»ΡΠ³Ρ Π·Π° ΠΌΠ°ΠΏΠΈΡΠ°ΡΠ΅ ΡΡΠ»ΡΠ³Π° Π½Π° ΠΠ Π°Π΄ΡΠ΅ΡΠ΅. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄Π΅ΡΠ° ΡΠΌΠ΅ΡΠ½ΠΈΡΠ° Π½Π΅ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ ΡΠ΅Ρ Π½ΠΈΡΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ balance
ΠΏΡΠΈΡΡΡΠΏ ΠΠΠ‘-Ρ:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.balance
namespace: default
spec:
podSelector:
matchLabels:
app: balance
egress:
- to:
- podSelector:
matchLabels:
app: postgres
policyTypes:
- Egress
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΠΈ ΠΎΡΠ²Π°ΡΠ°ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠ° ΠΠΠ‘ ΡΠ΅ΡΠ²ΠΈΡΡ:
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
ΠΠΎΡΠ»Π΅Π΄ΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ to
ΡΠ΅ ΠΏΡΠ°Π·Π°Π½, ΠΏΠ° ΡΡΠΎΠ³Π° ΠΈΠ½Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π±ΠΈΡΠ° ΡΠ²ΠΈ ΠΏΠΎΠ΄ΠΎΠ²ΠΈ Ρ ΡΠ²ΠΈΠΌ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΡΠΎΡΠΈΠΌΠ°, Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π°ΡΡΡΠΈ balance
ΡΠ°ΡΠΈΡΠ΅ ΠΠΠ‘ ΡΠΏΠΈΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΎΡ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΡΠ»ΡΠ·ΠΈ (ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ°Π΄ΠΈ Ρ ΠΏΡΠΎΡΡΠΎΡΡ kube-system
).
ΠΠ²Π°Ρ ΠΏΡΠΈΡΡΡΠΏ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ΅, ΠΊΠ°ΠΊΠΎ Π³ΠΎΠ΄ ΠΏΡΠ΅ΡΠ΅ΡΠ°Π½ΠΎ ΠΏΠΎΠΏΡΡΡΡΠΈΠ² ΠΈ Π½Π΅ΡΠΈΠ³ΡΡΠ°Π½, ΡΠ΅Ρ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΡΠ΅ ΠΠΠ‘ ΡΠΏΠΈΡΠΈ ΡΡΠΌΠ΅ΡΠ΅ Π²Π°Π½ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
ΠΠΎΠΆΠ΅ΡΠ΅ Π³Π° ΠΏΠΎΠ±ΠΎΡΡΠ°ΡΠΈ Ρ ΡΡΠΈ ΡΠ·Π°ΡΡΠΎΠΏΠ½Π° ΠΊΠΎΡΠ°ΠΊΠ°.
1. ΠΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ ΡΠ°ΠΌΠΎ ΠΠΠ‘ ΡΠΏΠΈΡΠ΅ ΡΠ½ΡΡΠ°Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ΠΌ namespaceSelector
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.balance
namespace: default
spec:
podSelector:
matchLabels:
app: balance
egress:
- to:
- podSelector:
matchLabels:
app: postgres
- to:
- namespaceSelector: {} # <<<
ports:
- protocol: UDP
port: 53
policyTypes:
- Egress
2. ΠΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ ΠΠΠ‘ ΡΠΏΠΈΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠ½ΡΡΠ°Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ° kube-system
.
ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΡ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ kube-system
: kubectl label namespace kube-system namespace=kube-system
- ΠΈ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΠΎ Ρ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ namespaceSelector
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default.balance
namespace: default
spec:
podSelector:
matchLabels:
app: balance
egress:
- to:
- podSelector:
matchLabels:
app: postgres
- to:
- namespaceSelector: # <<<
matchLabels: # <<<
namespace: kube-system # <<<
ports:
- protocol: UDP
port: 53
policyTypes:
- Egress
3. ΠΠ°ΡΠ°Π½ΠΎΠΈΡΠ½ΠΈ ΡΡΠ΄ΠΈ ΠΌΠΎΠ³Ρ ΠΈΡΠΈ ΡΠΎΡ Π΄Π°ΡΠ΅ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠΈ ΠΠΠ‘ ΡΠΏΠΈΡΠ΅ Π½Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Ρ ΠΠΠ‘ ΡΡΠ»ΡΠ³Ρ kube-system
. ΠΠ΄Π΅ΡΠ°ΠΊ βΠ€ΠΈΠ»ΡΡΠΈΡΠ°Ρ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΡΠΎΡΠΈΠΌΠ° Π ΠΏΠΎΠ΄ΠΎΠ²ΠΈΠΌΠ°β ΡΠ΅ Π²Π°ΠΌ ΡΠ΅ΡΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠΎ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅.
ΠΡΡΠ³Π° ΠΎΠΏΡΠΈΡΠ° ΡΠ΅ Π΄Π° ΡΠ΅ ΠΠΠ‘ ΡΠ΅ΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎΡ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ°. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, Π½Π΅ΡΠ΅ ΡΡΠ΅Π±Π°ΡΠΈ Π΄Π° ΡΠ΅ ΠΎΡΠ²Π°ΡΠ° Π·Π° ΡΠ²Π°ΠΊΡ ΡΡΠ»ΡΠ³Ρ:
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
Prazan podSelector
Π±ΠΈΡΠ° ΡΠ²Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ.
ΠΡΠ²ΠΎ ΠΏΠΎΠ΄ΡΠ΄Π°ΡΠ°ΡΠ΅ ΠΈ ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ ΠΏΡΠ°Π²ΠΈΠ»Π°
Π£ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΎΠ½Π°Π»Π½ΠΈΠΌ Π·Π°ΡΡΠΈΡΠ½ΠΈΠΌ Π·ΠΈΠ΄ΠΎΠ²ΠΈΠΌΠ°, Π°ΠΊΡΠΈΡΠ° (ΠΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΈΠ»ΠΈ ΠΠ΄Π±ΠΈΡ) Π½Π° ΠΏΠ°ΠΊΠ΅ΡΡ ΡΠ΅ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π° ΠΏΡΠ²ΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ ΠΊΠΎΡΠ΅ ΠΎΠ½ Π·Π°Π΄ΠΎΠ²ΠΎΡΠ°Π²Π°. Π£ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΡ ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½ΠΈΡΠ΅ Π±ΠΈΡΠ°Π½.
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, ΠΊΠ°Π΄Π° Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½Π° Π½ΠΈΡΠ΅Π΄Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°, ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈΠ·ΠΌΠ΅ΡΡ ΠΏΠΎΠ΄ΠΎΠ²Π° ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΡΠ΅Π½Π° ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Ρ ΡΠ»ΠΎΠ±ΠΎΠ΄Π½ΠΎ Π΄Π° ΡΠ°Π·ΠΌΠ΅ΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅. ΠΠ΅Π΄Π½ΠΎΠΌ ΠΊΠ°Π΄Π° ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΡΠΎΡΠΌΡΠ»ΠΈΡΠ΅ΡΠ΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅, ΡΠ²Π°ΠΊΠ° Π³ΡΡΠΏΠ° Π½Π° ΠΊΠΎΡΡ ΡΡΠΈΡΠ΅ Π±Π°Ρ ΡΠ΅Π΄Π½Π° ΠΎΠ΄ ΡΠΈΡ ΠΏΠΎΡΡΠ°ΡΠ΅ ΠΈΠ·ΠΎΠ»ΠΎΠ²Π°Π½Π° Ρ ΡΠΊΠ»Π°Π΄Ρ ΡΠ° Π΄ΠΈΡΡΡΠ½ΡΠΈΡΠΎΠΌ (Π»ΠΎΠ³ΠΈΡΠΊΠΎ ΠΠΠ) ΡΠ²ΠΈΡ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ° ΠΊΠΎΡΠ΅ ΡΡ Π³Π° ΠΎΠ΄Π°Π±ΡΠ°Π»Π΅. ΠΠΎΠ΄ΠΎΠ²ΠΈ Π½Π° ΠΊΠΎΡΠ΅ Π½Π΅ ΡΡΠΈΡΠ΅ Π½ΠΈΡΠ΅Π΄Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΎΡΡΠ°ΡΡ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ.
ΠΠ²ΠΎ ΠΏΠΎΠ½Π°ΡΠ°ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠΈ ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΊΠ»Π°ΡΠ°ΡΠ°.
ΠΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΊΠΈΠ΄Π°ΡΠ° (βΠΠ΄Π±ΠΈΡβ)
Π‘ΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π·Π°ΡΡΠΈΡΠ½ΠΎΠ³ Π·ΠΈΠ΄Π° ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΎΠ΄Π±ΠΈΡΠ°ΡΡ ΡΠ²Π°ΠΊΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ ΠΊΠΎΡΠΈ Π½ΠΈΡΠ΅ ΠΈΠ·ΡΠΈΡΠΈΡΠΎ Π΄ΠΎΠ·Π²ΠΎΡΠ΅Π½.
Π£ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΡ Π½Π΅ΠΌΠ° Π°ΠΊΡΠΈΡΠ΅ ΠΎΠ΄Π±ΠΈΡΠ°ΡΠ°, ΠΌΠ΅ΡΡΡΠΈΠΌ, ΡΠ»ΠΈΡΠ°Π½ Π΅ΡΠ΅ΠΊΠ°Ρ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΡΠΈΡΠΈ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎΠΌ (ΠΏΠ΅ΡΠΌΠΈΡΠΈΠ²Π½ΠΎΠΌ) ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΌ ΠΈΠ·Π±ΠΎΡΠΎΠΌ ΠΏΡΠ°Π·Π½Π΅ Π³ΡΡΠΏΠ΅ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ²Π° (ΡΠ»Π°Π·):
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
namespace: default
spec:
podSelector: {}
policyTypes:
- Ingress
ΠΠ²Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π±ΠΈΡΠ° ΡΠ²Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈ ΠΎΡΡΠ°Π²ΡΠ° ΡΠ»Π°Π· Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈΠΌ, ΠΎΠ΄Π±ΠΈΡΠ°ΡΡΡΠΈ ΡΠ°Π² Π΄ΠΎΠ»Π°Π·Π½ΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ.
ΠΠ° ΡΠ»ΠΈΡΠ°Π½ Π½Π°ΡΠΈΠ½ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠΈ ΡΠ°Π² ΠΎΠ΄Π»Π°Π·Π½ΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ ΠΈΠ· ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ°:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-egress
namespace: default
spec:
podSelector: {}
policyTypes:
- Egress
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ ΠΏΠ°ΠΆΡΡ Π½Π° ΡΠΎ ΡΠ²Π΅ Π΄ΠΎΠ΄Π°ΡΠ½Π΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π°ΡΡ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ ΠΊΠ° ΠΏΠΎΠ΄ΠΎΠ²ΠΈΠΌΠ° Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ΅Π΄Π½ΠΎΡΡ Π½Π°Π΄ ΠΎΠ²ΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ (ΡΠ»ΠΈΡΠ½ΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄ΠΎΠ·Π²ΠΎΠ»Π΅ ΠΏΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π°Π±ΡΠ°Π½Π΅ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΈ Π·Π°ΡΡΠΈΡΠ½ΠΎΠ³ Π·ΠΈΠ΄Π°).
ΠΠΎΠ·Π²ΠΎΠ»ΠΈ ΡΠ²Π΅ (ΠΠΈΠ»ΠΎ ΠΊΠΎΡΠΈ-Π±ΠΈΠ»ΠΎ-Π±ΠΈΠ»ΠΎ-Π΄ΠΎΠΏΡΡΡΠΈ)
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π»ΠΈ ΡΠΌΠ΅ΡΠ½ΠΈΡΡ ΠΠΎΠ·Π²ΠΎΠ»ΠΈ ΡΠ²Π΅, ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° Π΄ΠΎΠΏΡΠ½ΠΈΡΠ΅ Π³ΠΎΡΡΡ ΡΠΌΠ΅ΡΠ½ΠΈΡΡ Π·Π°Π±ΡΠ°Π½Π΅ ΡΠ° ΠΏΡΠ°Π·Π½ΠΈΠΌ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ingress
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all
namespace: default
spec:
podSelector: {}
ingress: # <<<
- {} # <<<
policyTypes:
- Ingress
ΠΠΌΠΎΠ³ΡΡΠ°Π²Π° ΠΏΡΠΈΡΡΡΠΏ ΠΈΠ· ΡΠ²Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Ρ ΡΠ²ΠΈΠΌ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΡΠΎΡΠΈΠΌΠ° (ΠΈ ΡΠ²Π΅ ΠΠ Π°Π΄ΡΠ΅ΡΠ΅) Π½Π° Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈ ΠΏΠΎΠ΄ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ default
. ΠΠ²ΠΎ ΠΏΠΎΠ½Π°ΡΠ°ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½ΠΎ, ΡΠ°ΠΊΠΎ Π΄Π° Π³Π° ΠΎΠ±ΠΈΡΠ½ΠΎ Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π°ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠΈ. ΠΠ΅ΡΡΡΠΈΠΌ, ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ ΡΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ΄Π° ΠΌΠΎΡΠ°ΡΠΈ Π΄Π° ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ ΠΎΠ½Π΅ΠΌΠΎΠ³ΡΡΠΈΡΠ΅ Π½Π΅ΠΊΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅ Π΄Π° Π±ΠΈΡΡΠ΅ Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΡΠ·ΠΈΡΠΈ Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΏΡΠΈΡΡΡΠΏ ΡΠ°ΠΌΠΎ Π·Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ ΡΠΊΡΠΏ ΠΌΠ°Ρ
ΡΠ½Π° (app:balance
) Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ default
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all-to-balance
namespace: default
spec:
podSelector:
matchLabels:
app: balance
ingress:
- {}
policyTypes:
- Ingress
Π‘Π»Π΅Π΄Π΅ΡΠ΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π°ΡΡ ΡΠ°Π² ΡΠ»Π°Π·Π½ΠΈ ΠΈ ΠΈΠ·Π»Π°Π·Π½ΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΏΡΠΈΡΡΡΠΏ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΎΡ ΠΠ Π°Π΄ΡΠ΅ΡΠΈ Π²Π°Π½ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all
spec:
podSelector: {}
ingress:
- {}
egress:
- {}
policyTypes:
- Ingress
- Egress
ΠΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°ΡΠ΅ Π²ΠΈΡΠ΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ°
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈΡΠΊΠΎΠ³ ΠΠΠ Π½Π° ΡΡΠΈ Π½ΠΈΠ²ΠΎΠ°; ΠΠΎΠ·Π²ΠΎΠ»Π΅ ΡΠ²Π°ΠΊΠ΅ Π³ΡΡΠΏΠ΅ ΡΡ ΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½Π΅ Ρ ΡΠΊΠ»Π°Π΄Ρ ΡΠ° ΡΠ°Π·Π΄Π²Π°ΡΠ°ΡΠ΅ΠΌ ΡΠ²ΠΈΡ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ° ΠΊΠΎΡΠ΅ Π½Π° ΡΠ΅Π³Π° ΡΡΠΈΡΡ:
1. ΠΠ° ΠΏΠΎΡΠΈΠΌΠ° from
ΠΈ to
ΠΠΎΠ³Ρ ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠΈ ΡΡΠΈ ΡΠΈΠΏΠ° Π΅Π»Π΅ΠΌΠ΅Π½Π°ΡΠ° (ΡΠ²ΠΈ ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΠΠ):
-
namespaceSelector
β Π±ΠΈΡΠ° ΡΠ΅ΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ; -
podSelector
β Π±ΠΈΡΠ° ΠΌΠ°Ρ ΡΠ½Π΅; -
ipBlock
β Π±ΠΈΡΠ° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΡ.
Π¨ΡΠ°Π²ΠΈΡΠ΅, Π±ΡΠΎΡ Π΅Π»Π΅ΠΌΠ΅Π½Π°ΡΠ° (ΡΠ°ΠΊ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈΡ
) Ρ ΠΏΠΎΠ΄ΠΎΠ΄Π΅ΡΡΠΈΠΌΠ° from
/to
Π½ΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ. Π‘Π²ΠΈ ΠΎΠ½ΠΈ ΡΠ΅ Π±ΠΈΡΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°Π½ΠΈ Π»ΠΎΠ³ΠΈΡΠΊΠΈΠΌ ΠΠΠ.
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
2. Π£Π½ΡΡΠ°Ρ ΠΎΠ΄Π΅ΡΠΊΠ° ΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΡΠΈ ingress
ΠΌΠΎΠΆΠ΅ ΠΈΠΌΠ°ΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Π°ΡΠ° from
(ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°Π½ΠΎ Π»ΠΎΠ³ΠΈΡΠΊΠΈΠΌ ΠΠΠ). Π‘Π»ΠΈΡΠ½ΠΎ, ΠΎΠ΄Π΅ΡΠ°ΠΊ 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
3. Π Π°Π·Π»ΠΈΡΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΡ ΡΠ° Π»ΠΎΠ³ΠΈΡΠΊΠΈΠΌ ΠΠΠ
ΠΠ»ΠΈ ΠΊΠ°Π΄Π° ΠΈΡ
ΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΠ΅ΡΠ΅, ΠΏΠΎΡΡΠΎΡΠΈ ΡΠ΅Π΄Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ΅ policyTypes
(Ingress
ΠΈΠ»ΠΈ Egress
). ΠΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΠΊΠΎΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΡ ΡΠ»Π°Π· (ΠΈΠ»ΠΈ ΠΈΠ·Π»Π°Π·) ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΠΈ ΡΠ΅Π΄Π½Π° Π΄ΡΡΠ³Ρ.
ΠΠ΄Π½ΠΎΡ ΠΈΠ·ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΡ ΠΏΡΠΎΡΡΠΎΡΠ°
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, Π΄Π΅ΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΈΠ·ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΡ ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΡΠ΅Π½ΠΎ. ΠΠ²ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΠΌ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ Π·Π°Π±ΡΠ°Π½Π΅ ΠΊΠΎΡΠ° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠΈ ΠΎΠ΄Π»Π°Π·Π½ΠΈ ΠΈ/ΠΈΠ»ΠΈ Π΄ΠΎΠ»Π°Π·Π½ΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ Ρ ΠΏΡΠΎΡΡΠΎΡ ΠΈΠΌΠ΅Π½Π° (ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ βΠΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΊΠ»Π°ΡΠ°ΡΠ°β ΠΈΠ·Π½Π°Π΄).
ΠΠ΅Π΄Π½ΠΎΠΌ ΠΊΠ°Π΄Π° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΡΡΡΠΏ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ (ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ βΠΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΊΠ»Π°ΡΠ°ΡΠ°β ΠΈΠ·Π½Π°Π΄), ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠΈ ΠΈΠ·ΡΠ·Π΅ΡΠΊΠ΅ ΠΎΠ΄ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΠΎΠ΄Π±ΠΈΡΠ°ΡΠ° ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠΈ Π²Π΅Π·Π΅ ΠΈΠ· ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠ³ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ namespaceSelector
:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: database.postgres
namespace: database
spec:
podSelector:
matchLabels:
app: postgres
ingress:
- from:
- namespaceSelector: # <<<
matchLabels:
namespace: default
policyTypes:
- Ingress
ΠΠ°ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ, ΡΠ²ΠΈ ΠΏΠΎΠ΄ΠΎΠ²ΠΈ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ default
ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠΈΡΡΡΠΏ ΠΏΠΎΠ΄Ρ postgres
Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ database
. ΠΠ»ΠΈ ΡΡΠ° Π°ΠΊΠΎ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΡΡΡΠΏ postgres
ΡΠ°ΠΌΠΎ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ default
?
Π€ΠΈΠ»ΡΡΠΈΡΠ°ΡΡΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΡΠΎΡΠΈΠΌΠ° ΠΈ ΠΏΠΎΠ΄ΠΎΠ²ΠΈΠΌΠ°
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π²Π΅ΡΠ·ΠΈΡΠ° 1.11 ΠΈ Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° namespaceSelector
ΠΈ podSelector
ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π»ΠΎΠ³ΠΈΡΠΊΠΎ Π. Π’ΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ:
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
ΠΠ°ΡΡΠΎ ΡΠ΅ ΠΎΠ²ΠΎ ΡΡΠΌΠ°ΡΠΈ ΠΊΠ°ΠΎ Π ΡΠΌΠ΅ΡΡΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅Π½ΠΎΠ³ ΠΠΠ?
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° podSelector
Π½Π΅ ΠΏΠΎΡΠΈΡΠ΅ ΡΡΡΠΈΡΠΎΠΌ. Π£ ΠΠΠΠ-Ρ ΡΠΎ Π·Π½Π°ΡΠΈ Π΄Π° podSelector
ΠΈ ΡΡΠΎΡΠ΅ΡΠΈ ΠΏΡΠ΅Π΄ ΡΠΈΠΌ namespaceSelector
ΠΎΠ΄Π½ΠΎΡΠ΅ ΡΠ΅ Π½Π° ΠΈΡΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π»ΠΈΡΡΠ΅. Π‘ΡΠΎΠ³Π° ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°Π½ΠΈ ΡΠ° Π»ΠΎΠ³ΠΈΡΠΊΠΈΠΌ Π.
ΠΠΎΠ΄Π°Π²Π°ΡΠ΅ ΡΡΡΠΈΡΠ΅ ΠΏΡΠ΅ podSelector
ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΎΠΌ Π½ΠΎΠ²ΠΎΠ³ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π»ΠΈΡΡΠ΅, ΠΊΠΎΡΠΈ ΡΠ΅ Π±ΠΈΡΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°Π½ ΡΠ° ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΈΠΌ namespaceSelector
ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π»ΠΎΠ³ΠΈΡΠΊΠΎ ΠΠΠ.
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΈΠ·Π°Π±ΡΠ°Π»ΠΈ ΠΌΠ°Ρ
ΡΠ½Π΅ ΡΠ° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌ Ρ ΡΠ²ΠΈΠΌ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΡΠΎΡΠΈΠΌΠ°, ΡΠ½Π΅ΡΠΈΡΠ΅ ΠΏΡΠ°Π·Π½ΠΎ 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
ΠΠΈΡΠ΅ Π΅ΡΠΈΠΊΠ΅ΡΠ° ΡΠ΅ ΡΠ΄ΡΡΠΆΡΡΠ΅ ΡΠ° Π
ΠΡΠ°Π²ΠΈΠ»Π° Π·Π° Π·Π°ΡΡΠΈΡΠ½ΠΈ Π·ΠΈΠ΄ ΡΠ° Π²ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΠ°ΡΠ° (Ρ
ΠΎΡΡΠΎΠ²ΠΈ, ΠΌΡΠ΅ΠΆΠ΅, Π³ΡΡΠΏΠ΅) ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈΡΠΊΠΎΠ³ ΠΠΠ. Π‘Π»Π΅Π΄Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠΈ Π°ΠΊΠΎ ΡΠ΅ ΠΈΠ·Π²ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΠΎΠ΄ΡΠ΄Π°ΡΠ° Host_1
ΠΠΠ Host_2
:
| Source | Destination | Service | Action |
| ----------------------------------------|
| Host_1 | Subnet_A | HTTPS | Allow |
| Host_2 | | | |
| ----------------------------------------|
ΠΠ°ΠΏΡΠΎΡΠΈΠ², Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠ΅ Ρ podSelector
ΠΈΠ»ΠΈ namespaceSelector
ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°Π½ΠΈ ΡΠ° Π»ΠΎΠ³ΠΈΡΠΊΠΈΠΌ Π. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅ ΠΈΠ·Π°Π±ΡΠ°ΡΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΊΠΎΡΠΈ ΠΈΠΌΠ°ΡΡ ΠΎΠ±Π΅ ΠΎΠ·Π½Π°ΠΊΠ΅, role=db
Π version=v2
:
podSelector:
matchLabels:
role: db
version: v2
ΠΡΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡΡΠ΅ Π½Π° ΡΠ²Π΅ ΡΠΈΠΏΠΎΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°: Π±ΠΈΡΠ°ΡΠ΅ ΡΠΈΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅, ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ΅ ΠΏΠΎΠ΄ ΠΈ Π±ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΠΌΠ΅Π½Π°.
ΠΠΎΠ΄ΠΌΡΠ΅ΠΆΠ΅ ΠΈ ΠΠ Π°Π΄ΡΠ΅ΡΠ΅ (ΠΠΠΠ»ΠΎΡΠΊΠΎΠ²ΠΈ)
ΠΠ°ΡΡΠΈΡΠ½ΠΈ Π·ΠΈΠ΄ΠΎΠ²ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΠΠΠ-ΠΎΠ²Π΅, ΠΠ Π°Π΄ΡΠ΅ΡΠ΅ ΠΈ ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ΅ Π΄Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡ ΠΌΡΠ΅ΠΆΡ.
Π£ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ-Ρ, ΠΠ Π°Π΄ΡΠ΅ΡΠ΅ ΡΠ΅ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄ΠΎΠ΄Π΅ΡΡΡΡ ΠΏΠΎΠ΄ΠΎΠ²ΠΈΠΌΠ° ΠΈ ΠΌΠΎΠ³Ρ ΡΠ΅ ΡΠ΅ΡΡΠΎ ΠΌΠ΅ΡΠ°ΡΠΈ, ΡΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Π·Π° ΠΈΠ·Π±ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π° ΠΈ ΠΈΠΌΠ΅Π½ΡΠΊΠΈΡ ΠΏΡΠΎΡΡΠΎΡΠ° Ρ ΠΌΡΠ΅ΠΆΠ½ΠΈΠΌ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ°ΠΌΠ°.
ΠΠΎΠ΄ΠΌΡΠ΅ΠΆΠ΅ (ipBlocks
) ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ ΠΏΡΠΈ ΡΠΏΡΠ°Π²ΡΠ°ΡΡ Π΄ΠΎΠ»Π°Π·Π½ΠΈΠΌ (ΡΠ»Π°Π·Π½ΠΈΠΌ) ΠΈΠ»ΠΈ ΠΎΠ΄Π»Π°Π·Π½ΠΈΠΌ (ΠΈΠ·Π»Π°Π·Π½ΠΈΠΌ) ΡΠΏΠΎΡΠ½ΠΈΠΌ (ΡΠ΅Π²Π΅Ρ-ΡΡΠ³) Π²Π΅Π·Π°ΠΌΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ²Π° ΡΠΌΠ΅ΡΠ½ΠΈΡΠ° ΡΠ΅ ΠΎΡΠ²Π°ΡΠ° Π·Π° ΡΠ²Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈΠ· ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ° default
ΠΏΡΠΈΡΡΡΠΏ ΠΠΎΠΎΠ³Π»Π΅ ΠΠΠ‘ ΡΠ΅ΡΠ²ΠΈΡΡ:
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
ΠΡΠ°Π·Π°Π½ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ ΠΏΠΎΠ΄ Ρ ΠΎΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠΈ βΠΈΠ·Π°Π±Π΅ΡΠΈΡΠ΅ ΡΠ²Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ.
ΠΠ²Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π° ΠΏΡΠΈΡΡΡΠΏ ΡΠ°ΠΌΠΎ 8.8.8.8; ΠΏΡΠΈΡΡΡΠΏ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΎΡ Π΄ΡΡΠ³ΠΎΡ ΠΠ Π°Π΄ΡΠ΅ΡΠΈ ΡΠ΅ Π·Π°Π±ΡΠ°ΡΠ΅Π½. ΠΠ°ΠΊΠ»Π΅, Ρ ΡΡΡΡΠΈΠ½ΠΈ, Π±Π»ΠΎΠΊΠΈΡΠ°Π»ΠΈ ΡΡΠ΅ ΠΏΡΠΈΡΡΡΠΏ ΠΈΠ½ΡΠ΅ΡΠ½ΠΎΡ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΠΠ‘ ΡΡΠ»ΡΠ·ΠΈ. ΠΠΊΠΎ ΠΈ Π΄Π°ΡΠ΅ ΠΆΠ΅Π»ΠΈΡΠ΅ Π΄Π° Π³Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅, ΡΠΎ ΠΈΠ·ΡΠΈΡΠΈΡΠΎ Π½Π°Π·Π½Π°ΡΠΈΡΠ΅.
ΠΠ±ΠΈΡΠ½ΠΎ ipBlocks
ΠΈ podSelectors
ΡΠ΅ ΠΌΠ΅ΡΡΡΠΎΠ±Π½ΠΎ ΠΈΡΠΊΡΡΡΡΡΡ, ΠΏΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ ΠΠ Π°Π΄ΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ²Π° Π½Π΅ ΠΊΠΎΡΠΈΡΡΠ΅ Ρ ipBlocks
. Π£ΠΊΠ°Π·ΠΈΠ²Π°ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ ΠΠ ΠΏΠΎΠ΄, Π·Π°ΠΏΡΠ°Π²ΠΎ ΡΠ΅ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠΈ Π²Π΅Π·Π΅ ΡΠ°/ΡΠ° ΠΏΠΎΠ΄ΠΎΠ²Π° ΡΠ° ΠΎΠ²ΠΈΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠ°. Π£ ΠΏΡΠ°ΠΊΡΠΈ, Π½Π΅ΡΠ΅ΡΠ΅ Π·Π½Π°ΡΠΈ ΠΊΠΎΡΡ ΠΠ Π°Π΄ΡΠ΅ΡΡ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅, Π·Π±ΠΎΠ³ ΡΠ΅Π³Π° ΠΈΡ
Π½Π΅ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π·Π° ΠΎΠ΄Π°Π±ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ²Π°.
ΠΠ°ΠΎ ΠΊΠΎΠ½ΡΡΠ°-ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄Π΅ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΠΊΡΡΡΡΡΠ΅ ΡΠ²Π΅ ΠΠ Π°Π΄ΡΠ΅ΡΠ΅ ΠΈ ΡΡΠΎΠ³Π° Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π° ΠΏΡΠΈΡΡΡΠΏ ΡΠ²ΠΈΠΌ ΠΎΡΡΠ°Π»ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ²ΠΈΠΌΠ°:
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
ΠΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ²ΠΎΡΠΈΡΠΈ ΠΏΡΠΈΡΡΡΠΏ ΡΠ°ΠΌΠΎ ΡΠΏΠΎΡΠ½ΠΈΠΌ ΠΠ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠ°, ΠΈΡΠΊΡΡΡΡΡΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ ΠΠ Π°Π΄ΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ²Π°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° Π²Π°ΡΠ΅Π³ ΠΌΠΎΠ΄ΡΠ»Π° 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
ΠΠΎΡΡΠΎΠ²ΠΈ ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ
ΠΠΎΠ΄ΠΎΠ²ΠΈ ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅Π΄Π°Π½ ΠΏΠΎΡΡ. Π’ΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π²Π΅ΡΡΠΈ Π±ΡΠΎΡΠ΅Π²Π΅ ΠΏΠΎΡΡΠΎΠ²Π° Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΠΌΠ° ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΠΈ ΡΠ²Π΅ ΠΊΠ°ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ. ΠΠ΅ΡΡΡΠΈΠΌ, ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ Π±ΡΠ΄Ρ ΡΡΠΎ ΡΠ΅ΡΡΡΠΈΠΊΡΠΈΠ²Π½ΠΈΡΠ΅, ΡΠ°ΠΊΠΎ Π΄Π° Ρ Π½Π΅ΠΊΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ° ΠΈ Π΄Π°ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ ΠΏΠΎΡΡΠΎΠ²Π΅:
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
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΡΠ΅Π»Π΅ΠΊΡΠΎΡ 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
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° ΠΏΠΎΡΡΠ°:
- ΠΠΊΠΎ ΠΏΠΎΡΠΏΡΠ½ΠΎ ΠΈΠ·ΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡ ΠΏΠΎΡΡΠ° (
ports
), ΠΎΠ²ΠΎ Π·Π½Π°ΡΠΈ ΡΠ²Π΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅ ΠΈ ΡΠ²Π΅ ΠΏΠΎΡΡΠΎΠ²Π΅; - ΠΠΊΠΎ ΠΈΠ·ΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° (
protocol
), ΡΠΎ Π·Π½Π°ΡΠΈ Π’Π¦Π; - ΠΠΊΠΎ ΠΈΠ·ΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡ ΠΏΠΎΡΡΠ° (
port
), ΠΎΠ²ΠΎ Π·Π½Π°ΡΠΈ ΡΠ²Π΅ ΠΏΠΎΡΡΠΎΠ²Π΅.
ΠΠ°ΡΠ±ΠΎΡΠ° ΠΏΡΠ°ΠΊΡΠ°: ΠΠ΅ ΠΎΡΠ»Π°ΡΠ°ΡΡΠ΅ ΡΠ΅ Π½Π° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ, Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π°Π²Π΅Π΄ΠΈΡΠ΅ ΡΡΠ° Π²Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ.
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΠΌΠΎΡΠ°ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΏΠΎΠ΄ ΠΏΠΎΡΡΠΎΠ²Π΅, Π° Π½Π΅ ΡΠ΅ΡΠ²ΠΈΡΠ½Π΅ ΠΏΠΎΡΡΠΎΠ²Π΅ (Π²ΠΈΡΠ΅ ΠΎ ΡΠΎΠΌΠ΅ Ρ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΡ).
ΠΠ° Π»ΠΈ ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π·Π° ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΈΠ»ΠΈ ΡΡΠ»ΡΠ³Π΅?
Π’ΠΈΠΏΠΈΡΠ½ΠΎ, ΠΏΠΎΠ΄ΠΎΠ²ΠΈ Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ-Ρ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΡΠ΅Π΄Π½ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠ° ΠΏΡΠ΅ΠΊΠΎ ΡΡΠ»ΡΠ³Π΅ - Π²ΠΈΡΡΡΠ΅Π»Π½ΠΎΠ³ Π±Π°Π»Π°Π½ΡΠ΅ΡΠ° ΠΎΠΏΡΠ΅ΡΠ΅ΡΠ΅ΡΠ° ΠΊΠΎΡΠΈ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ°Π²Π° ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΊΠΎΡΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡ ΡΡΠ»ΡΠ³Ρ. ΠΠΎΠΆΠ΄Π° ΠΌΠΈΡΠ»ΠΈΡΠ΅ Π΄Π° ΠΌΡΠ΅ΠΆΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡ ΠΏΡΠΈΡΡΡΠΏ ΡΡΠ»ΡΠ³Π°ΠΌΠ°, Π°Π»ΠΈ ΡΠΎ Π½ΠΈΡΠ΅ ΡΠ»ΡΡΠ°Ρ. ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠ°Π΄Π΅ Π½Π° ΠΏΠΎΡΡΠΎΠ²ΠΈΠΌΠ° Π·Π° ΠΏΠΎΠ΄, Π° Π½Π΅ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈΠΌ ΠΏΠΎΡΡΠΎΠ²ΠΈΠΌΠ°.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΡΡΠ»ΡΠ³Π° ΡΠ»ΡΡΠ° ΠΏΠΎΡΡ 80, Π°Π»ΠΈ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ°Π²Π° ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ Π½Π° ΠΏΠΎΡΡ 8080 ΡΠ²ΠΎΡΠΈΡ ΠΏΠΎΠ΄ΠΎΠ²Π°, ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ ΡΠ°ΡΠ½ΠΎ 8080 Ρ ΠΌΡΠ΅ΠΆΠ½ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΡΠΈ.
Π’Π°ΠΊΠ°Π² ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ ΡΡΠ΅Π±Π° ΡΠΌΠ°ΡΡΠ°ΡΠΈ Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΈΠΌ: Π°ΠΊΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ½ΡΡΡΠ°ΡΡΠ° ΡΡΡΡΠΊΡΡΡΠ° ΡΡΠ»ΡΠ³Π΅ (ΡΠΈΡΠΈ ΠΏΠΎΡΡΠΎΠ²ΠΈ ΡΠ»ΡΡΠ°ΡΡ), ΠΌΡΠ΅ΠΆΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΡΠ΅ ΠΌΠΎΡΠ°ΡΠΈ Π΄Π° ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°ΡΡ.
ΠΠΎΠ²ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΠ½ΡΠΊΠΈ ΠΏΡΠΈΡΡΡΠΏ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π‘Π΅ΡΠ²ΠΈΡΠ΅ ΠΠ΅ΡΡ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ ΠΎ ΠΡΡΠΈΠΎ ΠΈΡΠΏΠΎΠ΄ β ΠΏΡΠΈΠ±Π». ΠΏΡΠ΅Π²ΠΎΠ΄) ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π²Π°ΠΌ Π΄Π° ΡΠ΅ Π½ΠΎΡΠΈΡΠ΅ ΡΠ° ΠΎΠ²ΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΌ.
ΠΠ° Π»ΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²Π°ΡΠΈ ΠΈ ΠΠ½Π³ΡΠ΅ΡΡ ΠΈ ΠΠ³ΡΠ΅ΡΡ?
ΠΡΠ°ΡΠ°ΠΊ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ ΡΠ΅ Π΄Π°, Π΄Π° Π±ΠΈ ΠΏΠΎΠ΄ Π ΠΌΠΎΠ³Π°ΠΎ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ° ΡΠ° ΠΌΠΎΠ΄ΡΠ»ΠΎΠΌ Π, ΠΌΠΎΡΠ° ΠΌΡ Π±ΠΈΡΠΈ Π΄ΠΎΠ·Π²ΠΎΡΠ΅Π½ΠΎ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ° ΠΎΠ΄Π»Π°Π·Π½Ρ Π²Π΅Π·Ρ (Π·Π° ΠΎΠ²ΠΎ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ ΠΈΠ·Π»Π°Π·Π½Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ), Π° ΠΏΠΎΠ΄ Π ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ Ρ ΡΡΠ°ΡΡ Π΄Π° ΠΏΡΠΈΡ Π²Π°ΡΠΈ Π΄ΠΎΠ»Π°Π·Π½Ρ Π²Π΅Π·Ρ ( Π·Π° ΠΎΠ²ΠΎ Π²Π°ΠΌ ΡΠ΅, ΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΎΠΌΠ΅, ΠΏΠΎΡΡΠ΅Π±Π½Π° ΡΠ»Π°Π·Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°).ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°).
ΠΠ΅ΡΡΡΠΈΠΌ, Ρ ΠΏΡΠ°ΠΊΡΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ»ΠΎΠ½ΠΈΡΠΈ Π½Π° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Π΄Π° Π±ΠΈΡΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π²Π΅Π·Π΅ Ρ ΡΠ΅Π΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ ΠΎΠ±Π° ΡΠΌΠ΅ΡΠ°.
ΠΠΊΠΎ Π½Π΅ΠΊΠΈ ΠΏΠΎΠ΄-ΠΈΠ·Π²ΠΎΡ ΡΠ΅ Π±ΠΈΡΠΈ ΠΈΠ·Π°Π±ΡΠ°Π½ ΠΎΠ΄ ΡΡΡΠ°Π½Π΅ ΡΠ΅Π΄Π½ΠΎΠ³ ΠΈΠ»ΠΈ Π²ΠΈΡΠ΅ ΡΠΈΡ ΠΈΠ·Π»Π°Π·Π°ΠΊ-ΠΏΠΎΠ»ΠΈΡΠΈΡΠ°ΡΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ° ΠΊΠΎΡΠ° ΡΡ ΡΠΎΡ Π½Π°ΠΌΠ΅ΡΠ½ΡΡΠ° Π±ΠΈΡΠ΅ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π° ΡΠΈΡ ΠΎΠ²ΠΎΠΌ Π΄ΠΈΡΡΡΠ½ΠΊΡΠΈΡΠΎΠΌ. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΌΠΎΡΠ°ΡΠ΅ΡΠ΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ Π²Π΅Π·Ρ ΡΠ° ΠΏΠΎΠ΄ΠΎΠΌ -Π°Π΄ΡΠ΅ΡΠ°ΡΡ. ΠΠΊΠΎ ΠΏΠΎΠ΄ Π½ΠΈΡΠ΅ ΠΈΠ·Π°Π±ΡΠ°Π½Π° Π½ΠΈΡΠ΅Π΄Π½Π° ΡΠΌΠ΅ΡΠ½ΠΈΡΠ°, ΡΠ΅Π½ ΠΎΠ΄Π»Π°Π·Π½ΠΈ (ΠΈΠ·Π»Π°Π·Π½ΠΈ) ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ Π΄ΠΎΠ·Π²ΠΎΡΠ΅Π½.
Π‘Π»ΠΈΡΠ½ΠΎ, ΡΡΠ΄Π±ΠΈΠ½Π° ΠΌΠ°Ρ ΡΠ½Π° ΡΠ΅Π°Π΄ΡΠ΅ΡΠ°, ΠΈΠ·Π°Π±ΡΠ°Π½ ΠΎΠ΄ ΡΡΡΠ°Π½Π΅ ΡΠ΅Π΄Π½ΠΎΠ³ ΠΈΠ»ΠΈ Π²ΠΈΡΠ΅ ΡΠΈΡ ΡΠ»Π°Π·Π°ΠΊ-ΠΏΠΎΠ»ΠΈΡΠΈΡΠ°ΡΠ΅, ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠ΅ ΡΠΈΡ ΠΎΠ²Π° Π΄ΠΈΡΡΡΠ½ΠΊΡΠΈΡΠ°. Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΌΠΎΡΠ°ΡΠ΅ ΠΌΡ ΠΈΠ·ΡΠΈΡΠΈΡΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠΈ Π΄Π° ΠΏΡΠΈΠΌΠ° ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ ΠΈΠ· ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠ³ ΠΌΠΎΠ΄ΡΠ»Π°. ΠΠΊΠΎ ΠΏΠΎΠ΄ Π½ΠΈΡΠ΅ ΠΈΠ·Π°Π±ΡΠ°Π½Π° Π½ΠΈΡΠ΅Π΄Π½Π° ΡΠΌΠ΅ΡΠ½ΠΈΡΠ°, ΡΠ°Π² ΡΠ»Π°Π·Π½ΠΈ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ Π·Π° ΡΠ΅Π³Π° ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ Π΄ΠΎΠ·Π²ΠΎΡΠ΅Π½.
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ Π΄ΠΎΠ»Π΅ ΡΠ° ΡΡΠ°ΡΡΡΠΎΠΌ ΠΈΠ»ΠΈ Π±Π΅Π· Π΄ΡΠΆΠ°Π²ΡΠ°Π½ΡΡΠ²Π°.
ΠΠ½Π΅Π²Π½ΠΈΡΠΈ
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Ρ Π΄Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΡ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ. ΠΠ²ΠΎ ΠΎΡΠ΅ΠΆΠ°Π²Π° ΡΡΠ²ΡΡΠΈΠ²Π°ΡΠ΅ Π΄Π° Π»ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΡΠ΅Π½ΠΎ ΠΈ Ρ Π²Π΅Π»ΠΈΠΊΠΎΡ ΠΌΠ΅ΡΠΈ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΡΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½Ρ Π°Π½Π°Π»ΠΈΠ·Ρ.
ΠΠΎΠ½ΡΡΠΎΠ»Π° ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°ΡΠ° ΠΊΠ° Π΅ΠΊΡΡΠ΅ΡΠ½ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ°
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π²Π°ΠΌ Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π°ΡΡ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ ΠΏΠΎΡΠΏΡΠ½ΠΎ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠΎΠ²Π°Π½ΠΎ ΠΈΠΌΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° (ΠΠΠ‘) Ρ ΠΈΠ·Π»Π°Π·Π½ΠΈΠΌ ΠΎΠ΄Π΅ΡΡΠΈΠΌΠ°. ΠΠ²Π° ΡΠΈΡΠ΅Π½ΠΈΡΠ° Π΄ΠΎΠ²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π½Π°ΡΠ°ΡΠ½ΠΈΡ Π½Π΅ΠΏΡΠΈΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΊΠ°Π΄Π° ΠΏΠΎΠΊΡΡΠ°Π²Π°ΡΠ΅ Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°Ρ Π½Π° ΡΠΏΠΎΡΠ½Π΅ Π΄Π΅ΡΡΠΈΠ½Π°ΡΠΈΡΠ΅ ΠΊΠΎΡΠ΅ Π½Π΅ΠΌΠ°ΡΡ ΡΠΈΠΊΡΠ½Ρ ΠΠ Π°Π΄ΡΠ΅ΡΡ (ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Π°Π²Ρ.ΡΠΎΠΌ).
ΠΡΠΎΠ²Π΅ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅
ΠΠ°ΡΡΠΈΡΠ½ΠΈ Π·ΠΈΠ΄ΠΎΠ²ΠΈ ΡΠ΅ Π²Π°Ρ ΡΠΏΠΎΠ·ΠΎΡΠΈΡΠΈ ΠΈΠ»ΠΈ ΡΠ°ΠΊ ΠΎΠ΄Π±ΠΈΡΠΈ Π΄Π° ΠΏΡΠΈΡ Π²Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ³ΡΠ΅ΡΠ½Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ. ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠ°ΠΊΠΎΡΠ΅ Π²ΡΡΠΈ Π½Π΅ΠΊΡ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡ. ΠΠ°Π΄Π° ΠΏΠΎΡΡΠ°Π²ΡΠ° ΠΌΡΠ΅ΠΆΠ½Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ ΠΏΡΠ΅ΠΊΠΎ ΠΊΡΠ±Π΅ΡΡΠ»-Π°, ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ ΠΈΠ·ΡΠ°Π²ΠΈΡΠΈ Π΄Π° ΡΠ΅ Π½Π΅ΡΠ°ΡΠ½Π° ΠΈ ΠΎΠ΄Π±ΠΈΡΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡ Π²Π°ΡΠΈ. Π£ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ»ΡΡΠ°ΡΠ΅Π²ΠΈΠΌΠ°, ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠ΅ ΠΏΡΠ΅ΡΠ·Π΅ΡΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ ΠΈ ΠΏΠΎΠΏΡΠ½ΠΈΡΠΈ ΡΠ΅ Π΄Π΅ΡΠ°ΡΠΈΠΌΠ° ΠΊΠΎΡΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡ. ΠΠΎΠ³Ρ ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΏΠΎΠΌΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
kubernetes get networkpolicy <policy-name> -o yaml
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡΠ΅ Π½ΠΈΡΠ΅ Π½Π΅ΠΏΠΎΠ³ΡΠ΅ΡΠΈΠ² ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΠΈ Π½Π΅ΠΊΠ΅ Π²ΡΡΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°.
ΠΠ·Π²ΡΡΠ΅ΡΠ΅
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π½Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΌΡΠ΅ΠΆΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±ΠΈ, Π²Π΅Ρ ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΠΠ ΠΊΠ°ΠΏΠΈΡΠ° ΠΊΠΎΡΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡΠ° ΡΠ΅ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΡΠΈ ΡΠ΅ Π·ΠΎΠ²Π΅ Π¦ΠΎΠ½ΡΠ°ΠΈΠ½Π΅Ρ ΠΠ΅ΡΠ²ΠΎΡΠΊΠΈΠ½Π³ ΠΠ½ΡΠ΅ΡΡΠ°ΡΠ΅ (Π¦ΠΠ). ΠΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ° Π½Π° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΡ Π±Π΅Π· Π΄ΠΎΠ΄Π΅ΡΠΈΠ²Π°ΡΠ° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅Π³ Π¦ΠΠ ΡΠ΅ ΠΈΡΡΠΎ ΠΊΠ°ΠΎ ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΡ Π·Π° ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ Π·Π°ΡΡΠΈΡΠ½ΠΈΠΌ Π·ΠΈΠ΄ΠΎΠΌ Π±Π΅Π· ΡΠΈΡ
ΠΎΠ²ΠΎΠ³ Π·Π°ΡΠΈΠΌ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ° Π½Π° Π·Π°ΡΡΠΈΡΠ½Π΅ Π·ΠΈΠ΄ΠΎΠ²Π΅. ΠΠ° Π²Π°ΠΌΠ° ΡΠ΅ Π΄Π° ΠΎΡΠΈΠ³ΡΡΠ°ΡΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠΈΡΡΠΎΡΠ°Π½ Π¦ΠΠ ΠΈΠ»ΠΈ, Ρ ΡΠ»ΡΡΠ°ΡΡ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, Ρ
ΠΎΡΡΠΎΠ²Π°Π½ Ρ ΠΎΠ±Π»Π°ΠΊΡ (ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π»ΠΈΡΡΡ ΠΏΡΠΎΠ²Π°ΡΠ΄Π΅ΡΠ°
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° Π²Π°Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π½Π΅ΡΠ΅ ΡΠΏΠΎΠ·ΠΎΡΠΈΡΠΈ Π°ΠΊΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠ½Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Π±Π΅Π· ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅Π³ ΠΏΠΎΠΌΠΎΡΠ½ΠΎΠ³ Π¦ΠΠ-Π°.
Π‘Π° Π΄ΡΠΆΠ°Π²ΡΠ°Π½ΡΡΠ²ΠΎΠΌ ΠΈΠ»ΠΈ Π±Π΅Π· Π΄ΡΠΆΠ°Π²ΡΠ°Π½ΡΡΠ²Π°?
Π‘Π²ΠΈ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π¦ΠΠ-ΠΎΠ²ΠΈ Π½Π° ΠΊΠΎΡΠ΅ ΡΠ°ΠΌ Π½Π°ΠΈΡΠ°ΠΎ ΡΡ ΡΠ° ΡΡΠ°ΡΠ΅ΠΌ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π¦Π°Π»ΠΈΡΠΎ ΠΊΠΎΡΠΈΡΡΠΈ ΠΠΈΠ½ΡΠΊ ΡΠΎΠ½Π½ΡΡΠ°ΡΠΊ). ΠΠ²ΠΎ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π° ΠΏΡΠΈΠΌΠ° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ΅ Π½Π° Π’Π¦Π Π²Π΅Π·Ρ ΠΊΠΎΡΡ ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΠΎ Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π±Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ°. ΠΠ΅ΡΡΡΠΈΠΌ, Π½ΠΈΡΠ°ΠΌ ΡΠΏΠΎΠ·Π½Π°Ρ ΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΎΠΌ ΠΊΠΎΡΠΈ Π±ΠΈ Π³Π°ΡΠ°Π½ΡΠΎΠ²Π°ΠΎ Π·Π°Π΄ΡΠΆΠ°Π²Π°ΡΠ΅ ΡΡΠ°ΡΠ°.
Π£ΠΏΡΠ°Π²ΡΠ°ΡΠ΅ Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈΠΌ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΈΠΌ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΠΌΠ°
ΠΠ²ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π½Π°ΡΠΈΠ½Π° Π΄Π° ΠΏΠΎΠ±ΠΎΡΡΠ°ΡΠ΅ ΡΠΏΡΠΎΠ²ΠΎΡΠ΅ΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ-Ρ:
- ΠΡΡ
ΠΈΡΠ΅ΠΊΡΠΎΠ½ΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·Π°Ρ Π‘Π΅ΡΠ²ΠΈΡΠ΅ ΠΠ΅ΡΡ
ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Ρ ΠΏΡΠΈΠΊΠΎΠ»ΠΈΡΠΎΠΌ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ Π΄Π΅ΡΠ°ΡΠ½Ρ ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°ΡΠ° Π½Π° Π½ΠΈΠ²ΠΎΡ ΡΡΠ»ΡΠ³Π΅. ΠΠ°ΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΡΠ·Π΅ΡΠΈ
ΠΡΡΠΈΠΎ . - ΠΠ΅ΠΊΠΈ ΠΎΠ΄ Π΄ΠΎΠ±Π°Π²ΡΠ°ΡΠ° Π¦ΠΠ-Π° ΠΏΡΠΎΡΠΈΡΠΈΠ»ΠΈ ΡΡ ΡΠ²ΠΎΡΠ΅ Π°Π»Π°ΡΠ΅ Π΄Π° ΠΏΡΠ΅Π²Π°Π·ΠΈΡΡ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅.
-
Π’ΡΡΠΈΠ½ ΠΡΡΠ° ΠΡΡΠΆΠ° Π²ΠΈΠ΄ΡΠΈΠ²ΠΎΡΡ ΠΈ Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°.
Π’ΡΡΠΈΠ½ ΠΡΡΠ° ΠΏΠ°ΠΊΠ΅Ρ ΡΠΏΡΠ°Π²ΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½ΠΈΠΌ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ°ΠΌΠ° (ΠΈ ΠΈΠ·Π²ΠΎΡ ΡΠ΅ ΡΠ½ΠΈΠΌΠ°ΠΊΠ° Π΅ΠΊΡΠ°Π½Π° ΠΈΠ·Π½Π°Π΄).
Π΄ΠΎΠ΄Π°ΡΠ½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅
-
ΠΡΠΈΠΌΠ΅ΡΠΈ ΠΌΡΠ΅ΠΆΠ½ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈΠΎ ΠΡ ΠΌΠ΅Ρ ΠΠ»ΠΏ ΠΠ°Π»ΠΊΠ°Π½ ΠΈΠ· ΠΠΠ ; -
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ΡΠ° Π·Π²Π°Π½ΠΈΡΠ½Π΅ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π²Π΅Π± ΡΡΡΠ°Π½ΠΈΡΠ΅ ; -
ΠΠΎΠ΄ΠΈΡ Π·Π° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½ΠΈ ΠΌΠΎΠ΄Π΅Π» ; -
Π‘ΠΊΡΠΈΠΏΡΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΡ ΠΌΡΠ΅ΠΆΠ½ΠΈΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° .
ΠΠ°ΠΊΡΡΡΠ°ΠΊ
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΡΠ΅ΠΆΠ½Π΅ ΡΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π½ΡΠ΄Π΅ Π΄ΠΎΠ±Π°Ρ ΡΠΊΡΠΏ Π°Π»Π°ΡΠ° Π·Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π°Π»ΠΈ Π½ΠΈΡΡ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½Π΅ ΠΈ ΠΈΠΌΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΏΡΠΈΠ»Π½ΠΎΡΡΠΈ. ΠΠ±ΠΎΠ³ ΠΎΠ²Π΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΎΡΡΠΈ, Π²Π΅ΡΡΡΠ΅ΠΌ Π΄Π° ΡΡ ΠΌΠ½ΠΎΠ³Π΅ ΠΏΠΎΡΡΠΎΡΠ΅ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΏΠΎΠ³ΡΠ΅ΡΠ½Π΅. ΠΠΎΠ³ΡΡΠ° ΡΠ΅ΡΠ΅ΡΠ° Π·Π° ΠΎΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΊΡΡΡΡΡΡ Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡΡ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π΄ΡΡΠ³ΠΈΡ Π°Π»Π°ΡΠ° Π·Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ.
ΠΠ°Π΄Π°ΠΌ ΡΠ΅ Π΄Π° ΡΠ΅ Π²Π°ΠΌ ΠΎΠ²Π°Ρ Π²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠΌΠΎΡΠΈ Π΄Π° ΡΠ°Π·ΡΠ°ΡΠ½ΠΈΡΠ΅ Π½Π΅ΠΊΠ° ΠΏΠΈΡΠ°ΡΠ° ΠΈ ΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΈΡΠΈ.
ΠΠ‘ ΠΎΠ΄ ΠΏΡΠ΅Π²ΠΎΠ΄ΠΈΠΎΡΠ°
ΠΡΠΎΡΠΈΡΠ°ΡΡΠ΅ ΠΈ Π½Π° Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Ρ:
- βΠΠ°Π·Π°Π΄ Π½Π° ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³Π΅ ΡΠ° ΠΡΡΠΈΠΎ-ΠΎΠΌβ:
Π΄Π΅ΠΎ 1 (ΡΠ²ΠΎΠ΄ Ρ Π³Π»Π°Π²Π½Π΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅) ,Π΄Π΅ΠΎ 2 (ΡΡΡΠΈΡΠ°ΡΠ΅, ΠΊΠΎΠ½ΡΡΠΎΠ»Π° ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°ΡΠ°) ,Π΄Π΅ΠΎ 3 (Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ) ; - βΠΠ»ΡΡΡΡΠΎΠ²Π°Π½ΠΈ Π²ΠΎΠ΄ΠΈΡ Π·Π° ΡΠΌΡΠ΅ΠΆΠ°Π²Π°ΡΠ΅ Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΡβ:
Π΄Π΅Π»ΠΎΠ²ΠΈ 1 ΠΈ 2 (ΠΌΡΠ΅ΠΆΠ½ΠΈ ΠΌΠΎΠ΄Π΅Π», ΠΌΡΠ΅ΠΆΠ΅ ΡΠ° ΠΏΡΠ΅ΠΊΠ»Π°ΠΏΠ°ΡΠ΅ΠΌ) ,Π΄Π΅ΠΎ 3 (ΡΡΠ»ΡΠ³Π΅ ΠΈ ΠΎΠ±ΡΠ°Π΄Π° ΡΠ°ΠΎΠ±ΡΠ°ΡΠ°ΡΠ°) ; - Β«
ΠΠΎΡΠΊΠ΅Ρ ΠΈ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Ρ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΎ ΠΎΡΠ΅ΡΡΠΈΠ²ΠΈΠΌ ΠΎΠΊΡΡΠΆΠ΅ΡΠΈΠΌΠ° "; - Β«
9 Π½Π°ΡΠ±ΠΎΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈ Π·Π° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ "; - Β«
11 Π½Π°ΡΠΈΠ½Π° Π΄Π° (Π½Π΅) ΠΏΠΎΡΡΠ°Π½Π΅ΡΠ΅ ΠΆΡΡΠ²Π° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Ρ Π°ΠΊΠ° '.
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ