Назад към микросСрвиситС с Istio. Част 1

Назад към микросСрвиситС с Istio. Част 1

ΠŸΡ€ΠΈΠΌ. ΠΏΡ€Π΅Π².: Service mesh ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ стана Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ‚Π° инфраструктура Π·Π° прилоТСния, слСдващи микросСрвисната Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Istio ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ DevOps ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ, Ρ‚ΠΎΠ²Π° Π΅ сравнитСлно Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ, Π±ΡƒΠ΄Π΅ΠΉΠΊΠΈ слоТСн ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° прСдоставянитС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° изисква Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅. НСмският ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ Π ΠΈΠ½ΠΎΡ€ ΠœΠ°Π»ΡƒΠΊΡƒ, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ изчислСния Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ Π² Ρ‚Π΅Π»Π΅ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° компания Orange Networks, написа Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π΅Π½ Ρ†ΠΈΠΊΡŠΠ» ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ позволяват Π±ΡŠΡ€Π·ΠΎ ΠΈ Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ потапянС Π² Istio. Π’ΠΎΠΉ Π·Π°ΠΏΠΎΡ‡Π²Π° своя Ρ€Π°Π·ΠΊΠ°Π· с Ρ‚ΠΎΠ²Π°, ΠΊΠ°ΠΊΠ²ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Istio ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π±ΡŠΡ€Π·ΠΎ с Π½Π°ΡˆΠΈΡ‚Π΅ собствСни ΠΎΡ‡ΠΈ.

Istio β€” Open Source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π² ΡΡŠΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΅ΠΊΠΈΠΏΠΈ ΠΎΡ‚ Google, IBM ΠΈ Lyft. Π’ΠΎΠΉ Ρ€Π΅ΡˆΠ°Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚ Π² прилоТСнията, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° микросСрвиси, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слСднитС:

  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°: Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΈ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ, балансировка Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ;
  • Бигурност: аутСнтификация ΠΈ авторизация Π½Π° ΠΊΡ€Π°ΠΉΠ½ΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ;
  • ΠΠ°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚: трасировка, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Π»ΠΎΠ³Π²Π°Π½Π΅.

Всички Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ слСд Ρ‚ΠΎΠ²Π° Π²Π°ΡˆΠΈΡ‚Π΅ услуги Ρ‰Π΅ прСстанат Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ β€žΠΌΠΈΠΊΡ€ΠΎβ€œ. Всички Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ усилия Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ са излишно Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°Π½Π΅ Π½Π° рСсурси Π½Π° компанията, ΠΊΠΎΠΈΡ‚ΠΎ Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π° бизнСс стойности. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠœΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ: Колко Π²Ρ€Π΅ΠΌΠ΅ Ρ‰Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π·Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ функция Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°?
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: Π”Π²Π° спринта.

МП: Какво?.. Вова С само CRUD!
Π : Π”Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ CRUD Π΅ лСсната част ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°, Π½ΠΎ ΠΎΡ‰Π΅ Ρ‰Π΅ трябва Π΄Π° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΈ услуги. Въй ΠΊΠ°Ρ‚ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π΅ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½Π°, Ρ‰Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ запитвания, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π½Π° circuit breaker Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅. ОсвСн Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Π° смС ΡƒΠ²Π΅Ρ€Π΅Π½ΠΈ, Ρ‡Π΅ цялата систСма Π½Π΅ Π΅ ΠΏΠ°Π΄Π½Π°Π»Π°, Ρ‰Π΅ са Π½ΡƒΠΆΠ½ΠΈ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΈ ΠΈ bulkheads (подробности Π·Π° Π΄Π²Π°Ρ‚Π° спомСнати ΠΏΠ°Ρ‚Π΅Ρ€Π½Π° Π² статията β€” Π±Π΅Π». Ρ€Π΅Π΄.), Π° Π·Π° Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, трасировка, […]

МП: О, Ρ‚ΠΎΠ³Π°Π²Π° просто Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Ρ‚Π°Π·ΠΈ функция Π² услугата Product.

Мисля, Ρ‡Π΅ идСята Π΅ ясна: ΠΎΠ±Π΅ΠΌΡŠΡ‚ ΡΡ‚ΡŠΠΏΠΊΠΈ ΠΈ усилия, ΠΊΠΎΠΈΡ‚ΠΎ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° добавянС Π½Π° Π΅Π΄Π½Π° услуга, Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½. Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Istio ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° всички спомСнати ΠΏΠΎ-Π³ΠΎΡ€Π΅ услоТнСния (ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Ρ†Π΅Π»Π΅Π²ΠΈ Π·Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π°) ΠΎΡ‚ услугитС.

Назад към микросСрвиситС с Istio. Част 1

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Бтатията ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ практичСски знания ΠΏΠΎ Kubernetes. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΌΠΎΠ΅Ρ‚ΠΎ въвСдСниС Π² Kubernetes ΠΈ Π΅Π΄Π²Π° слСд Ρ‚ΠΎΠ²Π° Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅ с Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π».

Π˜Π΄Π΅ΡΡ‚Π° Π½Π° Istio

Π’ свят Π±Π΅Π· Istio, Π΅Π΄Π½Π° услуга ΠΏΡ€Π°Π²ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΈ заявки към Π΄Ρ€ΡƒΠ³Π°, Π° Π² случай Π½Π° срив, услугата трябва сама Π΄Π° Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈ: Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½ΠΎΠ² ΠΎΠΏΠΈΡ‚, Π΄Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚, Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈ circuit breaker ΠΈ Ρ‚.Π½.

Назад към микросСрвиситС с Istio. Част 1
ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² Kubernetes

Istio ΠΏΡ€Π΅Π΄Π»Π°Π³Π° спСциализирано Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, напълно ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΎ ΠΎΡ‚ услугитС ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Ρ‰ΠΎ Ρ‡Ρ€Π΅Π· намСса Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ взаимодСйствиС. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°:

  • ΠžΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚: Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°ΠΉΠΊΠΈ Π½Π° ΠΊΠΎΠ΄Π° Π½Π° статуса Π² ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π°, Ρ€Π°Π·Π±ΠΈΡ€Π° Π΄Π°Π»ΠΈ Π΅ възникнал срив Π² заявката ΠΈ я изпълнява ΠΎΡ‚Π½ΠΎΠ²ΠΎ.
  • ΠšΠ°Π½Π°Ρ€ΡΠΊΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ: прСнасочва към Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° услугата само фиксиран ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΡ‚ заявкитС.
  • ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ: Π·Π° ΠΊΠΎΠ»ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ услугата?
  • Врасировка ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚: добавя спСциални заглавия Π² всяка заявка ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° тяхната трасировка Π² кластСра.
  • Бигурност: ΠΈΠ·Π²Π»ΠΈΡ‡Π° JWT-Ρ‚ΠΎΠΊΠ΅Π½, удостовСрява ΠΈ ΡƒΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰Π°Π²Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅.

