
ΠΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Kubernetes ΠΊΠ»ΡΡΡΠ΅Ρ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΡΠ°ΠΌΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π±ΠΈΠ·Π½Π΅ΡΡΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΊΡΠΌ ΡΠΎΠ·ΠΈ ΡΠ΅ΡΡΡΡ. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°ΡΠ΅ Ρ ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΊΡΠΌ ΠΈΠ·Π±ΠΎΡΠ° Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ Ingress ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ, ΠΊΠΎΠΈΡΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π° Π±ΡΠΎΠΉ. Π‘ ΡΠ΅Π» Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π±Π΅Π· Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠΈΠΈ/Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Ρ.Π½., Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈΡ
ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄, Π²ΠΊΠ»ΡΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ (production ready) Ingress ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ.
ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΡΠΎΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π½Π° ΠΊΠΎΠ»Π΅Π³ΠΈΡΠ΅ ΠΏΡΠΈ ΠΈΠ·Π±ΠΎΡΠ° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ β ΠΏΠΎΠ½Π΅ ΡΠ΅ ΠΏΠΎΡΠ»ΡΠΆΠΈ ΠΊΠ°ΡΠΎ ΠΎΡΠΏΡΠ°Π²Π½Π° ΡΠΎΡΠΊΠ° Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΡΠΈΡ ΠΌΠ΅ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΈ, ΠΊΠ°ΠΊΡΠ²ΡΠΎ ΡΠ΅ΡΡΠΎ Π΅ ΡΠ»ΡΡΠ°ΡΡ, Π½Π΅ ΠΎΡΠΊΡΠΈΡ ΠΌΠ΅ Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠΎ-ΠΏΡΠ»Π΅Π½, Π° Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ β ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΎ β ΡΠ΅Π·ΡΠΌΠ΅. Π ΡΠ°ΠΊΠ°, Π½Π΅ΠΊΠ° Π·Π°ΠΏΡΠ»Π½ΠΈΠΌ ΡΠΎΠ·ΠΈ Π²Π°ΠΊΡΡΠΌ!
ΠΡΠΈΡΠ΅ΡΠΈΠΈ
ΠΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ ΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ° ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΠΎΠ±Π»Π°ΡΡ, Π½ΠΎ ΠΈ Π΄Π° ΠΈΠΌΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΡΠΏΠΈΡΡΠΊ Ρ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π° Π·Π°Π΄Π°Π²Π°Ρ ΠΏΠΎΡΠΎΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅. ΠΠ΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΠΈΡΠ°ΠΉΠΊΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Ingress/Kubernetes, Π½ΠΈΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°Ρ ΠΌΠ΅ Π΄Π° ΠΈΠ·Π²Π΅Π΄Π΅ΠΌ Π½Π°ΠΉ-ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈΡΠ΅ β Π±ΡΠ΄Π΅ΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ, ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠ° ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈΡΠ΅ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΡΠ°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΎ.
ΠΠΎ Π½Π΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎΠ·Π½Π°ΡΠΈ, ΡΠ΅ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ Π½Π΅ ΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Ρ:
- Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈ (service discovery);
- SSL ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅;
- ΡΠ°Π±ΠΎΡΠ° Ρ websocketβΠ°ΠΌΠΈ.
Π‘Π΅Π³Π° β ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΎΡΠΊΠΈΡΠ΅ Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅:
ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ
ΠΠ΄ΠΈΠ½ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π·Π° ΠΈΠ·Π±ΠΎΡ. ΠΠ°ΡΠ΅ΡΠΎ ΠΠ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ HTTP ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ. ΠΠΊΠΎ Π²Π°ΡΠΈΡΡ ΡΠ»ΡΡΠ°ΠΉ Π΅ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½, Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠΎΠ·ΠΈ ΡΠ°ΠΊΡΠΎΡ, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ Π±ΡΠ΄Π΅ΡΠΈ ΠΏΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°. Π‘ΠΏΠΈΡΡΠΊΡΡ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ Π²Π°ΡΠΈΡΠ° ΠΏΡΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ.
ΠΠ Π² ΠΎΡΠ½ΠΎΠ²Π°ΡΠ°
ΠΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π° ΠΊΠΎΠΈΡΠΎ Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ. ΠΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΡΠ° nginx, traefik, haproxy, envoy. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠΎΠ²Π° Π½Π΅ Π²Π»ΠΈΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π½Π° Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΈ ΠΏΡΠ΅Π΄Π°Π²Π° ΡΡΠ°ΡΠΈΠΊΠ°, Π½ΠΎ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π° ΡΠ΅ Π·Π½Π°ΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈΡΠ΅ Π½ΡΠ°Π½ΡΠΈ ΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ Π½Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π΅ "ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠ°ΠΊΠ°".
ΠΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°
ΠΠ° ΠΊΠ°ΠΊΠ²Π° ΠΎΡΠ½ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠ½ΠΎ Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΊΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΡΠ»ΡΠ³Π°? ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠΎΠ²Π° Π΅ host ΠΈ path, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΠΌΠ΅Π½Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
ΠΠΌΠ΅Π½Π½ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ (namespace) Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Ρ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π² Kubernetes (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° stage, production ΠΈ Π΄Ρ.). ΠΠΌΠ° Ingress ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΎ Π²ΡΠ² Π²ΡΡΠΊΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ (ΠΈ ΡΠΎΠ³Π°Π²Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π½Π°ΡΠΎΡΠ²Π°Ρ ΡΡΠ°ΡΠΈΠΊ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ Π² podβΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°). Π Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ (ΠΈ ΠΈΡ ΡΠ²Π½ΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ), ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π½Π° Π²Π΅ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ β Π² Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊ Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ pod ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½.
ΠΡΠΎΠ±Ρ Π΄Π»Ρ upstreamβΠΎΠ²
ΠΠ°ΠΊ ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΊΡΠΌ Π·Π΄ΡΠ°Π²ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠ»ΡΠ³ΠΈ? ΠΠΌΠ° Π²Π°ΡΠΈΠ°Π½ΡΠΈ Ρ Π°ΠΊΡΠΈΠ²Π½ΠΈ ΠΈ ΠΏΠ°ΡΠΈΠ²Π½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΈ ΠΎΠΏΠΈΡΠΈ (retries), circuit breakers (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π·Π° ΡΡΡ Π²ΠΈΠΆΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ), ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ (custom health checks) ΠΈ Ρ.Π½. ΠΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π²ΠΈΡΠΎΠΊΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ Π·Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ ΠΈ Π½Π°Π²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ ΠΎΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° ΠΎΡΠΊΠ°Π·Π°Π»ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ°
Π’ΡΠΊ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΈ: ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈ Π΄ΠΎ Π΅ΠΊΠ·ΠΎΡΠΈΡΠ½ΠΈ ΠΊΠ°ΡΠΎ , Π° ΡΡΡΠΎ ΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΠΎ .
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
ΠΠΎΠΈ ΡΡ Π΅ΠΌΠΈ Π·Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ? Basic, digest, oauth, external-auth β ΠΌΠΈΡΠ»Ρ, ΡΠ΅ ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΈ ΡΠ° Π²ΠΈ ΠΏΠΎΠ·Π½Π°ΡΠΈ. Π’ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ΅Π½ ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ, Π°ΠΊΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ (ΠΈ/ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΈ), Π΄ΠΎΡΡΡΠΏΡΡ Π΄ΠΎ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΡΡΠ΅Π· Ingress.
Π Π°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° Π»ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠ²Π° ΡΠ΅ΡΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠ°ΡΠΎ ΠΊΠ°Π½Π°ΡΠ΅Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ (canary), A/B ΡΠ΅ΡΡΠΈΡΠ°Π½Π΅, Π·Π΅ΡΠΊΠ°Π»Π½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° (mirroring/shadowing)? Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π° Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π° ΡΠ΅ΠΌΠ° Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ ΠΈ ΡΠΎΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅, ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²ΠΈ Π³ΡΠ΅ΡΠΊΠΈ Π±Π΅Π· ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈ (ΠΈΠ»ΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Π·Π°Π³ΡΠ±ΠΈ), Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ Ρ.Π½.
ΠΠ»Π°ΡΠ΅Π½ Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½Ρ
ΠΠΌΠ° Π»ΠΈ ΠΏΠ»Π°ΡΠ΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ/ΠΈΠ»ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°?
ΠΡΠ°ΡΠΈΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (Web UI)
ΠΠΌΠ° Π»ΠΈ Π½ΡΠΊΠ°ΠΊΡΠ² Π³ΡΠ°ΡΠΈΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ°? ΠΡΠ½ΠΎΠ²Π½ΠΎ Π·Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΈΠ»ΠΈ Π·Π° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ°Π²ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Ingress, Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ 'ΡΡΡΠΎΠ²ΠΈ' ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π΅ Π½Π΅ΡΠ΄ΠΎΠ±Π½Π°. ΠΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΡΠ»ΡΡΠ°ΠΉ, ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΈΡΠΊΠ°Ρ Π΄Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Ρ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Ρ ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° Π»Π΅ΡΠΈΡΠ΅ΡΠΎ.
JWT Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ
ΠΠ°Π»ΠΈΡΠΈΠ΅ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° JSON web ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΎΡ ΠΊΡΠ°ΠΉΠ½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°
Π Π°Π·ΡΠΈΡΡΠ΅ΠΌΠΎΡΡ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈΡΠ΅ Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ, ΡΠ»Π°Π³ΠΎΠ²Π΅ ΠΈ Ρ.Π½. Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π·Π°ΡΠΈΡΠ° ΠΎΡ DDOS
ΠΡΠΎΡΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π°Π΄ΡΠ΅ΡΠΈ, Π±Π΅Π»ΠΈ ΡΠΏΠΈΡΡΡΠΈ, ΡΡΡΠ°Π½ΠΈ ΠΈ Ρ.Π½.
ΠΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΡ IngressβΠΎΠ² ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ/podβΠ°ΠΌ, Π° Π² ΠΈΠ΄Π΅Π°Π»Π΅ β ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ/podβΠ°ΠΌΠΈ ΡΠΎΠΆΠ΅.
WAF
ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° .
ΠΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ Ingress
Π‘ΠΏΠΈΡΡΠΊΡΡ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ Π΅ ΡΡΡΡΠ°Π²Π΅Π½ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΈ . ΠΡΠΊΠΎΠΈ ΠΎΡ ΡΡΡ ΡΠΌΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΠ»ΠΈ ΠΎΡ ΠΏΡΠ΅Π³Π»Π΅Π΄Π° ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΡΡ ΠΈΠ»ΠΈ Π½ΠΈΡΠΊΠ° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΎΡΡ (Π½Π°ΡΠ°Π»Π΅Π½ Π΅ΡΠ°ΠΏ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅). ΠΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ ΠΏΠΎ-Π΄ΠΎΠ»Ρ. ΠΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΠΎΠ±ΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ Ρ ΠΎΠ±ΠΎΠ±ΡΠ°Π²Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ°.
Ingress ΠΎΡ Kubernetes
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·: Apache 2.0
Π’ΠΎΠ²Π° Π΅ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ Π·Π° Kubernetes, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ, ΡΠΎΠΉ Π΅ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° nginx ΠΈ Π΅ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ Ρ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ Lua ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠΎΡΠ°Π΄ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°ΠΌΠΈΡ nginx ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΌΡ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ, ΡΠΎΠ·ΠΈ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ ΠΎΡ ΡΡΠ΅Π΄Π½ΠΎΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ (Ρ ΠΎΠΏΠΈΡ Π² ΡΠ΅Π±).
Ingress ΠΎΡ NGINX Inc
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·: Apache 2.0
ΠΡΠΈΡΠΈΠ°Π»Π΅Π½ ΠΏΡΠΎΠ΄ΡΠΊΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° nginx. ΠΠΌΠ° ΠΏΠ»Π°ΡΠ΅Π½Π° Π²Π΅ΡΡΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° . ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ΄Π΅Ρ Π΅ Π²ΠΈΡΠΎΠΊΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡ, ΠΏΠΎΡΡΠΎΡΠ½Π½Π° ΠΎΠ±ΡΠ°ΡΠ½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ, ΠΎΡΡΡΡΡΠ²ΠΈΠ΅ Π½Π° ΠΊΠ°ΠΊΠ²ΠΈΡΠΎ ΠΈ Π΄Π° Π΅ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΠΎΠ±ΡΠ²Π΅Π½ΠΎΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΎ Π±ΡΡΠ·ΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ (Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ), ΠΏΠΎΡΡΠΈΠ³Π½Π°ΡΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠΊΠ°Π·Π° ΠΎΡ Lua.
ΠΠ΅Π·ΠΏΠ»Π°ΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π°, Π΄ΠΎΡΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ (ΠΏΠΎΡΠ°Π΄ΠΈ ΠΎΡΡΡΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΡΠΈΡΠ΅ Lua ΠΌΠΎΠ΄ΡΠ»ΠΈ). ΠΠ»Π°ΡΠ΅Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΠΈΡΠΎΠΊ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»: ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅, JWT Π²Π°Π»ΠΈΠ΄ΠΈΡΠ°Π½Π΅, Π°ΠΊΡΠΈΠ²Π½ΠΈ health checkβΠΈ ΠΈ Π΄Ρ. ΠΠ°ΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ ΠΏΡΠ΅Π΄ NGINX Ingress Π΅ ΠΏΡΠ»Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° TCP/UDP ΡΡΠ°ΡΠΈΠΊ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π² community Π²Π΅ΡΡΠΈΡΡΠ°!). ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΠΊΡΡ Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ±Π°ΡΠ΅ βΠΈΠΌΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π΅Π½ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅β, Π½ΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
Kong Ingress
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·: Apache 2.0
ΠΡΠΎΠ΄ΡΠΊΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Kong Inc. Π² Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°: ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΠΈ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½. ΠΡΠ½ΠΎΠ²Π°Π²Π° ΡΠ΅ Π½Π° nginx, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Lua ΠΌΠΎΠ΄ΡΠ»ΠΈ.
ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π±Π΅ΡΠ΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° API Π·Π°ΡΠ²ΠΊΠΈ, Ρ.Π΅. ΠΊΠ°ΡΠΎ API Gateway, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ ΡΡΠ°Π½Π°Π» ΠΏΡΠ»Π΅Π½ Ingress ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ. ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°: ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ ΠΎΡ ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ), ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Ρ Π»Π΅ΡΠ½ΠΎ ΠΈ ΡΡΠ΅Π· ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΠΈΡΠΎΠΊ ΡΠΏΠ΅ΠΊΡΡΡ ΠΎΡ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅.
ΠΠ°ΠΆΠ½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π΅, ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½ΡΡΡ (Π²ΠΌΠ΅ΡΡΠΎ 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Β»: , , ;
- «»;
- «».
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
