ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1

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

Π˜ΡΡ‚ΠΈΠΎ β€” ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π² ΡΡŠΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ с Π΅ΠΊΠΈΠΏΠΈ ΠΎΡ‚ Google, IBM ΠΈ Lyft. Π’ΠΎΠΉ Ρ€Π΅ΡˆΠ°Π²Π° слоТността, която възниква Π² прилоТСния, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° микроуслуги, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°Ρ‚ΠΎ:

  • ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°: ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ, балансиранС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ;
  • сигурност: удостовСряванС ΠΈ оторизация Π½Π° крайния ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»;
  • Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚: прослСдяванС, наблюдСниС, рСгистриранС.

Всички Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ слСд Ρ‚ΠΎΠ²Π° Π²Π°ΡˆΠΈΡ‚Π΅ услуги Π²Π΅Ρ‡Π΅ няма Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ "ΠΌΠΈΠΊΡ€ΠΎ". Всички Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ усилия Π·Π° справянС с Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ са Π·Π°Π³ΡƒΠ±Π° Π½Π° Ρ„ΠΈΡ€ΠΌΠ΅Π½ΠΈ рСсурси, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π° бизнСс стойност. ΠŸΠΎΠΌΠΈΡΠ»Π΅Ρ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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

MP: Какво?.. Π’ΠΎΠ²Π° Π΅ просто Π“Π›Π£ΠŸΠžΠ‘Π’!
R: ΠŸΡ€Π°Π²Π΅Π½Π΅Ρ‚ΠΎ Π½Π° CRUD Π΅ лСсната част ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°, Π½ΠΎ всС ΠΎΡ‰Π΅ трябва Π΄Π° удостовСрявамС ΠΈ ΠΎΡ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΈ услуги. Въй ΠΊΠ°Ρ‚ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π΅ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½Π°, Ρ‰Π΅ трябва Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ повтарящи сС заявки, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Ρ‡Π° Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅. ОсвСн Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Π° стС сигурни, Ρ‡Π΅ цялата систСма Π½Π΅ сС Π΅ сринала, изчаквания ΠΈ ΠΏΡ€Π΅Π³Ρ€Π°Π΄ΠΈ (Π’ΠΈΠΆΡ‚Π΅ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ Π² статията Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ подробности относно Π΄Π²Π°Ρ‚Π° спомСнати ΠΌΠΎΠ΄Π΅Π»Π°.), ΠΈ Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, наблюдСниС, прослСдяванС, […]

MP: О, Π½Π΅ΠΊΠ° Ρ‚ΠΎΠ³Π°Π²Π° просто поставим Ρ‚Π°Π·ΠΈ функция Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Π°Ρ‚Π° услуга.

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

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1

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

Istio идСя

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

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1
ΠœΡ€Π΅ΠΆΠΎΠ² Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² Kubernetes

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

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

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

АрхитСктура

Istio ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π° цСлия ΠΌΡ€Π΅ΠΆΠΎΠ² Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° към Π½Π΅Π³ΠΎ, ΠΊΠ°Ρ‚ΠΎ вмъква ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΎ прокси ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с кош във всСки ΠΏΠΎΠ΄. ΠŸΡ€ΠΎΠΊΡΠΈΡ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚ всички Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ, ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚ a Π Π°Π²Π½ΠΈΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΈ Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΈ с ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ€Π°Π²Π½ΠΈΠ½Π°.

Π Π°Π²Π½ΠΈΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈ

ΠŸΡ€ΠΎΠΊΡΠΈΡ‚Π°Ρ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ са Π²ΠΌΡŠΠΊΠ½Π°Ρ‚ΠΈ Π² ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅, позволяват Π½Π° Istio лСсно Π΄Π° постигнС изискванията, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ. НапримСр, Π½Π΅ΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈΡ‚Π΅ ΠΎΠΏΠΈΡ‚ΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Ρ‡Π°.

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1
Как сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΈΡ‚Π΅ ΠΎΠΏΠΈΡ‚ΠΈ ΠΈ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° Π² Envoy

