Istio ΠΈ Kubernetes Π² производство. Част 2. ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅

Π’ послСдния Бтатия Π Π°Π·Π³Π»Π΅Π΄Π°Ρ…ΠΌΠ΅ основнитС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Service Mesh Istio, Π·Π°ΠΏΠΎΠ·Π½Π°Ρ…ΠΌΠ΅ сС със систСмата ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ Π½Π° основнитС Π²ΡŠΠΏΡ€ΠΎΡΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚ ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Istio. Π’ Ρ‚Π°Π·ΠΈ част Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° информация Π·Π° прослСдяванС Π² ΠΌΡ€Π΅ΠΆΠ°.

Istio ΠΈ Kubernetes Π² производство. Част 2. ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅

ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠ΄Π²Π° Π½Π° ΡƒΠΌ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈ систСмни администратори, ΠΊΠΎΠ³Π°Ρ‚ΠΎ чуят Π΄ΡƒΠΌΠΈΡ‚Π΅ Service Mesh, Π΅ трасиранСто. Наистина, Π½ΠΈΠ΅ добавямС спСциалСн прокси ΡΡŠΡ€Π²ΡŠΡ€ към всСки ΠΌΡ€Π΅ΠΆΠΎΠ² възСл, ΠΏΡ€Π΅Π· ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° цСлият TCP Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. ИзглСТда, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ Π΅ възмоТно лСсно Π΄Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° информация Π·Π° всички ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ взаимодСйствия Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Π—Π° съТалСниС, Π² дСйствитСлност ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ нюанси, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄. НСка Π΄Π° Π³ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅.

ΠŸΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎ схващанС Π½ΠΎΠΌΠ΅Ρ€ Π΅Π΄Π½ΠΎ: ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΠ½Π»Π°ΠΉΠ½ Π΄Π°Π½Π½ΠΈ Π·Π° Ρ‚ΡƒΡ€ΠΈΠ·ΡŠΠΌ Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½ΠΎ.

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ сравнитСлно Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ само Π²ΡŠΠ·Π»ΠΈΡ‚Π΅ Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° систСма, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ със стрСлки, ΠΈ скоростта Π½Π° Π΄Π°Π½Π½ΠΈ, която ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΌΠ΅ΠΆΠ΄Ρƒ услугитС (Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ само броя Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Π²Ρ€Π΅ΠΌΠ΅). Π’ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи ΠΎΠ±Π°Ρ‡Π΅ Π½Π°ΡˆΠΈΡ‚Π΅ услуги ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π°Ρ‚ ΠΏΠΎ някакъв Π²ΠΈΠ΄ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° прилоТния слой, ΠΊΠ°Ρ‚ΠΎ HTTP, gRPC, Redis ΠΈ Ρ‚.Π½. И, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, искамС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ информация Π·Π° прослСдяванС спСциално Π·Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ; искамС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ скоростта Π½Π° заявка, Π° Π½Π΅ скоростта Π½Π° Π΄Π°Π½Π½ΠΈ. ИскамС Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π·Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° заявкитС, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ нашия ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». И накрая, искамС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ пълния ΠΏΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΌΠΈΠ½Π°Π²Π° Π΅Π΄Π½Π° заявка ΠΎΡ‚ Π²Π»ΠΈΠ·Π°Π½Π΅ Π² Π½Π°ΡˆΠ°Ρ‚Π° систСма Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΎΡ‚ потрСбитСля. Π’ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° лСсСн Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅.

ΠŸΡŠΡ€Π²ΠΎ, Π½Π΅ΠΊΠ° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° прослСдяванСто Π½Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Π° Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π² Istio. ΠšΠ°ΠΊΡ‚ΠΎ си спомнямС ΠΎΡ‚ ΠΏΡŠΡ€Π²Π°Ρ‚Π° част, Istio ΠΈΠΌΠ° ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Mixer Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° тСлСмСтрия. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π² Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° вСрсия 1.0.*, ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ прокси ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ envoy proxy. Envoy proxy ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΡƒΡ‡Π°ΡΡ‚ΡŠΡ†ΠΈ Π·Π° прослСдяванС с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° zipkin Π²Π΅Π΄Π½Π°Π³Π°. Има Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ, Π½ΠΎ само Ρ‡Ρ€Π΅Π· плъгин. Π‘ Istio Π²Π΅Π΄Π½Π°Π³Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ сглобСн ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ прокси ΡΡŠΡ€Π²ΡŠΡ€, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° само ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° zipkin. Ако искамС Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Jaeger ΠΈ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠΌ ΡƒΡ‡Π°ΡΡ‚ΡŠΡ†ΠΈ Π·Π° прослСдяванС Ρ‡Ρ€Π΅Π· UDP, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‰Π΅ трябва Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ наш собствСн istio-прокси ΠΎΠ±Ρ€Π°Π·. Има ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° пСрсонализирани Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π·Π° istio-proxy, Π½ΠΎ всС ΠΎΡ‰Π΅ Π΅ Π² Π°Π»Ρ„Π° вСрсията. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π°ΠΊΠΎ искамС Π΄Π° сС справим Π±Π΅Π· голям Π±Ρ€ΠΎΠΉ пСрсонализирани настройки, ΠΎΠ±Ρ…Π²Π°Ρ‚ΡŠΡ‚ Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΡ‚Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° прослСдяванС, сС намалява. ΠžΡ‚ основнитС систСми Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ сСга ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ самия Zipkin ΠΈΠ»ΠΈ Jaeger, Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΡ‚Π΅ всичко Ρ‚Π°ΠΌ, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ с zipkin (ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½). Бамият ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» zipkin Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° цялата информация Π·Π° прослСдяванС Π΄ΠΎ ΠΊΠΎΠ»Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡ‚Π΅ Ρ‡Ρ€Π΅Π· HTTP ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ доста скъп.

ΠšΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ ΠΊΠ°Π·Π°Ρ…, искамС Π΄Π° прослСдим ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ прокси ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ стоят Π΄ΠΎ всяка услуга, трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π°Ρ‚ какъв Π²ΠΈΠ΄ взаимодСйствиС сС случва сСга. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Istio ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° всички ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ TCP, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ няма Π΄Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ слСди. Π—Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ слСди, ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Π°Π·ΠΈ опция Π² конфигурацията Π½Π° основната ΠΌΡ€Π΅ΠΆΠ° ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ, Π΄Π° Π½Π°ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Ρ‚Π΅ всички ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° услугата kubernetes Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² услугата. Π’ΠΎΠ²Π° Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠ°:

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  ports:
  - port: 80
    targetPort: 80
    name: http
  selector:
    app: nginx

ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΡΡŠΡΡ‚Π°Π²Π½ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΊΠ°Ρ‚ΠΎ http-magic (Istio Ρ‰Π΅ Π²ΠΈΠ΄ΠΈ http ΠΈ Ρ‰Π΅ Ρ€Π°Π·ΠΏΠΎΠ·Π½Π°Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΡ€Ρ‚ ΠΊΠ°Ρ‚ΠΎ http ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ°). Π€ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π΅: proto-extra.

Π—Π° Π΄Π° Π½Π΅ ΠΊΡ€ΡŠΠΏΠ²Π°Ρ‚Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ Π±Ρ€ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π·Π° Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΌΡ€ΡŠΡΠ½ΠΎ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: ΠΊΡ€ΡŠΠΏΠ΅Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Pilot Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ просто изпълнява Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Π°Π·ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π½Π° стандартна ΠΈ Π΄Π° сС ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ към конвСнция Π·Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅ Π½Π° всички ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅.

Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŠΡ‚ наистина Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, трябва Π΄Π° Π²Π»Π΅Π·Π΅Ρ‚Π΅ Π² някой ΠΎΡ‚ страничнитС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ с envoy proxy ΠΈ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ заявка към администраторския ΠΏΠΎΡ€Ρ‚ Π½Π° envoy интСрфСйса с мСстополоТСниС /config_dump. Π’ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π°Ρ‚Π° конфигурация трябва Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ»Π΅ Π½Π° ΠΆΠ΅Π»Π°Π½Π°Ρ‚Π° услуга. Използва сС Π² Istio ΠΊΠ°Ρ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π° Ρ‚ΠΎΠ²Π° къдС Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½Π° заявката. Π—Π° Π΄Π° пСрсонализиратС стойността Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π² Istio (слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π³ΠΎ Π²ΠΈΠ΄ΠΈΠΌ Π² Π½Π°ΡˆΠ°Ρ‚Π° систСма Π·Π° прослСдяванС), Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° посочитС Ρ„Π»Π°Π³Π° serviceCluster Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с кош. НапримСр, ΠΌΠΎΠΆΠ΅ Π΄Π° сС изчисли ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½ ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ ΠΎΡ‚ низходящия API Π½Π° kubernetes:

--serviceCluster ${POD_NAMESPACE}.$(echo ${POD_NAME} | sed -e 's/-[a-z0-9]*-[a-z0-9]*$//g')

Π”ΠΎΠ±ΡŠΡ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ прослСдяванСто Π² envoy Π΅ Ρ‚ΡƒΠΊ.

Π‘Π°ΠΌΠ°Ρ‚Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΡƒΡ‡Π°ΡΡ‚ΡŠΡ†ΠΈ Π·Π° прослСдяванС ΡΡŠΡ‰ΠΎ трябва Π΄Π° бъдС посочСна Π² Ρ„Π»Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° стартиранС Π½Π° прокси ΡΡŠΡ€Π²ΡŠΡ€ Π½Π° envoy, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: --zipkinAddress tracing-collector.tracing:9411

ΠŸΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎ схващанС Π½ΠΎΠΌΠ΅Ρ€ Π΄Π²Π΅: ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π²Ρ‚ΠΈΠ½ΠΎ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ пълни слСди ΠΎΡ‚ заявки Ρ‡Ρ€Π΅Π· систСмата Π²Π΅Π΄Π½Π°Π³Π°

Π—Π° съТалСниС Π½Π΅ Π΅ Ρ‚Π°ΠΊΠ°. БлоТността Π½Π° внСдряванСто зависи ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π²Π΅Ρ‡Π΅ стС Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ взаимодСйствиСто Π½Π° услугитС. Π—Π°Ρ‰ΠΎ Ρ‚Π°ΠΊΠ°?

Π€Π°ΠΊΡ‚ Π΅, Ρ‡Π΅ Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ istio-proxy Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ корСспондСнцията Π½Π° входящи заявки към услуга с Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ напускат ΡΡŠΡ‰Π°Ρ‚Π° услуга, Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ просто Π΄Π° ΠΏΡ€ΠΈΡ…Π²Π°Π½Π΅ цСлия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Врябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ някакъв Π²ΠΈΠ΄ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π΅Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. HTTP envoy proxy ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° спСциални Π·Π°Π³Π»Π°Π²ΠΊΠΈ, Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΈΡ‚ΠΎ envoy Ρ€Π°Π·Π±ΠΈΡ€Π° коя ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° заявка към услугата Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ заявки към Π΄Ρ€ΡƒΠ³ΠΈ услуги. Бписък Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈ:

  • x-заявка-id,
  • x-b3-traceid,
  • x-b3-spanid,
  • x-b3-parentspanid,
  • x-b3-ΠΈΠ·Π²Π°Π΄ΠΊΠ°,
  • x-b3-Π·Π½Π°ΠΌΠ΅Π½Π°,
  • x-ot-span-контСкст.

Ако ΠΈΠΌΠ°Ρ‚Π΅ Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ основСн ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Π² ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠ°Π²Π° Π»ΠΎΠ³ΠΈΠΊΠ°, Ρ‚ΠΎΠ³Π°Π²Π° всичко Π΅ Π½Π°Ρ€Π΅Π΄, просто трябва Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°Ρ‚Π΅ Ρ‚Π°Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΄Π° сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° Π·Π° всички ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ. Но Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Π° систСма ΠΈ няма унификация ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΎΡ‚ услуга към услуга ΠΏΡ€Π΅Π· ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠ²Π° Π½Π°ΠΉ-вСроятно Ρ‰Π΅ бъдС голям ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π‘Π΅Π· добавянС Π½Π° Ρ‚Π°ΠΊΠ°Π²Π° Π»ΠΎΠ³ΠΈΠΊΠ° цялата информация Π·Π° прослСдяванС Ρ‰Π΅ бъдС само Π½Π° β€žΠ΅Π΄Π½ΠΎ Π½ΠΈΠ²ΠΎβ€œ. ВоСст, Π½ΠΈΠ΅ Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ всички взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ услугитС, Π½ΠΎ Ρ‚Π΅ няма Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π»Π΅ΠΏΠ΅Π½ΠΈ Π² Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈ Π²Π΅Ρ€ΠΈΠ³ΠΈ Π½Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΡ€Π΅Π· ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Istio прСдоставя ΡƒΠ΄ΠΎΠ±Π΅Π½ инструмСнт Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° информация Π·Π° прослСдяванС ΠΏΡ€Π΅Π· ΠΌΡ€Π΅ΠΆΠ°, Π½ΠΎ трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅, Ρ‡Π΅ Π·Π° внСдряванС Ρ‰Π΅ трябва Π΄Π° Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Ρ‚Π΅ Π²Π°ΡˆΠ°Ρ‚Π° систСма ΠΈ Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ характСристикитС Π½Π° внСдряванСто Π½Π° Istio. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π΄Π²Π΅ основни Ρ‚ΠΎΡ‡ΠΊΠΈ: Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΎΡ‚ прокси ΡΡŠΡ€Π²ΡŠΡ€Π°) ΠΈ настройка Π½Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° информация Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π½Π° заявки към услугата ΠΎΡ‚ заявки ΠΎΡ‚ услугата (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈ , Π² случай Π½Π° HTTP ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»). ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ, ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠΎΡ‰Π΅Π½ инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ Π½ΠΈ позволява ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ Π΄Π° ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅ информация ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, Π΄ΠΎΡ€ΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½ΠΈ систСми, написани Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΅Π·ΠΈΡ†ΠΈ ΠΈ Ρ€Π°ΠΌΠΊΠΈ.

Π’ слСдващата статия Π·Π° Service Mesh Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с Istio – голямото ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° RAM ΠΎΡ‚ всСки прокси ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° sidecar ΠΈ Ρ‰Π΅ обсъдим ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС справитС с Π½Π΅Π³ΠΎ.

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

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