Π’ΠΎΠ²Π° са само някои ΠΎΡ‚ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ (наистина само някои!), Π·Π° Π΄Π° Π²ΠΈ Π·Π°ΠΈΠ½Ρ‚Ρ€ΠΈΠ³ΡƒΠ²Π°ΠΌ. Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° сС ΠΏΠΎΡ‚ΠΎΠΏΠΈΠΌ Π² тСхничСскитС Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ!

АрхитСктура Π½Π° Istio

Istio улавя цСлия ΠΌΡ€Π΅ΠΆΠΎΠ² Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°, вмъквайки Π² всСки pod ΡƒΠΌΠ½ΠΎ прокси ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° sidecar-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ΠŸΡ€ΠΎΠΊΡΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚ всички Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ, ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚ Data Plane, ΠΈ Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Control Plane.

Data Plane

Π’ΠΌΡŠΠΊΠ½Π°Ρ‚ΠΈΡ‚Π΅ Π² pod-ΠΎΠ²Π΅ прокси позволяват Π½Π° Istio лСсно Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ изисквания. НапримСр, Π½Π΅ΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ ΠΈ circuit breaker.

Назад към микросСрвиситС с Istio. Част 1
Как retries ΠΈ circuit breaking са Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π² Envoy

Π”Π° ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΠΌ:

  1. Envoy (става Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° прокси, Π½Π°ΠΌΠΈΡ€Π°Ρ‰ΠΎ сС Π² sidecar-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ сС разпространява ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ β€” Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ° Π½Π° ΠΏΡ€Π΅Π²ΠΎΠ΄Π°Ρ‡Π°) ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° заявка Π΄ΠΎ ΠΏΡŠΡ€Π²ΠΈΡ СкзСмпляр Π½Π° услуга B ΠΈ Π½Π°ΡΡ‚ΡŠΠΏΠ²Π° срив.
  2. Envoy Sidecar ΠΏΡ€Π°Π²ΠΈ Π½ΠΎΠ² ΠΎΠΏΠΈΡ‚ (retry). (1)
  3. Заявката със срива сС Π²Ρ€ΡŠΡ‰Π° Π½Π° проксито, ΠΊΠΎΠ΅Ρ‚ΠΎ я Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π»ΠΎ.
  4. Π’Π°ΠΊΠ° сС отваря Circuit Breaker ΠΈ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° слСдващата услуга Π·Π° послСдващи заявки. (2)

Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΄Ρ€ΡƒΠ³Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Retry, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ своя собствСна рСализация Π½Π° Circuit Breaking ΠΈ Service Discovery Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ X, Y ΠΈΠ»ΠΈ Z. Всичко Ρ‚ΠΎΠ²Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ кутията Π² Istio ΠΈ Π½Π΅ изисква Π½ΠΈΠΊΠ°ΠΊΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°.

Π‘Ρ‚Ρ€Π°Ρ…ΠΎΡ‚Π½ΠΎ! Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° искатС Π΄Π° ΠΎΡ‚ΠΏΡ€Π°Π·Π½ΡƒΠ²Π°Ρ‚Π΅ с Istio, Π½ΠΎ всС ΠΎΡ‰Π΅ ΠΈΠΌΠ°Ρ‚Π΅ някакви съмнСния, ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ. Ако Ρ‚ΠΎΠ²Π° Π΅ унивСрсално Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° всички случаи, Ρ‚ΠΎ СстСствСно възниква съмнСниС: наистина Π»ΠΈ всички Ρ‚Π°ΠΊΠΈΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ са подходящи Π·Π° Π½ΠΈΡ‚ΠΎ Π΅Π΄ΠΈΠ½ случай.

И накрая, сСга Ρ‰Π΅ ΠΏΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅: "Настройва Π»ΠΈ сС?"

Π‘Π΅Π³Π° стС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° ΠΌΠΎΡ€Π΅ β€” ΠΈ Π½Π΅ΠΊΠ° Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ с Control Plane.

Control Plane

Π’ΠΎΠΉ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°: Pilot, Mixer ΠΈ Citadel, β€” ΠΊΠΎΠΈΡ‚ΠΎ Π·Π°Π΅Π΄Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚ Envoy Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ ΡΡŠΠ±ΠΈΡ€Π°Ρ‚ Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ. Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, всичко Ρ‚ΠΎΠ²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

Назад към микросСрвиситС с Istio. Част 1
ВзаимодСйствиС Π½Π° Control Plane с Data Plane

Envoy (Ρ‚.Π΅. data plane) Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Kubernetes CRD (Custom Resource Definitions), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΡ‚ Istio ΠΈ спСциално ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Ρ‚Π°Π·ΠΈ Ρ†Π΅Π». Π—Π° вас Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Ρ‚Π΅ сС появяват ΠΊΠ°Ρ‚ΠΎ рСсурс Π² Kubernetes с ΠΏΠΎΠ·Π½Π°Ρ‚ синтаксис. Π‘Π»Π΅Π΄ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ, Ρ‚ΠΎΠ·ΠΈ рСсурс Ρ‰Π΅ бъдС Π²Π·Π΅Ρ‚ ΠΎΡ‚ control plane ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ към Envoy.

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° услугитС към Istio

ΠžΠΏΠΈΡΠ°Ρ…ΠΌΠ΅ ΠΊΠ°ΠΊ Istio Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ° услугитС, Π½ΠΎ ΠΊΠ°ΠΊ услугитС Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Istio?

ЧСстно ΠΊΠ°Π·Π°Π½ΠΎ, Π½Π° услугитС ΠΈΠΌ Π΅ извСстно Π·Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° Istio Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π΄ΠΎΠ±Ρ€Π΅, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π½Π° Ρ€ΠΈΠ±ΠΈΡ‚Π΅ β€” Π·Π° Π²ΠΎΠ΄Π°Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ си Π·Π°Π΄Π°Π²Π°Ρ‚ Π²ΡŠΠΏΡ€ΠΎΡΠ°: "Какво Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅ Π²ΠΎΠ΄Π°Ρ‚Π°?".

Назад към микросСрвиситС с Istio. Част 1
Π˜Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Victoria Dimitrakopoulos: β€” Как Π΅ Π²ΠΎΠ΄Π°Ρ‚Π°? β€” Какво Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅ Π²ΠΎΠ΄Π°Ρ‚Π°?

Π’Π°ΠΊΠ° Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΈ слСд Π΄Π΅ΠΏΠ»ΠΎΠΉ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Istio, услугитС, ΠΊΠΎΠΈΡ‚ΠΎ са Π² Π½Π΅Π³ΠΎ, Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Ρ‚ Π΄Π° работят, Π° слСд ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ β€” всичко ΠΎΡ‚Π½ΠΎΠ²ΠΎ Ρ‰Π΅ бъдС Π½Π°Ρ€Π΅Π΄. Π Π°Π·Π±ΠΈΡ€Π° сС, Ρ‰Π΅ Π·Π°Π³ΡƒΠ±ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅, прСдоставСни ΠΎΡ‚ Istio.