Π—Π° Π΄Π° ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΠΌ:

  1. ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈΠΊ (Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° прокси, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с кош, ΠΊΠΎΠΉΡ‚ΠΎ сС разпространява ΠΈ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ - ΠΏΡ€ΠΈΠ±Π». ΠΏΡ€Π΅Π²ΠΎΠ΄) ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° заявка Π΄ΠΎ ΠΏΡŠΡ€Π²Π°Ρ‚Π° инстанция Π½Π° услуга B ΠΈ Π½Π΅ успява.
  2. Envoy Sidecar ΠΎΠΏΠΈΡ‚Π²Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ (ΠΎΠΏΠΈΡ‚Π°ΠΉ ΠΎΡ‚Π½ΠΎΠ²ΠΎ). (1)
  3. ΠΠ΅ΡƒΡΠΏΠ΅ΡˆΠ½Π°Ρ‚Π° заявка сС Π²Ρ€ΡŠΡ‰Π° Π½Π° проксито, ΠΊΠΎΠ΅Ρ‚ΠΎ я Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π»ΠΎ.
  4. Π’ΠΎΠ²Π° отваря ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Ρ‡Π° ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π° слСдващата услуга Π·Π° послСдващи заявки. (2)

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

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

И накрая ΠΏΠΈΡ‚Π°Ρ‚Π΅: β€žΠœΠΎΠΆΠ΅ Π»ΠΈ Π΄Π° сС пСрсонализира?β€œ

Π‘Π΅Π³Π° стС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° морско ΠΏΡŠΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ - ΠΈ Π½Π΅ΠΊΠ° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ с контролния самолСт.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ€Π°Π²Π½ΠΈΠ½Π°

Π‘ΡŠΡΡ‚ΠΎΠΈ сС ΠΎΡ‚ Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°: ΠŸΠΈΠ»ΠΎΡ‚, ΠœΠΈΠΊΡΠ΅Ρ€ ΠΈ Π¦ΠΈΡ‚Π°Π΄Π΅Π»Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π·Π°Π΅Π΄Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚ Envoys Π΄Π° насочват Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, Π΄Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ Π΄Π° ΡΡŠΠ±ΠΈΡ€Π°Ρ‚ Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ. Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ всичко ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1
ВзаимодСйствиС Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ€Π°Π²Π½ΠΈΠ½Π° с Ρ€Π°Π²Π½ΠΈΠ½Π°Ρ‚Π° Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅

Envoys (Ρ‚.Π΅. Ρ€Π°Π²Π½ΠΈΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈ) сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚ с Kubernetes CRD (Π”Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π½Π° пСрсонализирани рСсурси), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΡ‚ Istio ΠΈ спСциално ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ΠΈ Π·Π° Ρ‚Π°Π·ΠΈ Ρ†Π΅Π». Π—Π° вас Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Ρ‚Π΅ са просто ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ рСсурс Π² Kubernetes с ΠΏΠΎΠ·Π½Π°Ρ‚ синтаксис. Π’Π΅Π΄Π½ΡŠΠΆ създадСн, Ρ‚ΠΎΠ·ΠΈ рСсурс Ρ‰Π΅ бъдС Π²Π·Π΅Ρ‚ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ€Π°Π²Π½ΠΈΠ½Π° ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ към Envoys.

Π’Ρ€ΡŠΠ·ΠΊΠ° Π½Π° услугитС с Istio

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

ЧСстно ΠΊΠ°Π·Π°Π½ΠΎ, слуТбитС знаят Π·Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° Istio, ΠΊΠ°ΠΊΡ‚ΠΎ Ρ€ΠΈΠ±ΠΈΡ‚Π΅ знаят Π·Π° Π²ΠΎΠ΄Π°Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΏΠΈΡ‚Π°Ρ‚: β€žΠšΠ°ΠΊΠ²ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅ Π²ΠΎΠ΄Π°Ρ‚Π°?β€œ

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1
ΠΈΠ»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Виктория Димитракопулос: Как Π²ΠΈ харСсва Π²ΠΎΠ΄Π°Ρ‚Π°? - Какво ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π΅ Π²ΠΎΠ΄Π°Ρ‚Π°?

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

Π‘Ρ‚ΠΈΠ³Π° тСория - Π½Π΅ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ Ρ‚Π΅Π·ΠΈ знания Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°!

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

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

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ настроитС Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ Kubernetes Ρ‡Ρ€Π΅Π· ΠΊΠΎΠ½Π·ΠΎΠ»Π½Π°Ρ‚Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС Istio Ρ‡Ρ€Π΅Π· ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Helm.

