Как Π΄Π° стартиратС Istio с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Kubernetes Π² производството. Част 1

Какво Π΅ Π˜ΡΡ‚ΠΈΠΎ? Π’ΠΎΠ²Π° Π΅ Ρ‚Π°ΠΊΠ° Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π°Ρ‚Π° Service mesh, тСхнология, която добавя слой Π½Π° абстракция Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. НиС ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π°ΠΌΠ΅ цСлия ΠΈΠ»ΠΈ част ΠΎΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°ΠΌΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π½Π΅Π³ΠΎ. КоС? НапримСр, Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠΌ ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°ΠΌΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π½Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Ρ‡Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ β€žΠΊΠ°Π½Π°Ρ€ΡΠΊΠΎ Π²Π½Π΅Π΄Ρ€ΡΠ²Π°Π½Π΅β€œ, частично ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΉΠΊΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° към Π½ΠΎΠ²Π° вСрсия Π½Π° услугата, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ Π²ΡŠΠ½ΡˆΠ½ΠΈΡ‚Π΅ взаимодСйствия ΠΈ Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°ΠΌΠ΅ всички ΠΏΡŠΡ‚ΡƒΠ²Π°Π½ΠΈΡ ΠΎΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π΄ΠΎ външна ΠΌΡ€Π΅ΠΆΠ°. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° ΠΏΡŠΡ‚ΡƒΠ²Π°Π½ΠΈΡΡ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ микроуслуги. И накрая, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ цялата ΠΊΠ°Ρ€Ρ‚Π° Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ взаимодСйствиС ΠΈ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½Π°Ρ‚Π° колСкция ΠΎΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ напълно ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Π° Π·Π° прилоТСнията.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π·Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° докумСнтация. Istio Π΅ наистина ΠΌΠΎΡ‰Π΅Π½ инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. Π’ Ρ‚Π°Π·ΠΈ статия Π±ΠΈΡ… искал Π΄Π° отговоря Π½Π° основнитС Π²ΡŠΠΏΡ€ΠΎΡΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚ ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Istio. Π’ΠΎΠ²Π° Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° сС справитС с Π½Π΅Π³ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ.

Как Π΄Π° стартиратС Istio с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Kubernetes Π² производството. Част 1

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° дСйствиС

Istio сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π΄Π²Π΅ основни области - ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ€Π°Π²Π½ΠΈΠ½Π° ΠΈ Ρ€Π°Π²Π½ΠΈΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈ. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ€Π°Π²Π½ΠΈΠ½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° основнитС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ осигуряват ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° останалитС. Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° вСрсия (1.0) ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ€Π°Π²Π½ΠΈΠ½Π° ΠΈΠΌΠ° Ρ‚Ρ€ΠΈ основни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°: ΠΏΠΈΠ»ΠΎΡ‚, миксСр, Ρ†ΠΈΡ‚Π°Π΄Π΅Π»Π°. Няма Π΄Π° Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Citadel, Ρ‚ΠΎΠΉ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° сСртификати, Π·Π° Π΄Π° сС осигури Π²Π·Π°ΠΈΠΌΠ΅Π½ TLS ΠΌΠ΅ΠΆΠ΄Ρƒ услугитС. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΎΡ‚Π±Π»ΠΈΠ·ΠΎ устройството ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Pilot ΠΈ Mixer.

Как Π΄Π° стартиратС Istio с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Kubernetes Π² производството. Част 1

Pilot Π΅ основният ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ разпространява цялата информация Π·Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° - услуги, Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° внСдряванС Π½Π° Canary ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Ρ‡ΠΈ).

Mixer Π΅ Π½Π΅Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ€Π°Π²Π½ΠΈΠ½Π°, ΠΊΠΎΠΉΡ‚ΠΎ прСдоставя Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ всякаква информация Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ взаимодСйствиС. Π’ΠΎΠΉ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° слСди спазванСто Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π½Π° ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ΠΈ спазванСто Π½Π° Π»ΠΈΠΌΠΈΡ‚ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Ρ€ΠΈΡ„ΠΈΡ‚Π΅.

Π Π°Π²Π½ΠΈΠ½Π°Ρ‚Π° Π½Π° Π΄Π°Π½Π½ΠΈ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° странични прокси ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠœΠΎΡ‰Π΅Π½. ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈΠΊ ΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ. Вя ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π·Π°ΠΌΠ΅Π½Π΅Π½Π° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° рСализация, ΠΊΠ°Ρ‚ΠΎ nginx (nginmesh).

