ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊ ΡΡΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ ΡΠ°ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π±ΠΈΠ·Π½Π΅Ρ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ. ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΠΏΡΠΈΠ½ΡΡΠΈΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΊ Π²ΡΠ±ΠΎΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, ΠΊΠΎΠΈΡ
Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ ΡΠΆΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ. Π§ΡΠΎΠ±Ρ ΡΠΎΡΡΠ°Π²ΠΈΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΠΌΠ΅ΡΡΠΈΡ
ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ
Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·ΡΡΠ°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠ΅ΠΉ/Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Ρ.ΠΏ., ΠΌΡ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ ΡΡΠΎΡ ΠΎΠ±Π·ΠΎΡ, Π²ΠΊΠ»ΡΡΠΈΠ² Π² Π½Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ (production ready) Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ.
ΠΠ°Π΄Π΅Π΅ΠΌΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ Π² Π²ΡΠ±ΠΎΡΠ΅ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ β ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΡΡΠ°Π½Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΡ ΠΈΠ·ΡΡΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Π² ΡΠ΅ΡΠΈ ΠΈ, ΠΊΠ°ΠΊ Π½ΠΈ ΡΡΡΠ°Π½Π½ΠΎ, Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ β ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ β ΠΎΠ±Π·ΠΎΡΠ°. ΠΡΠ°ΠΊ, Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΆΠ΅ ΡΡΠΎΡ ΠΏΡΠΎΠ±Π΅Π»!
ΠΡΠΈΡΠ΅ΡΠΈΠΈ
Π§ΡΠΎΠ±Ρ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ, Π½ΠΎ ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈ Π±ΡΠ΄ΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ Π²Π΅ΠΊΡΠΎΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΡ Π½Π° Π°Π½Π°Π»ΠΈΠ· Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ»ΡΡΠ°Π΅Π² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Ingress/Kubernetes, ΠΌΡ ΠΏΠΎΡΡΠ°ΡΠ°Π»ΠΈΡΡ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌ β Π±ΡΠ΄ΡΡΠ΅ Π³ΠΎΡΠΎΠ²Ρ, ΡΡΠΎ Π²ΡΡ ΡΠ²ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ ΠΈ ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΈΠ·ΡΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
ΠΠΎ Π½Π°ΡΠ½Ρ Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π»ΠΈ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΌΠΈ, ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ ΠΈ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ:
- Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (service discovery);
- SSL-ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
- ΡΠ°Π±ΠΎΡΠ° Ρ websocket’Π°ΠΌΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ β ΠΎ ΠΏΡΠ½ΠΊΡΠ°Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ:
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡΡΠΈΡ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π² Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ°. ΠΠ°ΡΠ΅ ΠΠ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ HTTP ΠΈΠ»ΠΈ ΠΆΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ². ΠΡΠ»ΠΈ Π²Π°Ρ ΡΠ»ΡΡΠ°ΠΉ β Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±Π΅ΡΠΈΡΠ΅ Π² ΡΠ°ΡΡΠ΅Ρ ΡΡΠΎΡ ΡΠ°ΠΊΡΠΎΡ, Π΄Π°Π±Ρ Π½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ. Π£ Π²ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² Π²Π°ΡΡΠΈΡΡΠ΅ΡΡΡ.
ΠΠ Π² ΠΎΡΠ½ΠΎΠ²Π΅
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ. ΠΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ β ΡΡΠΎ nginx, traefik, haproxy, envoy. Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΠΊ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°ΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π½ΡΠ°Π½ΡΡ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌΒ».
ΠΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ°
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΡΠ°ΡΠΈΠΊΠ° Π² ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ? ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ host ΠΈ path, Π½ΠΎ Π±ΡΠ²Π°ΡΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΡΠ½ (namespace) β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ Π² Kubernetes (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° stage, production ΠΈ Ρ.ΠΏ.). ΠΡΡΡ Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π΄ΠΎ ΡΡΠ°Π²ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ namespace (ΠΈ ΡΠΎΠ³Π΄Π° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠ°ΡΠΈΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π² pod’Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°). Π Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ (ΠΈ ΠΈΡ ΡΠ²Π½ΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ), ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π½Π° Π²Π΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ β Π² Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊ Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ pod ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½.
ΠΡΠΎΠ±Ρ Π΄Π»Ρ upstream’ΠΎΠ²
ΠΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° Π² Π·Π΄ΠΎΡΠΎΠ²ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²? ΠΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ Ρ Π°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΠΈ ΠΏΠ°ΡΡΠΈΠ²Π½ΡΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΌΠΈ ΠΏΠΎΠΏΡΡΠΊΠ°ΠΌΠΈ (retries), circuit breakers (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π½ΠΈΡ
ΡΠΌ., Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²
ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ
Π’ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²: ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
ΠΠ°ΠΊΠΈΠ΅ ΡΡ Π΅ΠΌΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ? Basic, digest, oauth, external-auth β Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΈ ΠΎΠΏΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΡ. ΠΡΠΎ Π²Π°ΠΆΠ½ΡΠΉ ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² (ΠΈ/ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΊΡΡΡΡΡ ), Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Ingress.
Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ°
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠ°ΠΊ ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΡΠ΅ Π²ΡΠΊΠ°ΡΡ (canary), A/B-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π·Π΅ΡΠΊΠ°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° (mirroring/shadowing)? ΠΡΠΎ ΠΏΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ Π±ΠΎΠ»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ° Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ° Π΄Π»Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ Π½Π° Π±ΠΎΡ (ΠΈΠ»ΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠ΅ΡΡΠΌΠΈ), Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ Ρ.ΠΏ.
ΠΠ»Π°ΡΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ°
ΠΡΡΡ Π»ΠΈ ΠΏΠ»Π°ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΈ/ΠΈΠ»ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ?
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (Web UI)
ΠΠΌΠ΅Π΅ΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°? Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄Π»Ρ Β«ΡΠΏΠΎΠ΄ΡΡΡΠ½ΠΎΡΡΠΈΒ» ΠΈ/ΠΈΠ»ΠΈ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΠΎΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²Π½ΠΎΡΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ IngressβΠ°, Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Β«ΡΡΡΡΠΌΠΈΒ» ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Ρ ΠΎΡΡΡ Π½Π°Π»Π΅ΡΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ Ρ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ.
JWT-Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ
ΠΠ°Π»ΠΈΡΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ JSON web-ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³Π°
Π Π°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π² ΡΠΌΡΡΠ»Π΅ Π½Π°Π»ΠΈΡΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ, ΡΠ»Π°Π³ΠΈ ΠΈ Ρ.Π΄.
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π·Π°ΡΠΈΡΡ ΠΎΡ DDOS
ΠΡΠΎΡΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ rate limit ΠΈΠ»ΠΈ ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΎΡΡΠ΅ΠΈΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π΄ΡΠ΅ΡΠΎΠ², Π±Π΅Π»ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ², ΡΡΡΠ°Π½ ΠΈ Ρ.Π΄.
Π’ΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ²
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΡ Ingress’ΠΎΠ² ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ/pod’Π°ΠΌ, Π° Π² ΠΈΠ΄Π΅Π°Π»Π΅ β ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ/pod’Π°ΠΌΠΈ ΡΠΎΠΆΠ΅.
WAF
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Ingress
Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² Π±ΡΠ» ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅
Ingress ΠΎΡ Kubernetes
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
ΠΡΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π΄Π»Ρ Kubernetes, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΎΠ½ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° nginx ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ Lua-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ nginxβΠ° ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ Π½Π°Π΄ Π½ΠΈΠΌ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΌΡΠΌ ΠΏΡΠΎΡΡΡΠΌ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π΄Π½Π΅ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠΌ (Ρ ΠΎΠΏΡΡΠΎΠΌ Π² web).
Ingress ΠΎΡ NGINX Inc
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² nginx. ΠΠΌΠ΅Π΅Ρ ΠΏΠ»Π°ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π°
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠ΅Π·Π°Π½Π°, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ (ΠΈΠ·-Π·Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π²ΡΡ ΡΠ΅Ρ
ΠΆΠ΅ Lua-ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ). ΠΠ»Π°ΡΠ½Π°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΈΡΠΎΠΊΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»: ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, JWT-Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ, Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ health checkβΠΈ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅. ΠΠ°ΠΆΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π΄ NGINX Ingress β ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° TCP/UDP-ΡΡΠ°ΡΠΈΠΊΠ° (ΠΈ Π² community-Π²Π΅ΡΡΠΈΠΈ ΡΠΎΠΆΠ΅!). ΠΠΈΠ½ΡΡ β
Kong Ingress
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
ΠΡΠΎΠ΄ΡΠΊΡ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Kong Inc. Π² Π΄Π²ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ : ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΉ ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ. ΠΡΠ½ΠΎΠ²Π°Π½ Π½Π° nginx, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π½Π° Lua.
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ» ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² API, Ρ.Π΅. ΠΊΠ°ΠΊ API Gateway, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ°Π» ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΌ Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°: ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²), ΠΊΠΎΡΠΎΡΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΡΡΠ°Π²ΠΈΡΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠΈΡΠΎΠΊΠΈΠΉ ΡΠΏΠ΅ΠΊΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠΏΡΠΎΡΠ΅ΠΌ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΆΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ CRD-ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΠ°ΠΆΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° β ΡΠ°Π±ΠΎΡΠ° Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΠ° (Π²ΠΌΠ΅ΡΡΠΎ cross-namespaced) ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΎΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΎΠΉ: ΠΊΠΎΠΌΡ-ΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ (ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ»ΠΎΠ΄ΠΈΡΡ ΡΡΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΠ°), Π° Π΄Π»Ρ ΠΊΠΎΠ³ΠΎ-ΡΠΎ β ΡΠΈΡΠ° (Π±ΠΎΠ»ΡΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ, Ρ.ΠΊ. Π΅ΡΠ»ΠΈ ΡΠ»ΠΎΠΌΠ°Π½ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ, ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΠΎΠ΄Π½ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΡΠΎΠΌ).
Traefik
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: MIT
ΠΡΠΎΠΊΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ΅Π΄Ρ. ΠΡΡΡΠ΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΎΠΊ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ, Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΡΠΎΠ±ΡΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ², REST API, ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΡΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. ΠΡΠΈΡΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² Let’s Encrypt ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ β Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ (HA) Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ KV-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
HAProxy
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
HAProxy Π΄Π°Π²Π½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠΊΡΠΈ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΡΡΠ°ΡΠΈΠΊΠ°. Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kubernetes Ρ Π½ΠΈΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Β«ΠΌΡΠ³ΠΊΠΎΠ΅Β» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ (Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ ΡΡΠ°ΡΠΈΠΊΠ°), service discovery Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ DNS, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ API. ΠΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π°ΠΌΠ΅Π½Ρ CM’Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Sprig. Π ΡΠ΅Π»ΠΎΠΌ ΠΆΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π°ΠΊΡΠ΅Π½Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π΅Π»Π°Π΅ΡΡΡ Π½Π° Π²ΡΡΠΎΠΊΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ, Π΅Π³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π² ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΠΌΡΡ ΡΠ΅ΡΡΡΡΠ°Ρ . ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° β ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅ΠΊΠΎΡΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ.
Voyager
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
ΠΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° HAproxy ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π΅ ΡΠΈΡΠΎΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ². ΠΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π»Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° L7 ΠΈ L4, Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ TCP L4-ΡΡΠ°ΡΠΈΠΊΠ° Π² ΡΠ΅Π»ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Contour
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
Π ΠΎΡΠ½ΠΎΠ²Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π»ΡΠ³ Envoy: ΠΎΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ Π°Π²ΡΠΎΡΠ°ΠΌΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΊΡΠΈ. ΠΠ°ΠΆΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Ingress Ρ ΠΏΠΎΠΌΠΎΡΡΡ CRD-ΡΠ΅ΡΡΡΡΠΎΠ² IngressRoute. ΠΠ»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΉ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ Π² ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΠ°Ρ ΠΈ Π·Π°ΡΠΈΡΠΈΡΡ ΠΈΡ ΠΎΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² Ingress.
Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ (ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π·Π΅ΡΠΊΠ°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π°Π²ΡΠΎΠΏΠΎΠ²ΡΠΎΡΡ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ rate’Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅), Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΏΠΎΡΠΎΠΊΠ° ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ ΡΠ±ΠΎΠ΅Π². ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π»Ρ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ sticky sessions (Ρ
ΠΎΡΡ ΡΠ°Π±ΠΎΡΡ
Istio Ingress
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ service mesh-ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΌ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠΌ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ ΠΈΠ·Π²Π½Π΅, Π½ΠΎ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ ΡΡΠ°ΡΠΈΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. Β«ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌΒ», Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ sidecar-ΠΏΡΠΎΠΊΡΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Envoy. Π ΡΡΡΠ½ΠΎΡΡΠΈ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ±Π°ΠΉΠ½, ΠΊΠΎΡΠΎΡΡΠΉ Β«ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΒ», Π° ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π΅Π³ΠΎ ΠΈΠ΄Π΅Ρ β ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΡΡΡ, ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π² ΡΠΎΠ½ΠΊΠΎΡΡΡΡ
Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ°, Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΡΠ΅ ΡΠ΅Π»ΠΈΠ·Ρ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± Istio ΡΠΈΡΠ°ΠΉΡΠ΅ Π² ΡΠ΅ΡΠΈΠΈ ΡΡΠ°ΡΠ΅ΠΉ Β«
Ambassador
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
ΠΡΡ ΠΎΠ΄Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Envoy. ΠΠΌΠ΅Π΅Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΡΡ Π²Π΅ΡΡΠΈΠΈ. ΠΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Β«ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ΄Π½ΠΎΠ΅ Π΄Π»Ρ KubernetesΒ», ΡΡΠΎ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° (ΡΠ΅ΡΠ½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ ΡΡΡΠ½ΠΎΡΡΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° K8s).
Π‘ΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°
ΠΡΠ°ΠΊ, ΠΊΡΠ»ΡΠΌΠΈΠ½Π°ΡΠΈΡ ΡΡΠ°ΡΡΠΈ β ΡΡΠ° ΠΎΠ³ΡΠΎΠΌΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ°:
ΠΠ½Π° ΠΊΠ»ΠΈΠΊΠ°Π±Π΅Π»ΡΠ½Π° Π΄Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅
ΠΠΎΠ΄Π²Π΅Π΄ΡΠΌ ΠΈΡΠΎΠ³ΠΈ
Π¦Π΅Π»Ρ ΡΡΠ°ΡΡΠΈ β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ (Π²ΠΏΡΠΎΡΠ΅ΠΌ, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΠ΅Π΅!) ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π²ΡΠ±ΠΎΡ ΡΠ΄Π΅Π»Π°ΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ Π±ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈβ¦
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Ingress ΠΎΡ Kubernetes Ρ ΠΎΡΠΎΡ ΡΠ²ΠΎΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ³Π°ΡΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ β Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π΅Π³ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Β«Ρ Π²Π°ΡΠΈΡΡ Π·Π° Π³Π»Π°Π·Π°Β». ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎΠ²Π½Ρ ΡΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ingress Ρ NGINX Plus ΠΈ ΠΏΠ»Π°ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΎΠΉ. Kong ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ³Π°ΡΠ΅ΠΉΡΠΈΠΉ Π½Π°Π±ΠΎΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ), ΠΏΡΠΈΡΡΠΌ Π² ΠΏΠ»Π°ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈΡ Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅. Π£ Π½Π΅Π³ΠΎ ΡΠΈΡΠΎΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ API Gateway, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ CRD-ΡΠ΅ΡΡΡΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Kubernetes.
ΠΡΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΡ ΠΊ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ΅ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΡΠΌΠΎΡΡΠΈΡΠ΅ΡΡ ΠΊ Traefik ΠΈ HAProxy. ΠΡΠΎ Open Source-ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ Π³ΠΎΠ΄Π°ΠΌΠΈ, ΠΎΡΠ΅Π½Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈΠ΅ΡΡ. Contour ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΡΠΆΠ΅ ΠΏΠ°ΡΡ Π»Π΅Ρ ΠΊΠ°ΠΊ Π½Π° ΡΠ²Π΅Ρ, Π½ΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²ΡΡ Π΅ΡΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠΎΠ»ΠΎΠ΄ΠΎ ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΡ Envoy. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ Π½Π°Π»ΠΈΡΠΈΡ/Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ WAF ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎΡ ΠΆΠ΅ Ingress ΠΎΡ Kubernetes ΠΈΠ»ΠΈ HAProxy.
Π ΡΠ°ΠΌΡΠ΅ Π±ΠΎΠ³Π°ΡΡΠ΅ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌ β ΡΡΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΡ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π½Π° Π±Π°Π·Π΅ Envoy, Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Istio. ΠΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Β«ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΒ», ΡΡΠΎ, Π²ΠΏΡΠΎΡΠ΅ΠΌ, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ ΠΏΠΎΡΠΎΠ³ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ/Π·Π°ΠΏΡΡΠΊΡ/Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅ΠΌ Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΌΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΠΈ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ingress ΠΎΡ Kubernetes, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ 80β90% ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ. ΠΠ½ Π²ΠΏΠΎΠ»Π½Π΅ Π½Π°Π΄ΡΠΆΠ΅Π½, Π»Π΅Π³ΠΊΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΡΡΡ, ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ. Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ²/ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ· ΡΠ°ΠΊΠΈΡ ΠΆΠ΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ Traefik ΠΈ HAProxy.
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«ΠΠ°Π·Π°Π΄ ΠΊ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ Π²ΠΌΠ΅ΡΡΠ΅ Ρ IstioΒ»:
ΡΠ°ΡΡΡ 1 (Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ) ,ΡΠ°ΡΡΡ 2 (ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ) ,ΡΠ°ΡΡΡ 3 (Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ) ; - Β«
Kubernetes tips & tricks: ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² NGINX Ingress Β»; - Β«
Kubernetes tips & tricks: Π΄ΠΎΡΡΡΠΏ ΠΊ dev-ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠ°ΠΌ Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com