Π”ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ тСория β€” Π½Π΅ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ Ρ‚ΠΎΠ²Π° Π·Π½Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°!

Istio Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Istio изисква ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Kubernetes, Π² ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ работят 4 vCPU ΠΈ 8 GB RAM. Π—Π° Π±ΡŠΡ€Π·ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΈ слСдванС Π½Π° инструкциитС ΠΎΡ‚ статията, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΡ‚ Google Cloud Platform, която ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½ΠΈ $300.

Π‘Π»Π΅Π΄ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ настройванСто Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Kubernetes Ρ‡Ρ€Π΅Π· ΠΊΠΎΠ½Π·ΠΎΠ»Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС Istio Ρ‡Ρ€Π΅Π· пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Helm.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° Helm

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Helm Π½Π° вашия ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€, ΠΊΠ°ΠΊΡ‚ΠΎ сС описва Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° докумСнтация. Π’ΠΎΠΉ Ρ‰Π΅ бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° шаблони Π·Π° инсталиранС Π½Π° Istio Π² слСдващия Ρ€Π°Π·Π΄Π΅Π».

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° Istio

Π‘Π²Π°Π»Π΅Ρ‚Π΅ рСсурситС Π½Π° Istio ΠΎΡ‚ послСдната вСрсия (ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Π°Ρ‚Π° авторска Π²Ρ€ΡŠΠ·ΠΊΠ° към вСрсия 1.0.5 Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½Π° Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»Π½Π°Ρ‚Π°, Ρ‚.Π΅. 1.0.6 β€” Π±Π΅Π». ΠΏΡ€Π΅Π².), ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π² Π΅Π΄Π½Π° дирСктория, която Ρ‰Π΅ Π½Π°Ρ€ΠΈΡ‡Π°ΠΌ [istio-resources].

Π—Π° ΠΏΠΎ-лСсна идСнтификация Π½Π° рСсурситС Π½Π° Istio ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π² K8s ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° istio-system:

$ kubectl create namespace istio-system

Π—Π°Π²ΡŠΡ€ΡˆΠ΅Ρ‚Π΅ инсталацията, ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² дирСкторията [istio-resources] ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

$ helm template install/kubernetes/helm/istio 
  --set global.mtls.enabled=false 
  --set tracing.enabled=true 
  --set kiali.enabled=true 
  --set grafana.enabled=true 
  --namespace istio-system > istio.yaml

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‰Π΅ ΠΈΠ·Π²Π΅Π΄Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Istio Π² Ρ„Π°ΠΉΠ»Π° istio.yaml. НиС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ…ΠΌΠ΅ стандартния шаблон, Π·Π° Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π·Π°Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ слСднитС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ:

  • global.mtls.enabled Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° Π½Π΅Π²Π΅Ρ€Π½ΠΎ (Ρ‚.Π΅. mTLS удостовСряванС Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ β€” Π±Π΅Π». ΠΏΡ€Π΅Π².), Π·Π° Π΄Π° опростим нашия процСс Π½Π° Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅;
  • tracing.enabled Π²ΠΊΠ»ΡŽΡ‡Π²Π° трасировка Π½Π° заявкитС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Jaeger;
  • kiali.enabled инсталира Kiali Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π·Π° визуализация Π½Π° услугитС ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°;
  • grafana.enabled инсталира Grafana Π·Π° визуализация Π½Π° ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.

Π©Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ рСсурси с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

$ kubectl apply -f istio.yaml

Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡΡ‚Π° Π½Π° Istio Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π°! Π˜Π·Ρ‡Π°ΠΊΠ°ΠΉΡ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ всички pod'ΠΎΠ²Π΅ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° istio-system ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ‚ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π’ процСс Π½Π° изпълнСниС ΠΈΠ»ΠΈ Π—Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ, изпълнявайки ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

$ kubectl get pods -n istio-system

Π‘Π΅Π³Π° смС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ Π² слСдващия Ρ€Π°Π·Π΄Π΅Π», ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‰Π΅ стартирамС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

АрхитСктура Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Sentiment Analysis

Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° микросСрвисно ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Sentiment Analysis, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ Π² Π²Π΅Ρ‡Π΅ спомСнатата статия-въвСдСниС Π² Kubernetes. Π’ΠΎ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ слоТно, Π·Π° Π΄Π° дСмонстрира Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Istio Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ микросСрвиза:

  1. Π‘Π΅Ρ€Π²ΠΈΠ· SA-Frontend, ΠΊΠΎΠΉΡ‚ΠΎ обслуТва Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Reactjs;
  2. Π‘Π΅Ρ€Π²ΠΈΠ· SA-WebApp, ΠΊΠΎΠΉΡ‚ΠΎ обслуТва заявкитС Π·Π° Sentiment Analysis;
  3. Π‘Π΅Ρ€Π²ΠΈΠ· SA-Logic, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° самия сСнтимСнт Π°Π½Π°Π»ΠΈΠ·;
  4. Π‘Π΅Ρ€Π²ΠΈΠ· SA-Feedback, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΎΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ относно точността Π½Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎΡ‚ΠΎ изслСдванС.

Назад към микросСрвиситС с Istio. Част 1

На Ρ‚Π°Π·ΠΈ схСма, освСн услугитС, Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΈ Ingress Controller, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π° входящитС заявки към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ услуги Π² Kubernetes. Π’ Istio сС ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Π° концСпция Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ingress Gateway, подробности Π·Π° ΠΊΠΎΠΉΡ‚ΠΎ слСдват.

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с прокси ΠΎΡ‚ Istio

Π—Π° ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½ΠΈ дСйствия, спомСнати Π² статията, ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°ΠΉΡ‚Π΅ рСпозитория си istio-mastery. Π’ Π½Π΅Π³ΠΎ сС ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ манифСститС Π·Π° Kubernetes ΠΈ Istio.

Π’ΠΌΡŠΠΊΠ²Π°Π½Π΅ Π½Π° sidecar-ΠΈ

Π’ΠΌΡŠΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈΠ»ΠΈ Ρ€ΡŠΡ‡Π½ΠΎ. Π—Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ вмъкванС Π½Π° sidecar ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ Π½Π° пространството с ΠΈΠΌΠ΅ istio-injection=enabled, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΠΏΡ€Π°Π²ΠΈ с слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ kubectl label namespace default istio-injection=enabled
namespace/default labeled