Π—Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Istio напълно ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ Π·Π° прилоТСнията, ΠΈΠΌΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° систСма Π·Π° ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅. Най-Π½ΠΎΠ²Π°Ρ‚Π° рСализация Π΅ подходяща Π·Π° вСрсии Π½Π° Kubernetes 1.9+ (ΡƒΠ΅Π± ΠΊΡƒΠΊΠΈΡ‡ΠΊΠ° Π·Π° ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ). Π—Π° Kubernetes вСрсии 1.7, 1.8 Π΅ възмоТно Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Initializer.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Sidecar са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ към Pilot с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° GRPC ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ push ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π½Π°ΡΡ‚ΡŠΠΏΠ²Π°Ρ‰ΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. GRPC сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Envoy ΠΎΡ‚ вСрсия 1.6, Π² Istio сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ вСрсия 0.8 ΠΈ Π΅ ΠΏΠΈΠ»ΠΎΡ‚Π΅Π½ Π°Π³Π΅Π½Ρ‚ - golang ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π½Π°Π΄ envoy, която ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° стартиранС.

Pilot ΠΈ Mixer са напълно ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π±Π΅Π· ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, цялото ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π·Π° тях Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° пСрсонализирани рСсурси Π½Π° Kubernetes, ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² etcd.
Istio-agent ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° адрСса Π½Π° ΠΏΠΈΠ»ΠΎΡ‚Π° ΠΈ отваря GRPC ΠΏΠΎΡ‚ΠΎΠΊ към Π½Π΅Π³ΠΎ.

ΠšΠ°ΠΊΡ‚ΠΎ ΠΊΠ°Π·Π°Ρ…, Istio Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° цялата функционалност, напълно ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Π° Π·Π° прилоТСнията. Π”Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ. ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚ Π΅ слСдният:

  1. ВнСдряванС Π½Π° Π½ΠΎΠ²Π° вСрсия Π½Π° услугата.
  2. Π’ зависимост ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π° ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с кош, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ istio-init ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ istio-agent (ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈΠΊ) сС добавят Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° конфигурацията ΠΈΠ»ΠΈ Π²Π΅Ρ‡Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²ΠΌΡŠΠΊΠ½Π°Ρ‚ΠΈ Ρ€ΡŠΡ‡Π½ΠΎ Π² описаниСто Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Kubernetes Pod.
  3. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ istio-init Π΅ скрипт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π½Π° iptables към pod. Има Π΄Π²Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π΄Π° бъдС ΠΎΠ±Π²ΠΈΡ‚ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° istio-agent: ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° прСнасочванС Π½Π° iptables ΠΈΠ»ΠΈ TPROXY. Към ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° писанС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡŠΡ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ с ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° прСнасочванС. Π’ istio-init Π΅ възмоТно Π΄Π° сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΊΠΎΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π΄Π° бъдС ΠΏΡ€ΠΈΡ…Π²Π°Π½Π°Ρ‚ ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ Π΄ΠΎ istio-agent. НапримСр, Π·Π° Π΄Π° ΠΏΡ€ΠΈΡ…Π²Π°Π½Π΅Ρ‚Π΅ цСлия входящ ΠΈ изходящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, трябва Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ -i ΠΈ -b Π² смисъл *. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ Π·Π° ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π°Π½Π΅. Π—Π° Π΄Π° Π½Π΅ ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π°Ρ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° я посочитС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ„Π»Π°Π³Π° -x.
  4. Π‘Π»Π΅Π΄ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° init ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ сС стартират основнитС, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ пилотния Π°Π³Π΅Π½Ρ‚ (ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈΠΊ). Π’ΠΎΠΉ сС ΡΠ²ΡŠΡ€Π·Π²Π° с Π²Π΅Ρ‡Π΅ внСдрСния Pilot Ρ‡Ρ€Π΅Π· GRPC ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° информация Π·Π° всички ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ услуги ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Π‘ΠΏΠΎΡ€Π΅Π΄ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Ρ‚ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅ ΠΈ Π³ΠΈ присвоява Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ към ΠΊΡ€Π°ΠΉΠ½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ прилоТСния Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ Π²Π°ΠΆΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚: envoy Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΠΈΡ‚Π΅ (IP, Π΄Π²ΠΎΠΉΠΊΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅), ΠΊΠΎΠΈΡ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° ΡΠ»ΡƒΡˆΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ заявкитС влязат Π² pod, сС прСнасочват с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° iptables Π·Π° прСнасочванС Π² ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΊΠΎΠ»Π°, envoy Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Ρ‚Π΅Π·ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΈ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ къдС Π΄Π° проксиира Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π½Π° Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° информация към миксСра, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-късно, ΠΈ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ прослСдяващи ΡƒΡ‡Π°ΡΡ‚ΡŠΡ†ΠΈ.

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ цяла ΠΌΡ€Π΅ΠΆΠ° ΠΎΡ‚ прокси ΡΡŠΡ€Π²ΡŠΡ€ΠΈ envoy, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ ΠΎΡ‚ Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° (Pilot). Всички входящи ΠΈ изходящи заявки ΠΌΠΈΠ½Π°Π²Π°Ρ‚ ΠΏΡ€Π΅Π· envoy. ОсвСн Ρ‚ΠΎΠ²Π° сС ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π° само TCP Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ IP Π½Π° услугата Kubernetes сС Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° kube-dns ΠΏΡ€Π΅Π· UDP Π±Π΅Π· промяна. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π°, слСд Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ, изходящата заявка сС ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΎΡ‚ ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Π²Π΅Ρ‡Π΅ Ρ€Π΅ΡˆΠ°Π²Π° към коя ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° трябва Π΄Π° бъдС ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½Π° заявката (ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½Π°, Π² случай Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Ρ‡ Π½Π° Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ°).

