
ΠΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° 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 Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ, Π°ΠΊΡΠΈΠ²Π½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΈ. ΠΠ°ΠΆΠ½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ ΠΏΡΠ΅Π΄ 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 ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° βΠΌΠ΅ΠΊΠΎβ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° (Π±Π΅Π· Π·Π°Π³ΡΠ±Π° Π½Π° ΡΡΠ°ΡΠΈΠΊ), ΠΎΡΠΊΡΠΈΡΠΈΠ΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° DNS, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΡΠ΅Π· API. ΠΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»Π½ΠΎ Π΅ ΠΏΡΠ»Π½ΠΎΡΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ ΡΡΠ΅Π· Π·Π°ΠΌΡΠ½Π° Π½Π° CM, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Sprig. Π ΠΎΠ±ΡΠΈ Π»ΠΈΠ½ΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π°ΠΊΡΠ΅Π½Ρ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Π²ΡΡΡ Ρ Π²ΠΈΡΠΎΠΊΠ° ΡΠΊΠΎΡΠΎΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π² ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ. ΠΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠ΅ΠΊΠΎΡΠ΄Π΅Π½ Π±ΡΠΎΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ°.
Voyager
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
ΠΠΎΠ½ΡΡΠΎΠ»Π΅Ρ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° HAproxy, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠ° ΠΊΠ°ΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΠΎ ΡΠΈΡΠΎΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ. ΠΡΠ΅Π΄Π»Π°Π³Π° ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈΠΊ Π½Π° L7 ΠΈ L4, Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° TCP L4 ΡΡΠ°ΡΠΈΠΊΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΡΠ΅ΡΠ΅Π½Π° Π΅Π΄Π½Π° ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ.
Contour
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ°ΠΌΠΎ Π»Π΅Π³Π½Π° Envoy: ΡΠΎ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ΠΎ Π² ΡΡΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ Π°Π²ΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ ΠΏΡΠΎΠΊΡΠΈ. ΠΠ°ΠΆΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Ingress ΡΡΠ΅Π· CRD ΡΠ΅ΡΡΡΡΠΈ IngressRoute. ΠΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΅ΠΊΠΈΠΏΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Π΅Π΄ΠΈΠ½ ΠΊΠ»ΡΡΡΠ΅Ρ, ΡΠΎΠ²Π° ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΡΡΠ°ΡΠΈΠΊΠ° Π² ΡΡΡΠ΅Π΄Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΠΈ ΠΈ Π΄Π° ΡΠ΅ Π·Π°ΡΠΈΡΡΡ ΠΎΡ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Ingress.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ (ΠΈΠΌΠ° Π·Π΅ΡΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎ), Π΄Π΅ΡΠ°ΠΉΠ»Π΅Π½ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π½Π° ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ ΡΡΠΈΠ²ΠΎΠ²Π΅ΡΠ΅. ΠΠΎΠΆΠ΅ Π±ΠΈ Π·Π° Π½ΡΠΊΠΎΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° sticky sessions (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ).
Istio Ingress
Π‘Π°ΠΉΡ:
ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Apache 2.0
ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° service mesh, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ Π΅ ΡΠ°ΠΌΠΎ Ingress ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡΠ°ΡΠΈΠΊ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΡΠ΅Π»ΠΈΡ ΡΡΠ°ΡΠΈΠΊ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΠΎΠ΄ ΠΊΠ°ΠΏΠ°ΠΊΠ°, Π·Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Envoy ΠΊΠ°ΡΠΎ sidecar ΠΏΡΠΎΠΊΡΠΈ. ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ²Π° Π΅ Π³ΠΎΠ»ΡΠΌ ΠΊΠΎΠΌΠ±Π°ΠΉΠ½, ΠΊΠΎΠΉΡΠΎ βΠΌΠΎΠΆΠ΅ Π²ΡΠΈΡΠΊΠΎβ, Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΌΡ ΠΈΠ΄Π΅Ρ Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΡΡ, ΡΠ°Π·ΡΠΈΡΡΠ΅ΠΌΠΎΡΡ, ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡ. Π‘ Π½Π΅Π³ΠΎΠ²Π° ΠΏΠΎΠΌΠΎΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π² Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ Π΄Π° Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°, Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ»ΡΠ³ΠΈΡΠ΅, Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π΅ΡΠΎ, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°, ΠΊΠ°Π½Π°ΡΠ΅ΠΉΠ½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎ. ΠΠΎΠ²Π΅ΡΠ΅ Π·Π° 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