ΠœΠΎΠ½Ρ‚Π°ΠΆ Π½Π° ΠΊΠΎΡ€ΠΌΠΈΠ»ΠΎΡ‚ΠΎ

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Helm Π½Π° вашия ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ описано Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° докумСнтация. Π©Π΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° шаблони Π·Π° инсталиранС Π½Π° 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 инсталиран Π² false (Ρ‚.Π΅. mTLS удостовСряванСто Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ - ΠΏΡ€ΠΈΠ±Π». ΠΏΡ€Π΅Π².)Π·Π° Π΄Π° опростим нашия процСс Π½Π° запознанства;
  • tracing.enabled позволява прослСдяванС Π½Π° заявки с Jaeger;
  • kiali.enabled инсталира Kiali Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π·Π° Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° услуги ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ;
  • grafana.enabled инсталира Grafana Π·Π° Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

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

$ kubectl apply -f istio.yaml

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Istio Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ! Π˜Π·Ρ‡Π°ΠΊΠ°ΠΉΡ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° istio-system Ρ‰Π΅ бъдС Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Running ΠΈΠ»ΠΈ CompletedΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ:

$ kubectl get pods -n istio-system

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

АрхитСктура Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° настроСниСто

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

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ микроуслуги:

  1. ΠžΠ±ΡΠ»ΡƒΠΆΠ²Π°Π½Π΅ SA-Frontend, ΠΊΠΎΠΉΡ‚ΠΎ обслуТва ΠΏΡ€Π΅Π΄Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Reactjs;
  2. ΠžΠ±ΡΠ»ΡƒΠΆΠ²Π°Π½Π΅ SA ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠΉΡ‚ΠΎ обслуТва заявки Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° настроСниСто;
  3. ΠžΠ±ΡΠ»ΡƒΠΆΠ²Π°Π½Π΅ SA Логикакоято изпълнява сама Π°Π½Π°Π»ΠΈΠ· Π½Π° настроСнията;
  4. ΠžΠ±ΡΠ»ΡƒΠΆΠ²Π°Π½Π΅ SA ΠžΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΎΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π·Π° точността Π½Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·.

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1

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

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

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

ΠŸΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° ΠΊΠΎΡˆΡ‡Π΅Ρ‚Π°

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

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

Π‘Π΅Π³Π° всяка Π³Ρ€ΡƒΠΏΠ°, която Ρ‰Π΅ бъдС Π²Π½Π΅Π΄Ρ€Π΅Π½Π° Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ (default) Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ своя ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с кош. Π—Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ‚ΠΎΠ²Π°, Π½Π΅ΠΊΠ° Π²Π½Π΅Π΄Ρ€ΠΈΠΌ тСстово ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π² основната дирСктория Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ [istio-mastery] ΠΈ стартиранС Π½Π° слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ 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

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ услугитС, ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ капсулитС ΠΈΠΌΠ°Ρ‚ Π΄Π²Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (със самата услуга ΠΈ нСйния кош), ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° 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

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

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1
ΠŸΡ€Π°Ρ‚Π΅Π½ΠΈΠΊ ΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ Π² Π΅Π΄ΠΈΠ½ ΠΎΡ‚ подс

Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ, трябва Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ Π½Π° входящия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π΄Π° Π²Π»Π΅Π·Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Ingress Gateway

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

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΡŠΡ‚ 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 Π΅ 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, Π½ΠΎ няма прСдстава къдС Π΄Π° насочва заявкитС. Π—Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π²ΠΈ трябва Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ услуги.

РСсурс Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° услуга

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):

kind: VirtualService
metadata:
  name: sa-external-services
spec:
  hosts:
  - "*"
  gateways:
  - http-gateway                      # 1
  http:
  - match:
    - uri:
        exact: /
    - uri:
        exact: /callback
    - uri:
        prefix: /static
    - uri:
        regex: '^.*.(ico|png|jpg)