Π Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅ Pilot, сСга трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Mixer ΠΈ Π·Π°Ρ‰ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° докумСнтация Π·Π° Π½Π΅Π³ΠΎ Ρ‚ΡƒΠΊ.

ΠœΠΈΠΊΡΠ΅Ρ€ΡŠΡ‚ Π² ΡΠ΅Π³Π°ΡˆΠ½Π°Ρ‚Π° си Ρ„ΠΎΡ€ΠΌΠ° сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°: istio-telemetry, istio-policy (ΠΏΡ€Π΅Π΄ΠΈ вСрсия 0.8 бСшС Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ istio-mixer). И Π΄Π²Π°Ρ‚Π° са миксСри, всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ отговаря Π·Π° собствСната си Π·Π°Π΄Π°Ρ‡Π°. Istio telemetry ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° информация Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠΎΠΉ къдС ΠΎΡ‚ΠΈΠ²Π° ΠΈ с ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π·Π° ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΈ с кош Ρ‡Ρ€Π΅Π· GRPC. Istio-policy ΠΏΡ€ΠΈΠ΅ΠΌΠ° заявки Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Π·Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ Π΄Π°Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° са изпълнСни. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π°, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π½Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Π·Π° всяка заявка, Π½ΠΎ сС ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‚ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (Π² страничната ΠΊΠΎΠ»Π°) Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. ΠžΡ‚Ρ‡Π΅Ρ‚Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΈ заявки. НСка Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-късно.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС, Ρ‡Π΅ Mixer Π΅ Π²ΠΈΡΠΎΠΊΠΎΠ΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ осигурява Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ сглобяванСто ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ систСмата сС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΊΠ°Ρ‚ΠΎ многостСпСнСн Π±ΡƒΡ„Π΅Ρ€. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС Π±ΡƒΡ„Π΅Ρ€ΠΈΡ€Π°Ρ‚ ΠΎΡ‚ страната Π½Π° коша Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅, слСд Ρ‚ΠΎΠ²Π° ΠΎΡ‚ страната Π½Π° миксСра ΠΈ слСд Ρ‚ΠΎΠ²Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ Π΄ΠΎ Ρ‚Π°ΠΊΠ° Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΈΡ‚Π΅ Π·Π°Π΄Π½ΠΈ части Π½Π° миксСра. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ някой ΠΎΡ‚ систСмнитС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ сС ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ, Π±ΡƒΡ„Π΅Ρ€ΡŠΡ‚ нараства ΠΈ сС ΠΈΠ·ΠΌΠΈΠ²Π° слСд Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° систСмата. Π‘Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° миксСра са ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ: statsd, newrelic ΠΈ Π΄Ρ€. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ свой собствСн Π±Π΅ΠΊΠ΅Π½Π΄, Ρ‚ΠΎΠ²Π° Π΅ доста просто ΠΈ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ.

Как Π΄Π° стартиратС Istio с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Kubernetes Π² производството. Част 1