Π‘Π΅Π³Π° всСки pod, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π° Π² пространството ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅) Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ своя sidecar ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π—Π° Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΠΌ Π² Ρ‚ΠΎΠ²Π°, Π½Π΅ΠΊΠ° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ тСстово ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°Ρ‚ΠΎ сС прСмСстим Π² ΠΊΠΎΡ€Π΅Π½Π½Π°Ρ‚Π° дирСктория Π½Π° рСпозитория . Π’ Ρ‚ΠΎΠ·ΠΈ ΠΊΠ»ΠΎΠ½ ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½, Π·Π° Π΄Π° прСнасочва ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ към Auth0 Π·Π° аутСнтификация ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° JWT Ρ‚ΠΎΠΊΠ΅Π½ Π² заявкитС към останалитС услуги. ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΎΡ‚ΠΎ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½ ( ΠΈ изпълним слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ kubectl apply -f resource-manifests/kube
persistentvolumeclaim/sqlite-pvc created
deployment.extensions/sa-feedback created
service/sa-feedback created
deployment.extensions/sa-frontend created
service/sa-frontend created
deployment.extensions/sa-logic created
service/sa-logic created
deployment.extensions/sa-web-app created
service/sa-web-app created

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ услугитС, провСрявамС, Ρ‡Π΅ pod-ΠΎΠ²Π΅Ρ‚Π΅ ΠΈΠΌΠ°Ρ‚ ΠΏΠΎ Π΄Π²Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° услуга ΠΈ нСйния sidecar), изпълнявайки ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° kubectl get pods ΠΈ сС увСрявамС, Ρ‡Π΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° READY Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Ρ‰ΠΎ, Ρ‡Π΅ ΠΈ Π΄Π²Π°Ρ‚Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° са стартирани: 2/2$ kubectl get pods NAME READY STATUS RESTARTS AGE sa-feedback-55f5dc4d9c-c9wfv 2/2 Running 0 12m sa-frontend-558f8986-hhkj9 2/2 Running 0 12m sa-logic-568498cb4d-2sjwj 2/2 Running 0 12m sa-logic-568498cb4d-p4f8c 2/2 Running 0 12m sa-web-app-599cf47c7c-s7cvd 2/2 Running 0 12m

Π’ΠΈΠ·ΡƒΠ°Π»Π½ΠΎ Ρ‚ΠΎΠ²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

ΠŸΡ€ΠΎΠΊΡΠΈ Envoy Π² Π΅Π΄ΠΈΠ½ ΠΎΡ‚ pod-ΠΎΠ²Π΅Ρ‚Π΅

Назад към микросСрвиситС с Istio. Част 1
Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ стартирано ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°, сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° входящия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π΄Π° достига Π΄ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Ingress Gateway

Най-Π΄ΠΎΠ±Ρ€Π°Ρ‚Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π·Π° постиганС Π½Π° Ρ‚ΠΎΠ²Π° (Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°) Π΅ Ρ‡Ρ€Π΅Π·

Π² Istio, ΠΊΠΎΠ΅Ρ‚ΠΎ сС Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π° Π½Π° β€žΠ³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π°β€œ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ позволява Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π·Π° входящия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Istio, ΠΊΠ°Ρ‚ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅, балансиранС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, сигурност ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. Най-Π΄ΠΎΠ±Ρ€Π°Ρ‚Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π·Π° постиганС Π½Π° Ρ‚ΠΎΠ²Π° (Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°) Π΅ Ρ‡Ρ€Π΅Π· ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΡŠΡ‚ Ingress Gateway ΠΈ услугата, която Π³ΠΎ ΠΏΡ€ΠΎΠ±ΡƒΡ‚Π²Π° навън, бяха инсталирани Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° инсталацията Π½Π° Istio. Π—Π° Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ външния IP адрСс Π½Π° услугата, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅:

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Ingress Gateway ΠΈ услугата, която Π³ΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π° навън, бяха инсталирани Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° инсталацията Π½Π° Istio. Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ външния IP адрСс Π½Π° услугата, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅:

$ kubectl get svc -n istio-system -l istio=ingressgateway
NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP
istio-ingressgateway   LoadBalancer   10.0.132.127   13.93.30.120

НиС Ρ‰Π΅ сС ΡΠ²ΡŠΡ€Π·Π²Π°ΠΌΠ΅ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‡Ρ€Π΅Π· Ρ‚ΠΎΠ·ΠΈ IP адрСс ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ (Π°Π· Ρ‰Π΅ сС ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π°ΠΌ Π½Π° Π½Π΅Π³ΠΎ ΠΊΠ°Ρ‚ΠΎ EXTERNAL-IP), Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π·Π° удобство Ρ‰Π΅ запишСм стойността Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°:

$ EXTERNAL_IP=$(kubectl get svc -n istio-system 
  -l app=istio-ingressgateway 
  -o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}')

Ако ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΄Π° Π²Π»Π΅Π·Π΅Ρ‚Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ IP адрСс ΠΏΡ€Π΅Π· Π±Ρ€Π°ΡƒΠ·ΡŠΡ€, Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° Service Unavailable, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Istio Π±Π»ΠΎΠΊΠΈΡ€Π° цСлия входящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ бъдС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Gateway.

РСсурс Gateway

Gateway Π΅ CRD (Custom Resource Definition) Π² Kubernetes, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ слСд инсталиранС Π½Π° Istio Π² кластСра ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‰ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΡƒΠΊΠ°Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈ хостовС, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ искамС Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ входящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

Π’ нашия случай искамС Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ HTTP Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° ΠΏΠΎΡ€Ρ‚ 80 Π·Π° всички хостовС. Π—Π°Π΄Π°Ρ‡Π°Ρ‚Π° сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° с слСдното ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (http-gateway.yaml):

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: http-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
- "*"

Π’Π°Π·ΠΈ конфигурация Π½Π΅ изисква обяснСния, освСн сСлСктора istio: ingressgateway. Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ‚ΠΎΠ·ΠΈ сСлСктор ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° посочим, Π½Π° ΠΊΠΎΠΉ Ingress Gateway Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ конфигурацията. Π’ нашия случай Ρ‚ΠΎΠ²Π° Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€Π° Ingress Gateway, ΠΊΠΎΠΉΡ‚ΠΎ бСшС инсталиран ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π² Istio.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π° с ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ kubectl apply -f resource-manifests/istio/http-gateway.yaml gateway.networking.istio.io/http-gateway created

Π‘Π΅Π³Π° ΡˆΠ»ΡŽΠ·ΡŠΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠΎΡ€Ρ‚ 80, Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅ накъдС Π΄Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π° заявкитС. Π—Π° Ρ‚ΠΎΠ²Π° са Π½ΡƒΠΆΠ½ΠΈ Virtual Services.

РСсурс VirtualService

VirtualService ΡƒΠΊΠ°Π·Π²Π° Π½Π° Ingress Gateway ΠΊΠ°ΠΊ Π΄Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π° заявкитС, ΠΊΠΎΠΈΡ‚ΠΎ са Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

ЗаявкитС към Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π°Ρ‰ΠΈ ΠΏΡ€Π΅Π· http-gateway, трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ насочСни към услугитС sa-frontend, sa-web-app ΠΈ sa-feedback:

Назад към микросСрвиситС с Istio. Част 1
ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ настроСни с VirtualServices

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ заявкитС, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° сС насочват към SA-Frontend:

  • Π’ΠΎΡ‡Π½ΠΎ съвпадСниС ΠΏΠΎ ΠΏΡŠΡ‚Ρ / трябва Π΄Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π² SA-Frontend Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° index.html;
  • ΠŸΡŠΡ‚ΠΈΡ‰Π°Ρ‚Π° с прСфикс /static/* трябва Π΄Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ Π² SA-Frontend Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° статични Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ във Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°, ΠΊΠ°Ρ‚ΠΎ CSS ΠΈ JavaScript;
  • ΠŸΡŠΡ‚ΠΈΡ‰Π°, ΠΏΠΎΠΏΠ°Π΄Π°Ρ‰ΠΈ ΠΏΠΎΠ΄ рСгулярното ΠΈΠ·Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ '^.*.(ico|png|jpg)$', трябва Π΄Π° сС насочват Π² SA-Frontend, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° са ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈΡ‚Π΅, ΠΏΠΎΠΊΠ°Π·Π²Π°Π½ΠΈ Π½Π° страницата.

РСализацията сС постига с слСдната конфигурация (sa-virtualservice-external.yaml):

Π²ΠΈΠ΄: VirtualService
ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ:
  ΠΈΠΌΠ΅: sa-external-services
спСцификация:
  хостовС:
  - "*"
  шлюзовС:
  - http-gateway                      # 1
  http:
  - ΠΌΠ°Ρ‡:
    - uri:
        Ρ‚ΠΎΡ‡Π½ΠΎ: \/
    - uri:
        Ρ‚ΠΎΡ‡Π½ΠΎ: \/callback
    - uri:
        прСфикс: \/static
    - uri:
        рСгСкс: '^.*.(ico|png|jpg)

Π’Π°ΠΆΠ½ΠΎ:

  1. Π’ΠΎΠ·ΠΈ VirtualService сС отнася Π·Π° заявкитС, ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π°Ρ‰ΠΈ Ρ‡Ρ€Π΅Π· http-gateway;
  2. Π’ дСстинация опрСдСлява сС услугата, към която сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ заявкитС.
Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Ρ„Π°ΠΉΠ»Π° sa-virtualservice-external.yaml, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‰ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° настройки Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ Π² SA-WebApp ΠΈ SA-Feedback, Π½ΠΎ Π΅ ΡΡŠΠΊΡ€Π°Ρ‚Π΅Π½ Ρ‚ΡƒΠΊ Π² статията Π·Π° сбитост. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ VirtualService с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:
$ kubectl apply -f resource-manifests/istio/sa-virtualservice-external.yaml
virtualservice.networking.istio.io/sa-external-services създадСн

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ рСсурситС Π½Π° Istio, Kubernetes API ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ създава ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Istio Control Plane, ΠΈ слСд Ρ‚ΠΎΠ²Π° Π½ΠΎΠ²Π°Ρ‚Π° конфигурация сС ΠΏΡ€ΠΈΠ»Π°Π³Π° към прокси ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Envoy Π½Π° всСки pod. А ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ Π½Π° Ingress Gateway сС прСдставя с Π΄Ρ€ΡƒΠ³ Envoy, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π² Control Plane. Всичко Ρ‚ΠΎΠ²Π° Π² схСмата ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

Назад към микросСрвиситС с Istio. Част 1
ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π½Π° Istio-IngressGateway Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° заявкитС

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Sentiment Analysis стана Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ Π½Π° http://{EXTERNAL-IP}/. НС сС притСснявайтС, Π°ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ статус Not Found: понякога Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²Ρ€Π΅ΠΌΠ΅, Π·Π° Π΄Π° Π²Π»Π΅Π·Π΅ конфигурацията Π² сила ΠΈ ΠΊΠ΅ΡˆΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Envoy Π΄Π° сС обновят.

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅, ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π΅Ρ‚Π΅ ΠΌΠ°Π»ΠΊΠΎ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π·Π° Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° визуализацията Π² послСдващитС дСйствия β€” Π±Π΅Π». Ρ€Π΅Π΄.).

Kialiβ€Š: Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚

Π—Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ административния интСрфСйс Π½Π° Kiali, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ kubectl port-forward 
    $(kubectl get pod -n istio-system -l app=kiali 
    -o jsonpath='{.items[0].metadata.name}') 
    -n istio-system 20001

… ΠΈ ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ http://localhost:20001/, Π»ΠΎΠ³Π²Π°ΠΉΠΊΠΈ сС с admin/admin. Π’ΡƒΠΊ Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ мноТСство ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° конфигурацията Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Istio, визуализация Π½Π° услугитС Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° информация, ΡΡŠΠ±Ρ€Π°Π½Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ заявки, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈΡ‚Π΅ "Кой с ΠΊΠΎΠ³ΠΎ сС ΡΠ²ΡŠΡ€Π·Π²Π°?", "ΠŸΡ€ΠΈ коя вСрсия Π½Π° услугата сС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ Π³Ρ€Π΅ΡˆΠΊΠΈ?" ΠΈ Ρ‚.Π½. Π’ ΠΎΠ±Ρ‰ΠΈ Π»ΠΈΠ½ΠΈΠΈ, Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Kiali, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅ β€” към визуализацията Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈΡ‚Π΅ с Grafana.

Назад към микросСрвиситС с Istio. Част 1

Grafana: визуализация Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈΡ‚Π΅

Π‘ΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ Π² Istio ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄Π° Π² Prometheus ΠΈ сС Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ с Grafana. Π—Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ административния интСрфСйс Π½Π° Grafana, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ http://localhost:3000/:

$ kubectl -n istio-system port-forward 
    $(kubectl -n istio-system get pod -l app=grafana 
    -o jsonpath={.items[0].metadata.name}) 3000

Π©Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ ΠΌΠ΅Π½ΡŽΡ‚ΠΎ Home вляво Π³ΠΎΡ€Π΅ ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Istio Service Dashboard Π² лСвия Π³ΠΎΡ€Π΅Π½ ъгъл, Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ със услугата sa-web-app, Π·Π° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ:

Назад към микросСрвиситС с Istio. Част 1

Π’ΡƒΠΊ Π½ΠΈ ΠΎΡ‡Π°ΠΊΠ²Π° ΠΏΡ€Π°Π·Π½ΠΎ ΠΈ напълно скучно прСдставянС β€” Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π° няма Π΄Π° ΠΎΠ΄ΠΎΠ±Ρ€ΠΈ Ρ‚Π°ΠΊΠΎΠ²Π°. НСка създадСм извСстСн Ρ‚ΠΎΠ²Π°Ρ€ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

$ while true; do 
    curl -i http://$EXTERNAL_IP/sentiment 
    -H "Content-type: application/json" 
    -d '{"sentence": "ΠžΠ±ΠΈΡ‡Π°ΠΌ ΠΉΠΎΠ³ΠΎΠ±Π΅Π»Π°"}'; 
    sleep .8; done

Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»Π½ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Π° Π² допълнСниС Π½Π° тях β€” страхотни инструмСнти Prometheus Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Grafana Π·Π° визуализация Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π½ΠΈ позволят Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ производитСлността, ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π·Π΄Ρ€Π°Π²Π΅Ρ‚ΠΎ ΠΈ подобрСнията/Π²Π»ΠΎΡˆΠ΅Π½ΠΈΡΡ‚Π° Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° услугитС ΠΏΡ€Π΅Π· Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ.

Накрая, Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ трасировкитС Π½Π° заявкитС Π² услугитС.

Jaeger: трасировка

Врасировката Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ услуги ΠΈΠΌΠ°ΠΌΠ΅, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ става Π΄Π° стигнСм Π΄ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° ΠΏΠΎΠ²Ρ€Π΅Π΄Π°Ρ‚Π°. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ прост случай ΠΎΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

Назад към микросСрвиситС с Istio. Част 1
Π’ΠΈΠΏΠΈΡ‡Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° случайно Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Π° заявка

Заявката ΠΈΠ΄Π²Π°, ΠΏΠ°Π΄Π° β€” Π² ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π°? ΠŸΡŠΡ€Π²Π°Ρ‚Π° услуга? Или Π²Ρ‚ΠΎΡ€Π°Ρ‚Π°? И Π² Π΄Π²Π΅Ρ‚Π΅ ΠΈΠΌΠ° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ β€” Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° всяка. Колко чСсто стС сС улавяли Π² Ρ‚Π°ΠΊΠΎΠ²Π° занятиС? ΠΠ°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° наподобява Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° софтуСрни Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΠ²ΠΈ, Π° Π½Π΅ Π½Π° разработчици…

Π’ΠΎΠ²Π° Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ разпространСн ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² микросСрвиситС ΠΈ сС Ρ€Π΅ΡˆΠ°Π²Π° Ρ‡Ρ€Π΅Π· Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ систСми Π·Π° трасировка, Π² ΠΊΠΎΠΈΡ‚ΠΎ услугитС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ информация сС прСнасочва към систСмата Π·Π° трасировка, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ тя сС ΡΡŠΠΏΠΎΡΡ‚Π°Π²Ρ с Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° заявката. Π•Ρ‚ΠΎ ΠΈΠ»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ:

Назад към микросСрвиситС с Istio. Част 1
Π—Π° идСнтификация Π½Π° заявката сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° TraceId

Π’ Istio сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Jaeger Tracer, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° нСзависим ΠΎΡ‚ доставчика Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ OpenTracing API. Π—Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ потрСбитСлския интСрфСйс Π½Π° Jaeger ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ kubectl port-forward -n istio-system 
    $(kubectl get pod -n istio-system -l app=jaeger 
    -o jsonpath='{.items[0].metadata.name}') 16686

Π‘Π΅Π³Π° Π²Π»Π΅Π·Ρ‚Π΅ Π² http://localhost:16686/ ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ услугата sa-web-app. Ако услугата Π½Π΅ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π² ΠΏΠ°Π΄Π°Ρ‰ΠΎΡ‚ΠΎ мСню β€” ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Ρ‚Π΅/ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ активност Π½Π° страницата ΠΈ ΠΎΠ±Π½ΠΎΠ²Π΅Ρ‚Π΅ интСрфСйса. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° натиснСтС Π±ΡƒΡ‚ΠΎΠ½Π° Find Traces, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡ‚Π΅ трасировки β€” ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ всяка β€” Ρ‰Π΅ сС ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π° информация Π·Π° всички трасировки:

Назад към микросСрвиситС с Istio. Част 1

Π’Π°Π·ΠΈ трасировка ΠΏΠΎΠΊΠ°Π·Π²Π°:

  1. Заявката пристига Π² istio-ingressgateway (Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ взаимодСйствиС с Π΅Π΄Π½Π° ΠΎΡ‚ услугитС, ΠΈ Π·Π° заявката сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Trace ID), слСд ΠΊΠΎΠ΅Ρ‚ΠΎ ΡˆΠ»ΡŽΠ·ΡŠΡ‚ насочва заявката към услугата sa-web-app.
  2. Π’ услугата sa-web-app заявката сС ΠΏΠΎΠ΅ΠΌΠ° ΠΎΡ‚ Envoy sidecar, създава сС β€žΠ΄Π΅Ρ‚Π΅β€œ Π² span (ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ‚ΠΎΠ²Π° Π³ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π² трасировкитС) ΠΈ сС прСнасочва към ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° sa-web-app. (Span β€” логичСска Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² Jaeger, която ΠΈΠΌΠ° ΠΈΠΌΠ΅, Π½Π°Ρ‡Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° опСрацията ΠΈ Π½Π΅ΠΉΠ½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚. Span'ΠΎΠ²Π΅Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΈ ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ. ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈΡΡ‚ Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅Π½ Π³Ρ€Π°Ρ„ ΠΎΡ‚ span'ΠΎΠ²Π΅ ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° trace. β€” ΠΏΡ€ΠΈΠΌ. Π±Π΅Π».)
  3. Π’ΡƒΠΊ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Ρ‡Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° sentimentAnalysis. Π’Π΅Π·ΠΈ трасСта Π²Π΅Ρ‡Π΅ са Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚.Π΅. Π·Π° тях бяха Π½ΡƒΠΆΠ½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°.
  4. Π’ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ сС ΠΈΠ½ΠΈΡ†ΠΈΡ€Π° POST-Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π² sa-logic. Trace ID трябва Π΄Π° бъдС ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ ΠΎΡ‚ sa-web-app.
  5. …

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: На 4 ΡΡ‚ΡŠΠΏΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ трябва Π΄Π° Π²ΠΈΠ΄ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅, Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ Istio, ΠΈ Π΄Π° Π³ΠΈ ΠΏΡ€Π΅Π΄Π°Π΄Π΅ Π½Π° слСдващи запитвания, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

Назад към микросСрвиситС с Istio. Част 1
(A) Π—Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ отговаря Istio; (B) Π—Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ отговарят услугитС

Istio ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° основната Ρ€Π°Π±ΠΎΡ‚Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈ Π·Π° входящитС запитвания, създава Π½ΠΎΠ²ΠΈ span'ΠΎΠ²Π΅ във всСки sidecar ΠΈ Π³ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‚Π° с Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ Π² услугитС, ΠΏΡŠΠ»Π½ΠΈΡΡ‚ ΠΏΡŠΡ‚ Π½Π° трасировката Π½Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Ρ‰Π΅ бъдС Π·Π°Π³ΡƒΠ±Π΅Π½.

НСобходимо Π΅ Π΄Π° сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ (ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚) слСднитС Π·Π°Π³Π»Π°Π²ΠΊΠΈ:

x-request-id
x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
x-ot-span-context

Π’Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ Π΅ слоТна, ΠΎΠ±Π°Ρ‡Π΅ Π·Π° улСснСниС Π½Π° Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ изпълнСниС Π²Π΅Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² услугата sa-web-app ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ RestTemplate ΠΏΡ€Π΅Π΄Π°Π²Π° Ρ‚Π΅Π·ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈ, Π°ΠΊΠΎ просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Jaeger ΠΈ OpenTracing Π² Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ зависимости.

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Sentiment Analysis дСмонстрира Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Flask, Spring ΠΈ ASP.NET Core.

Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стана ясно ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΎΡ‚ кутията (ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Β«ΠΎΡ‚ кутията»), Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡŠΠΏΡ€ΠΎΡΠΈΡ‚Π΅ с Ρ„ΠΈΠ½ΠΎ настроСна ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° мрСТовия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, сигурност ΠΈ Ρ‚.Π½.!

ΠŸΡ€ΠΈΠΌ. ΠΏΡ€Π΅Π².: ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π·Π° Ρ‚ΠΎΠ²Π° Π² слСдващата част ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΡ‚Π΅ ΠΏΠΎ Istio ΠΎΡ‚ Rinor Maloku, ΠΏΡ€Π΅Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ послСдват Π² нашия Π±Π»ΠΎΠ³ Π² Π±Π»ΠΈΠ·ΠΊΠΎ Π±ΡŠΠ΄Π΅Ρ‰Π΅. UPDATE (14 ΠΌΠ°Ρ€Ρ‚): Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° част Π²Π΅Ρ‡Π΅ Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π°.

P.S. ΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄Π°Ρ‡Π°

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

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

route:
- destination:
host: sa-frontend # 2
port:
number: 80


Π’Π°ΠΆΠ½ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ:
  1. Π’ΠΎΠ·ΠΈ VirtualService сС отнася Π·Π° заявкитС, ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π°Ρ‰ΠΈ Ρ‡Ρ€Π΅Π· http-gateway;
  2. Π’ дСстинация опрСдСлява сС услугата, към която сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ заявкитС.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Ρ„Π°ΠΉΠ»Π° sa-virtualservice-external.yaml, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‰ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° настройки Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ Π² SA-WebApp ΠΈ SA-Feedback, Π½ΠΎ бСшС ΡΡŠΠΊΡ€Π°Ρ‚Π΅Π½ Ρ‚ΡƒΠΊ Π² статията Π·Π° краткост.

ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° VirtualService Ρ‡Ρ€Π΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅:

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°ΠΌΠ΅ рСсурситС Π½Π° Istio, Kubernetes API Server създава ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Istio Control Plane, ΠΈ слСд Ρ‚ΠΎΠ²Π° Π½ΠΎΠ²Π°Ρ‚Π° конфигурация сС ΠΏΡ€ΠΈΠ»Π°Π³Π° към прокси ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Envoy Π½Π° всСки pod. А ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΡŠΡ‚ Ingress Gateway сС прСдставя ΠΊΠ°Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ Envoy, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π² Control Plane. Всичко Ρ‚ΠΎΠ²Π° Π½Π° схСмата ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

Назад към микросСрвиситС с Istio. Част 1
ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π½Π° Istio-IngressGateway Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° заявкитС

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Sentiment Analysis стана Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ Π½Π° http://{EXTERNAL-IP}/. НС сС притСснявайтС, Π°ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ статус Not Found: понякога Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²Ρ€Π΅ΠΌΠ΅, Π·Π° Π΄Π° Π²Π»Π΅Π·Π΅ конфигурацията Π² сила ΠΈ ΠΊΠ΅ΡˆΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Envoy Π΄Π° сС обновят.

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅, ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π΅Ρ‚Π΅ ΠΌΠ°Π»ΠΊΠΎ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π·Π° Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° визуализацията Π² послСдващитС дСйствия β€” Π±Π΅Π». Ρ€Π΅Π΄.).

Kialiβ€Š: Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚

Π—Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ административния интСрфСйс Π½Π° Kiali, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

… ΠΈ ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ http://localhost:20001/, Π»ΠΎΠ³Π²Π°ΠΉΠΊΠΈ сС с admin/admin. Π’ΡƒΠΊ Ρ‰Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ мноТСство ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° конфигурацията Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Istio, визуализация Π½Π° услугитС Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° информация, ΡΡŠΠ±Ρ€Π°Π½Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ заявки, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈΡ‚Π΅ "Кой с ΠΊΠΎΠ³ΠΎ сС ΡΠ²ΡŠΡ€Π·Π²Π°?", "ΠŸΡ€ΠΈ коя вСрсия Π½Π° услугата сС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ Π³Ρ€Π΅ΡˆΠΊΠΈ?" ΠΈ Ρ‚.Π½. Π’ ΠΎΠ±Ρ‰ΠΈ Π»ΠΈΠ½ΠΈΠΈ, Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Kiali, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅ β€” към визуализацията Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈΡ‚Π΅ с Grafana.

Назад към микросСрвиситС с Istio. Част 1

Grafana: визуализация Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈΡ‚Π΅

Π‘ΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ Π² Istio ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄Π° Π² Prometheus ΠΈ сС Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ с Grafana. Π—Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ административния интСрфСйс Π½Π° Grafana, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ http://localhost:3000/:

Π©Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ ΠΌΠ΅Π½ΡŽΡ‚ΠΎ Home вляво Π³ΠΎΡ€Π΅ ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Istio Service Dashboard Π² лСвия Π³ΠΎΡ€Π΅Π½ ъгъл, Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ със услугата sa-web-app, Π·Π° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ:

Назад към микросСрвиситС с Istio. Част 1

Π’ΡƒΠΊ Π½ΠΈ ΠΎΡ‡Π°ΠΊΠ²Π° ΠΏΡ€Π°Π·Π½ΠΎ ΠΈ напълно скучно прСдставянС β€” Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π° няма Π΄Π° ΠΎΠ΄ΠΎΠ±Ρ€ΠΈ Ρ‚Π°ΠΊΠΎΠ²Π°. НСка създадСм извСстСн Ρ‚ΠΎΠ²Π°Ρ€ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»Π½ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Π° Π² допълнСниС Π½Π° тях β€” страхотни инструмСнти Prometheus Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Grafana Π·Π° визуализация Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π½ΠΈ позволят Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ производитСлността, ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π·Π΄Ρ€Π°Π²Π΅Ρ‚ΠΎ ΠΈ подобрСнията/Π²Π»ΠΎΡˆΠ΅Π½ΠΈΡΡ‚Π° Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° услугитС ΠΏΡ€Π΅Π· Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ.

Накрая, Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ трасировкитС Π½Π° заявкитС Π² услугитС.

Jaeger: трасировка

Врасировката Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ услуги ΠΈΠΌΠ°ΠΌΠ΅, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ става Π΄Π° стигнСм Π΄ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° ΠΏΠΎΠ²Ρ€Π΅Π΄Π°Ρ‚Π°. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ прост случай ΠΎΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

Назад към микросСрвиситС с Istio. Част 1
Π’ΠΈΠΏΠΈΡ‡Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° случайно Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Π° заявка

Заявката ΠΈΠ΄Π²Π°, ΠΏΠ°Π΄Π° β€” Π² ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π°? ΠŸΡŠΡ€Π²Π°Ρ‚Π° услуга? Или Π²Ρ‚ΠΎΡ€Π°Ρ‚Π°? И Π² Π΄Π²Π΅Ρ‚Π΅ ΠΈΠΌΠ° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ β€” Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° всяка. Колко чСсто стС сС улавяли Π² Ρ‚Π°ΠΊΠΎΠ²Π° занятиС? ΠΠ°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° наподобява Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° софтуСрни Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΠ²ΠΈ, Π° Π½Π΅ Π½Π° разработчици…

Π’ΠΎΠ²Π° Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ разпространСн ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² микросСрвиситС ΠΈ сС Ρ€Π΅ΡˆΠ°Π²Π° Ρ‡Ρ€Π΅Π· Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ систСми Π·Π° трасировка, Π² ΠΊΠΎΠΈΡ‚ΠΎ услугитС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ информация сС прСнасочва към систСмата Π·Π° трасировка, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ тя сС ΡΡŠΠΏΠΎΡΡ‚Π°Π²Ρ с Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° заявката. Π•Ρ‚ΠΎ ΠΈΠ»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ:

Назад към микросСрвиситС с Istio. Част 1
Π—Π° идСнтификация Π½Π° заявката сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° TraceId

Π’ Istio сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Jaeger Tracer, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° нСзависим ΠΎΡ‚ доставчика Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ OpenTracing API. Π—Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ потрСбитСлския интСрфСйс Π½Π° Jaeger ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

Π‘Π΅Π³Π° Π²Π»Π΅Π·Ρ‚Π΅ Π² http://localhost:16686/ ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ услугата sa-web-app. Ако услугата Π½Π΅ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π² ΠΏΠ°Π΄Π°Ρ‰ΠΎΡ‚ΠΎ мСню β€” ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Ρ‚Π΅/ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ активност Π½Π° страницата ΠΈ ΠΎΠ±Π½ΠΎΠ²Π΅Ρ‚Π΅ интСрфСйса. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° натиснСтС Π±ΡƒΡ‚ΠΎΠ½Π° Find Traces, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡ‚Π΅ трасировки β€” ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ всяка β€” Ρ‰Π΅ сС ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π° информация Π·Π° всички трасировки:

Назад към микросСрвиситС с Istio. Част 1

Π’Π°Π·ΠΈ трасировка ΠΏΠΎΠΊΠ°Π·Π²Π°:

  1. Заявката пристига Π² istio-ingressgateway (Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ взаимодСйствиС с Π΅Π΄Π½Π° ΠΎΡ‚ услугитС, ΠΈ Π·Π° заявката сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Trace ID), слСд ΠΊΠΎΠ΅Ρ‚ΠΎ ΡˆΠ»ΡŽΠ·ΡŠΡ‚ насочва заявката към услугата sa-web-app.
  2. Π’ услугата sa-web-app Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ сС улавя ΠΎΡ‚ Envoy sidecar, създава сС "Π΄Π΅Ρ‚Π΅" Π² span (ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π² трасСта) ΠΈ сС прСнасочва към ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° sa-web-app. (Span β€” логичСска Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² Jaeger, ΠΈΠΌΠ°Ρ‰Π° ΠΈΠΌΠ΅, Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Π½Π° опСрацията ΠΈ Π½Π΅ΠΉΠ½Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚. Span-ΠΎΠ²Π΅Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΈ ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ. ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈΡΡ‚ Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅Π½ Π³Ρ€Π°Ρ„ ΠΎΡ‚ span-ΠΎΠ²Π΅ ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° trace. β€” Π±Π΅Π». ΠΏΡ€Π΅Π².)
  3. Π’ΡƒΠΊ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Ρ‡Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° sentimentAnalysis. Π’Π΅Π·ΠΈ трасСта Π²Π΅Ρ‡Π΅ са Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚.Π΅. Π·Π° тях бяха Π½ΡƒΠΆΠ½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°.
  4. Π’ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ сС ΠΈΠ½ΠΈΡ†ΠΈΡ€Π° POST-Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π² sa-logic. Trace ID трябва Π΄Π° бъдС ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ ΠΎΡ‚ sa-web-app.
  5. …

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: На 4 ΡΡ‚ΡŠΠΏΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ трябва Π΄Π° Π²ΠΈΠ΄ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅, Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ Istio, ΠΈ Π΄Π° Π³ΠΈ ΠΏΡ€Π΅Π΄Π°Π΄Π΅ Π½Π° слСдващи запитвания, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

Назад към микросСрвиситС с Istio. Част 1
(A) Π—Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ отговаря Istio; (B) Π—Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ отговарят услугитС

Istio ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° основната Ρ€Π°Π±ΠΎΡ‚Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° заглавия Π·Π° входящитС запитвания, създава Π½ΠΎΠ²ΠΈ span-ΠΎΠ²Π΅ Π² всСки sidecar ΠΈ Π³ΠΈ трансфСрира. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‚Π° с заглавията Π²ΡŠΡ‚Ρ€Π΅ Π² услугитС, ΠΏΡŠΠ»Π½ΠΈΡΡ‚ ΠΏΡŠΡ‚ Π½Π° трасировката Π½Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Ρ‰Π΅ бъдС Π·Π°Π³ΡƒΠ±Π΅Π½.

НСобходимо Π΅ Π΄Π° сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ (ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚) слСднитС Π·Π°Π³Π»Π°Π²ΠΊΠΈ:

Π’Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ Π΅ слоТна, ΠΎΠ±Π°Ρ‡Π΅ Π·Π° улСснСниС Π½Π° Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ изпълнСниС Π²Π΅Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² услугата sa-web-app ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ RestTemplate ΠΏΡ€Π΅Π΄Π°Π²Π° Ρ‚Π΅Π·ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈ, Π°ΠΊΠΎ просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Jaeger ΠΈ OpenTracing Π² Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ зависимости.

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Sentiment Analysis дСмонстрира Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Flask, Spring ΠΈ ASP.NET Core.

Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стана ясно ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΎΡ‚ кутията (ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Β«ΠΎΡ‚ кутията»), Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡŠΠΏΡ€ΠΎΡΠΈΡ‚Π΅ с Ρ„ΠΈΠ½ΠΎ настроСна ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° мрСТовия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, сигурност ΠΈ Ρ‚.Π½.!

ΠŸΡ€ΠΈΠΌ. ΠΏΡ€Π΅Π².: ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π·Π° Ρ‚ΠΎΠ²Π° Π² слСдващата част ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΡ‚Π΅ ΠΏΠΎ Istio ΠΎΡ‚ Rinor Maloku, ΠΏΡ€Π΅Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ послСдват Π² нашия Π±Π»ΠΎΠ³ Π² Π±Π»ΠΈΠ·ΠΊΠΎ Π±ΡŠΠ΄Π΅Ρ‰Π΅. UPDATE (14 ΠΌΠ°Ρ€Ρ‚): Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° част Π²Π΅Ρ‡Π΅ Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π°.

P.S. ΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄Π°Ρ‡Π°

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster