ΠžΠ±Π·ΠΎΡ€ ΠΈ сравнСниС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Ingress для Kubernetes

ΠžΠ±Π·ΠΎΡ€ ΠΈ сравнСниС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Ingress для Kubernetes

ΠŸΡ€ΠΈ запускС кластСра 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 (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π½ΠΈΡ… см., Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΎ Istio), собствСнными рСализациями ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ состояния (custom health checks) ΠΈ Ρ‚.ΠΏ. Π’Π΅ΡΡŒΠΌΠ° Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Ссли Ρƒ вас высокиС трСбования ΠΊ доступности ΠΈ своСврСмСнному Π²Ρ‹Π²ΠΎΠ΄Ρƒ ΠΈΠ· балансировки ΠΎΡ‚ΠΊΠ°Π·Π°Π²ΡˆΠΈΡ… сСрвисов.

Алгоритмы балансировки

Π’ΡƒΡ‚ мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²: ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… round-robin Π΄ΠΎ экзотичСских Π²Ρ€ΠΎΠ΄Π΅ rdp-cookie, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности Π²Ρ€ΠΎΠ΄Π΅ sticky sessions.

АутСнтификация

КакиС схСмы Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€? Basic, digest, oauth, external-auth β€” Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ эти ΠΎΠΏΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΡ‹. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² (ΠΈ/ΠΈΠ»ΠΈ просто Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ…), доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· Ingress.

РаспрСдСлСниС Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Ρ‚Π°ΠΊΠΈΠ΅ часто примСняСмыС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ для распрСдСлСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΊΠ°ΠΊ ΠΊΠ°Π½Π°Ρ€Π΅Π΅Ρ‡Π½Ρ‹Π΅ Π²Ρ‹ΠΊΠ°Ρ‚Ρ‹ (canary), A/B-тСстированиС, Π·Π΅Ρ€ΠΊΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° (mirroring/shadowing)? Π­Ρ‚ΠΎ ΠΏΠΎ-настоящСму больная Ρ‚Π΅ΠΌΠ° для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ управлСния Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° для ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ тСстирования, ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Ρ‹Ρ… ошибок Π½Π΅ Π½Π° бою (ΠΈΠ»ΠΈ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ потСрями), Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ Ρ‚.ΠΏ.

ΠŸΠ»Π°Ρ‚Π½Π°Ρ подписка

Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΏΠ»Π°Ρ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ возмоТностями ΠΈ/ΠΈΠ»ΠΈ тСхничСской ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ?

ГрафичСский интСрфСйс (Web UI)

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ графичСский интСрфСйс для управлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°? Π’ основном для «сподручности» ΠΈ/ΠΈΠ»ΠΈ для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ трСбуСтся Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ измСнСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Ingress’а, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с «сырыми» шаблонами Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ΠœΠΎΠΆΠ΅Ρ‚ пригодится Π² случаС, Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ хотят Π½Π°Π»Π΅Ρ‚Ρƒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ экспСримСнты с Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ.

JWT-валидация

НаличиС встроСнной ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ JSON web-Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ.

ВозмоТности для кастомизации ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°

Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ шаблонов Π² смыслС наличия ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² стандартныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ собствСнныС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Ρ„Π»Π°Π³ΠΈ ΠΈ Ρ‚.Π΄.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ DDOS

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ rate limit ΠΈΠ»ΠΈ ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ слоТныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ отсСивания Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° основС адрСсов, Π±Π΅Π»Ρ‹Ρ… списков, стран ΠΈ Ρ‚.Π΄.

Врассировка запросов

ВозмоТности наблюдСния, отслСТивания ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ запросов ΠΎΡ‚ Ingress’ΠΎΠ² ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ сСрвисам/pod’Π°ΠΌ, Π° Π² ΠΈΠ΄Π΅Π°Π»Π΅ β€” ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами/pod’Π°ΠΌΠΈ Ρ‚ΠΎΠΆΠ΅.

WAF

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ firewall’Π°.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Ingress

Бписок ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π±Ρ‹Π» сформирован Π½Π° основС ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Kubernetes ΠΈ этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΠΌΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΠΈΠ· ΠΎΠ±Π·ΠΎΡ€Π° Π²Π²ΠΈΠ΄Ρƒ спСцифичности ΠΈΠ»ΠΈ ΠΌΠ°Π»ΠΎΠΉ распространСнности (Ρ€Π°Π½Π½Π΅ΠΉ стадии развития). ΠžΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΆΠ΅ рассмотрСны Π½ΠΈΠΆΠ΅. Начнём с ΠΎΠ±Ρ‰Π΅Π³ΠΎ описания Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ сводной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ.