Π—Π° Π΄Π° ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΠΌ, схСмата Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с istio-тСлСмСтрия Π΅ слСдната.

  1. Услуга 1 ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° заявка Π΄ΠΎ услуга 2.
  2. ΠŸΡ€ΠΈ напусканС Π½Π° услуга 1, заявката сС ΠΎΠΏΠ°ΠΊΠΎΠ²Π° Π² собствСната си кош.
  3. Sidecar envoy слСди ΠΊΠ°ΠΊ заявката ΠΎΡ‚ΠΈΠ²Π° към услуга 2 ΠΈ подготвя Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° информация.
  4. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π³ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π΄ΠΎ istio-telemetry с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° заявка Π·Π° ΠΎΡ‚Ρ‡Π΅Ρ‚.
  5. Istio-telemetry опрСдСля Π΄Π°Π»ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ трябва Π΄Π° бъдС ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ Π΄ΠΎ Π·Π°Π΄Π½ΠΈΡ‚Π΅ части, към ΠΊΠΎΠΈ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ Π΄Π°Π½Π½ΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ.
  6. Istio-telemetry ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΎΡ‚Ρ‡Π΅Ρ‚Π½ΠΈ Π΄Π°Π½Π½ΠΈ към Π±Π΅ΠΊΠ΅Π½Π΄Π°, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Istio Π² систСмата, ΡΡŠΡΡ‚ΠΎΡΡ‰Π° сС само ΠΎΡ‚ основнитС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ (Pilot ΠΈ sidecar envoy).

ΠŸΡŠΡ€Π²ΠΎ, Π½Π΅ΠΊΠ° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ основната конфигурация (ΠΌΡ€Π΅ΠΆΠ°), която Pilot Ρ‡Π΅Ρ‚Π΅:

apiVersion: v1
kind: ConfigMap
metadata:
  name: istio
  namespace: istio-system
  labels:
    app: istio
    service: istio
data:
  mesh: |-

    # ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ tracing ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (pilot настроит envoy’и Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ)
    enableTracing: false

    # ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ mixer endpoint’ы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ sidecar ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π½Π΅ отправляли ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ‚ΡƒΠ΄Π°
    #mixerCheckServer: istio-policy.istio-system:15004
    #mixerReportServer: istio-telemetry.istio-system:15004

    # ставим Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ envoy ΠΏΠ΅Ρ€Π΅ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Pilot (это для старой вСрсии envoy proxy)
    rdsRefreshDelay: 5s

    # default конфигурация для envoy sidecar
    defaultConfig:
      # Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΊΠ°ΠΊ rdsRefreshDelay
      discoveryRefreshDelay: 5s

      # оставляСм ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Π±ΠΈΠ½Π°Ρ€ΡŽ envoy)
      configPath: "/etc/istio/proxy"
      binaryPath: "/usr/local/bin/envoy"

      # Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ΅ имя Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ sidecar ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΈΠΌΠ΅Π½Π°Ρ… сСрвиса ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ tracing span’ов)
      serviceCluster: istio-proxy

      # врСмя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ΄Π°Ρ‚ΡŒ envoy Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ всС установлСнныС соСдинСния
      drainDuration: 45s
      parentShutdownDuration: 1m0s

      # ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ REDIRECT ΠΏΡ€Π°Π²ΠΈΠ»Π° iptables. МоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° TPROXY.
      #interceptionMode: REDIRECT

      # ΠŸΠΎΡ€Ρ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° admin панСль ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ sidecar ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (envoy)
      proxyAdminPort: 15000

      # адрСс, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ trace’ы ΠΏΠΎ zipkin ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ (Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ саму ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ, поэтому это ΠΏΠΎΠ»Π΅ сСйчас Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ)
      zipkinAddress: tracing-collector.tracing:9411

      # statsd адрСс для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ envoy ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² (ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ)
      # statsdUdpAddress: aggregator:8126

      # Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΎΠΏΡ†ΠΈΠΈ Mutual TLS
      controlPlaneAuthPolicy: NONE

      # адрСс, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ istio-pilot для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ service discovery всСм sidecar ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌ
      discoveryAddress: istio-pilot.istio-system:15007

Всички основни ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ (ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ€Π°Π²Π½ΠΈΠ½Π°) Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° istio-system Π² Kubernetes.

ΠšΠ°Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ трябва само Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΠΌ Pilot. Π—Π° Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π°ΠΊΠ°Π²Π° конфигурация.

И Π½ΠΈΠ΅ Ρ‰Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ Ρ€ΡŠΡ‡Π½ΠΎ инТСктиращия кош Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

НачалСн ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€:

initContainers:
 - name: istio-init
   args:
   - -p
   - "15001"
   - -u
   - "1337"
   - -m
   - REDIRECT
   - -i
   - '*'
   - -b
   - '*'
   - -d
   - ""
   image: istio/proxy_init:1.0.0
   imagePullPolicy: IfNotPresent
   resources:
     limits:
       memory: 128Mi
   securityContext:
     capabilities:
       add:
       - NET_ADMIN