Π’Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

  1. Π­Ρ‚ΠΎΡ‚ VirtualService относится ΠΊ запросам, приходящим Ρ‡Π΅Ρ€Π΅Π· http-gateway;
  2. Π’ destination опрСдСляСтся сСрвис, ΠΊΡƒΠ΄Π° ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ запросы.
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π²Ρ‹ΡˆΠ΅ хранится Π² Ρ„Π°ΠΉΠ»Π΅ 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 created

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Когда ΠΌΡ‹ примСняСм рСсурсы 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, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ 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": "I love yogobella"}'; 
    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'Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ sidecare'Π΅ ΠΈ пробрасываСт ΠΈΡ…. Однако Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСрвисов ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ трассировки запроса Π±ΡƒΠ΄Π΅Ρ‚ утСрян.

НСобходимо ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ (ΠΏΡ€ΠΎΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ) ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ:

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-шлюз;
  2. Π’ destination Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° услугата, към която сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ заявкитС.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π“ΠΎΡ€Π½Π°Ρ‚Π° конфигурация сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° във Ρ„Π°ΠΉΠ» sa-virtualservice-external.yaml, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‰ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° настройки Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ към SA-WebApp ΠΈ SA-Feedback, Π½ΠΎ Π΅ ΡΡŠΠΊΡ€Π°Ρ‚Π΅Π½ Ρ‚ΡƒΠΊ Π² статията Π·Π° краткост.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Ρ‚Π΅ VirtualService, ΠΊΠ°Ρ‚ΠΎ сС ΠΎΠ±Π°Π΄ΠΈΡ‚Π΅ Π½Π°:


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

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1
Istio-IngressGateway конфигурация Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° заявка

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

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

Киали: Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚

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


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

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1

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

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


ΠšΠ°Ρ‚ΠΎ Ρ‰Ρ€Π°ΠΊΠ½Π΅Ρ‚Π΅ Π²ΡŠΡ€Ρ…Ρƒ ΠΌΠ΅Π½ΡŽΡ‚ΠΎ Начало Π³ΠΎΡ€Π΅ вляво ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π’Π°Π±Π»ΠΎ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° услугата Istio Π² горния ляв ъгъл Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ с обслуТванС sa-web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ:

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1

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


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

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

Π™Π΅Π³Π΅Ρ€: прослСдяванС

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

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

Π˜ΡΠΊΠ°Π½Π΅Ρ‚ΠΎ ΠΈΠ΄Π²Π°, ΠΏΠ°Π΄Π° - ΠΊΠ°ΠΊΠ²Π° Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π°? ΠŸΡŠΡ€Π²ΠΈ сСрвиз? Или Π²Ρ‚ΠΎΡ€ΠΎ? И Π² Π΄Π²Π°Ρ‚Π° ΠΈΠΌΠ° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ - Π½Π΅ΠΊΠ° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° всСки. Колко чСсто стС сС Ρ…Π²Π°Ρ‰Π°Π»ΠΈ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°? ΠΠ°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠ°Ρ‚ΠΎ софтуСрни Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΠ²ΠΈ, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ...

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

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1
TraceId сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° заявката

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


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

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1

Вази слСда показва:

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

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

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ към микроуслугитС с Istio. Част 1
(A) ΠŸΡ€Π΅ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π΅ отговорност Π½Π° Istio; (B) УслугитС отговарят Π·Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅

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

Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Π·Π°Π³Π»Π°Π²ΠΊΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²Π·Π΅Ρ‚ΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ (ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ):


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

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

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

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ΠΏΡ€Π΅Π²ΠΎΠ΄: ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π·Π° Ρ‚ΠΎΠ²Π° Π² слСдващата част ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΡ‚Π΅ Π½Π° Istio ΠΎΡ‚ Π ΠΈΠ½ΠΎΡ€ ΠœΠ°Π»ΠΎΠΊΡƒ, Ρ‡ΠΈΠΈΡ‚ΠΎ ΠΏΡ€Π΅Π²ΠΎΠ΄ΠΈ Ρ‰Π΅ послСдват Π² нашия Π±Π»ΠΎΠ³ Π² Π±Π»ΠΈΠ·ΠΊΠΎ Π±ΡŠΠ΄Π΅Ρ‰Π΅. ΠΠšΠ’Π£ΠΠ›Π˜Π—ΠΠ¦Π˜Π― (14 ΠΌΠ°Ρ€Ρ‚): Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° част Π²Π΅Ρ‡Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ.

PS ΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄Π°Ρ‡Π°

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

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