Ingress ΠΎΡ‚ Kubernetes

Π‘Π°ΠΉΡ‚: github.com/kubernetes/ingress-nginx
ЛицСнзия: Apache 2.0

Π­Ρ‚ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ для Kubernetes, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ разрабатываСтся сообщСством. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· названия, ΠΎΠ½ основан Π½Π° nginx ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Lua-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², примСняСмых для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ возмоТностСй. Благодаря популярности самого nginx’а ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π½Π°Π΄ Π½ΠΈΠΌ ΠΏΡ€ΠΈ использовании Π² качСствС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ самым простым ΠΈ понятным Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ срСднСстатистичСским ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠΌ (с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Π² web).

Ingress ΠΎΡ‚ NGINX Inc

Π‘Π°ΠΉΡ‚: github.com/nginxinc/kubernetes-ingress
ЛицСнзия: Apache 2.0

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² nginx. Π˜ΠΌΠ΅Π΅Ρ‚ ΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° NGINX Plus. Основная идСя β€” высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, постоянная обратная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, отсутствиС ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ посторонних ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ заявлСнная ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (Π² сравнСнии с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ), достигнутая благодаря ΠΎΡ‚ΠΊΠ°Π·Ρƒ ΠΎΡ‚ Lua.

БСсплатная вСрсия сущСствСнно ΡƒΡ€Π΅Π·Π°Π½Π°, Π² Ρ‚ΠΎΠΌ числС Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ сравнСнии с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ (ΠΈΠ·-Π·Π° отсутствия всё Ρ‚Π΅Ρ… ΠΆΠ΅ Lua-ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ). ΠŸΠ»Π°Ρ‚Π½Π°Ρ ΠΏΡ€ΠΈ этом ΠΈΠΌΠ΅Π΅Ρ‚ достаточно ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»: ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, JWT-валидация, Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ health check’и ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π’Π°ΠΆΠ½ΠΎΠ΅ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ NGINX Ingress β€” полноцСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° TCP/UDP-Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° (ΠΈ Π² community-вСрсии Ρ‚ΠΎΠΆΠ΅!). ΠœΠΈΠ½ΡƒΡ β€” отсутствиС Ρ„ΠΈΡ‡ ΠΏΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎ, Π²ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Β«ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²Β», Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Kong Ingress

Π‘Π°ΠΉΡ‚: github.com/Kong/kubernetes-ingress-controller
ЛицСнзия: Apache 2.0

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Kong Inc. Π² Π΄Π²ΡƒΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ…: коммСрчСский ΠΈ бСсплатный. Основан Π½Π° nginx, возмоТности ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ большим количСством ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π½Π° Lua.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ запросов API, Ρ‚.Π΅. ΠΊΠ°ΠΊ API Gateway, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ стал ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΌ Ingress-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ прСимущСства: мноТСство Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (Π² Ρ‚ΠΎΠΌ числС ΠΈ ΠΎΡ‚ сторонних Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… рСализуСтся ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ возмоТности. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CRD-рСсурсов.

ВаТная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° β€” Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° (вмСсто cross-namespaced) являСтся спорной Ρ‚Π΅ΠΌΠΎΠΉ: ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ покаТСтся нСдостатком (приходится ΠΏΠ»ΠΎΠ΄ΠΈΡ‚ΡŒ сущности для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°), Π° для ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ β€” Ρ„ΠΈΡ‡Π° (больший ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции, Ρ‚.ΠΊ. Ссли сломан ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΎΠ΄Π½ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠΌ).

Traefik

Π‘Π°ΠΉΡ‚: github.com/containous/traefik
ЛицСнзия: MIT

ΠŸΡ€ΠΎΠΊΡΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ создавался для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ запросов для микросСрвисов ΠΈ ΠΈΡ… динамичСской срСды. ΠžΡ‚ΡΡŽΠ΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ возмоТности: ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ совсСм Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° большого количСства ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² балансировки, Π²Π΅Π±-интСрфСйс, проброс ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², REST API, ΠΊΠ°Π½Π°Ρ€Π΅Π΅Ρ‡Π½Ρ‹Π΅ Ρ€Π΅Π»ΠΈΠ·Ρ‹ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ΠŸΡ€ΠΈΡΡ‚Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сСртификатов Let’s Encrypt ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ. НСдостаток β€” для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ высокой доступности (HA) Ρƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° потрСбуСтся ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ собствСнноС KV-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

HAProxy

Π‘Π°ΠΉΡ‚: github.com/jcmoraisjr/haproxy-ingress
ЛицСнзия: Apache 2.0

HAProxy Π΄Π°Π²Π½ΠΎ извСстСн Π² качСствС прокси ΠΈ балансировщика Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… кластСра Kubernetes с Π½ΠΈΠΌ прСдлагаСтся «мягкоС» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°), service discovery Π½Π° основС DNS, динамичСская конфигурация с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API. ΠŸΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ полная кастомизация шаблона ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π°ΠΌΠ΅Π½Ρ‹ CM’Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ возмоТности использования Π² Π½Ρ‘ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Sprig. Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΆΠ΅ основной Π°ΠΊΡ†Π΅Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ дСлаСтся Π½Π° Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π΅Π³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π² потрСбляСмых рСсурсах. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅ΠΊΠΎΡ€Π΄Π½ΠΎΠ³ΠΎ числа Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов балансировки.

Voyager

Π‘Π°ΠΉΡ‚: github.com/appscode/voyager
ЛицСнзия: Apache 2.0

ΠžΡΠ½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° HAproxy ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позиционируСтся ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности Π½Π° большом количСствС ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ². ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для балансировки Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° L7 ΠΈ L4, Π° балансировку TCP L4-Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Ρ†Π΅Π»ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ„ΠΈΡ‡ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Contour

Π‘Π°ΠΉΡ‚: github.com/heptio/contour
ЛицСнзия: Apache 2.0

Π’ основу этого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»Ρ‘Π³ Envoy: ΠΎΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ совмСстно с Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ этого популярного прокси. ВаТная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ раздСлСния управлСния рСсурсами Ingress с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CRD-рСсурсов IngressRoute. Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ со мноТСством ΠΊΠΎΠΌΠ°Π½Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ΄ΠΈΠ½ кластСр, это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ максимально ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Π² сосСдних ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π°Ρ… ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΡ‚ ошибок ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ рСсурсов Ingress.

Π’Π°ΠΊΠΆΠ΅ прСдлагаСтся Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² балансировки (присутствуСт Π·Π΅Ρ€ΠΊΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запросов, Π°Π²Ρ‚ΠΎΠΏΠΎΠ²Ρ‚ΠΎΡ€Ρ‹, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ rate’Ρƒ запросов ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅), Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΠΎΡ‚ΠΎΠΊΠ° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ сбоСв. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, для ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ сущСствСнным нСдостатком отсутствиС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ sticky sessions (хотя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡƒΠΆΠ΅ вСдутся).

Istio Ingress

Π‘Π°ΠΉΡ‚: istio.io/docs/tasks/traffic-management/ingress
ЛицСнзия: Apache 2.0

КомплСксноС service mesh-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ingress-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ ΠΈΠ·Π²Π½Π΅, Π½ΠΎ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ вСсь Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… кластСра. «Под ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌΒ», Π² качСствС sidecar-прокси для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвиса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Envoy. Π’ сущности это большой ΠΊΠΎΠΌΠ±Π°ΠΉΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Β«ΠΌΠΎΠΆΠ΅Ρ‚ всё», Π° основная Π΅Π³ΠΎ идСя β€” максимальная ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π² тонкостях Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ доступа ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами, балансировку, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, ΠΊΠ°Π½Π°Ρ€Π΅Π΅Ρ‡Π½Ρ‹Π΅ Ρ€Π΅Π»ΠΈΠ·Ρ‹ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± Istio Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² сСрии статСй «Назад ΠΊ микросСрвисам с IstioΒ».

Ambassador

Π‘Π°ΠΉΡ‚: github.com/datawire/ambassador
ЛицСнзия: Apache 2.0

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° основС Envoy. Π˜ΠΌΠ΅Π΅Ρ‚ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΡƒΡŽ вСрсии. ΠŸΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Β«ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€ΠΎΠ΄Π½ΠΎΠ΅ для KubernetesΒ», Ρ‡Ρ‚ΠΎ приносит ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства (тСсная интСграция с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈ сущностями кластСра K8s).

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π°

Π˜Ρ‚Π°ΠΊ, ΠΊΡƒΠ»ΡŒΠΌΠΈΠ½Π°Ρ†ΠΈΡ ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” эта огромная Ρ‚Π°Π±Π»ΠΈΡ†Π°:

ΠžΠ±Π·ΠΎΡ€ ΠΈ сравнСниС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Ingress для Kubernetes

Она кликабСльна для возмоТности Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ просмотра, Π° Ρ‚Π°ΠΊΠΆΠ΅ доступна Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Google Sheets.

ΠŸΠΎΠ΄Π²Π΅Π΄Ρ‘ΠΌ ΠΈΡ‚ΠΎΠ³ΠΈ

ЦСль ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ (Π²ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰Π΅Π΅!) Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² вашСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС. Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ свои достоинства ΠΈ нСдостатки…

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ 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.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com