И кош:

       name: istio-proxy
       args:
         - "bash"
         - "-c"
         - |
           exec /usr/local/bin/pilot-agent proxy sidecar 
           --configPath 
           /etc/istio/proxy 
           --binaryPath 
           /usr/local/bin/envoy 
           --serviceCluster 
           service-name 
           --drainDuration 
           45s 
           --parentShutdownDuration 
           1m0s 
           --discoveryAddress 
           istio-pilot.istio-system:15007 
           --discoveryRefreshDelay 
           1s 
           --connectTimeout 
           10s 
           --proxyAdminPort 
           "15000" 
           --controlPlaneAuthPolicy 
           NONE
         env:
         - name: POD_NAME
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
         - name: POD_NAMESPACE
           valueFrom:
             fieldRef:
               fieldPath: metadata.namespace
         - name: INSTANCE_IP
           valueFrom:
             fieldRef:
               fieldPath: status.podIP
         - name: ISTIO_META_POD_NAME
           valueFrom:
             fieldRef:
               fieldPath: metadata.name
         - name: ISTIO_META_INTERCEPTION_MODE
           value: REDIRECT
         image: istio/proxyv2:1.0.0
         imagePullPolicy: IfNotPresent
         resources:
           requests:
             cpu: 100m
             memory: 128Mi
           limits:
             memory: 2048Mi
         securityContext:
           privileged: false
           readOnlyRootFilesystem: true
           runAsUser: 1337
         volumeMounts:
         - mountPath: /etc/istio/proxy
           name: istio-envoy

Π—Π° Π΄Π° стартира всичко ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, трябва Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ServiceAccount, ClusterRole, ClusterRoleBinding, CRD for Pilot, Ρ‡ΠΈΠΈΡ‚ΠΎ описания ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΡƒΠΊ.

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° услугата, Π² която ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°ΠΌΠ΅ sidecar с envoy, трябва Π΄Π° стартира ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° всички открития ΠΎΡ‚ ΠΏΠΈΠ»ΠΎΡ‚Π° ΠΈ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° заявки.

Π’Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅, Ρ‡Π΅ всички ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ€Π°Π²Π½ΠΈΠ½Π° са прилоТСния Π±Π΅Π· ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½ΠΈ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. Всички Π΄Π°Π½Π½ΠΈ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² etcd ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° пСрсонализирани описания Π½Π° рСсурситС Π½Π° Kubernetes.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ°, Istio (всС ΠΎΡ‰Π΅ Π΅ СкспСримСнталСн) ΠΈΠΌΠ° способността Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ извън ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ способността Π΄Π° наблюдава ΠΈ Π±ΡŠΡ€ΠΊΠ° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° услуги ΠΌΠ΅ΠΆΠ΄Ρƒ няколко ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Kubernetes. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ‚ΠΎΠ²Π° Ρ‚ΡƒΠΊ.

Π—Π° инсталация с няколко ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ слСднитС ограничСния:

  1. Pod CIDR ΠΈ Service CIDR трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ във всички ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ ΠΈ Π½Π΅ трябва Π΄Π° сС ΠΏΡ€ΠΈΠΏΠΎΠΊΡ€ΠΈΠ²Π°Ρ‚.
  2. Всички CIDR ΠΏΠΎΠ΄ΠΎΠ²Π΅ трябва Π΄Π° са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ ΠΎΡ‚ всички CIDR ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ.
  3. Всички API ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π½Π° Kubernetes трябва Π΄Π° са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π΅Π΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³.

Π’ΠΎΠ²Π° Π΅ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° информация, която Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ с Istio. ВсС ΠΎΡ‰Π΅ ΠΎΠ±Π°Ρ‡Π΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΠΈ камъни. НапримСр Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° външСн Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (извън ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°), ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² странични ΠΊΠΎΠ»ΠΈ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅, настройка Π½Π° миксСр ΠΈ писанС Π½Π° потрСбитСлски Π±Π΅ΠΊΠ΅Π½Π΄ Π½Π° миксСр, настройка Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° прослСдяванС ΠΈ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° envoy.
Всичко Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π² слСдващитС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π—Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²ΡŠΠΏΡ€ΠΎΡΠΈΡ‚Π΅ си, Ρ‰Π΅ сС ΠΎΠΏΠΈΡ‚Π°ΠΌ Π΄Π° Π³ΠΈ покрия.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€