Istio ΠΈ Kubernetes Π² продукция. Част 2. ВрСйсинг.

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

Istio ΠΈ Kubernetes Π² продукция. Част 2. ВрСйсинг.

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

ΠœΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ Π΅Π΄Π½ΠΎ: ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡŠΡ‚ΡƒΠ²Π°Π½ΠΈΡ Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½ΠΎ.

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

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

ΠšΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ ΠΊΠ°Π·Π°Ρ…, искамС Π΄Π° трасирамС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅ Π½Π° прилоТния слой. А Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ проксито ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ стоят Π΄ΠΎ всСки сСрвис, трябва Π΄Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ ΠΊΠ°ΠΊΠ²ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ взаимодСйствиС сС случва сСга. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Istio настройва Π·Π° всички ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ plain TCP Ρ‚ΠΈΠΏ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π½Π΅ Ρ‰Π΅ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ трСйсовС. Π—Π° Π΄Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ трСйсовСтС, ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Ρ‚Π°ΠΊΠ°Π²Π° опция Π² основния mesh config ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ, Π΄Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΠΌΠ΅ всички ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ Π½Π° service сущноститС Π² Kubernetes Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² сСрвиза. ВоСст, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

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

МоТС ΡΡŠΡ‰ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΡΡŠΡΡ‚Π°Π²Π½ΠΈ ΠΈΠΌΠ΅Π½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ http-magic (Istio Ρ‰Π΅ Ρ€Π°Π·ΠΏΠΎΠ·Π½Π°Π΅ http ΠΈ Ρ‰Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΡ€Ρ‚ ΠΊΠ°Ρ‚ΠΎ http endpoint). Π€ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π΅: proto-extra.

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

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

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

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

Бамият endpoint Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° tracing span-ΠΎΠ²Π΅ ΡΡŠΡ‰ΠΎ трябва Π΄Π° бъдС Π·Π°Π΄Π°Π΄Π΅Π½ Π² Ρ„Π»Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° стартиранС Π½Π° envoy proxy, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: --zipkinAddress tracing-collector.tracing:9411

ΠœΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ Π΄Π²Π΅: ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ напълно прослСдяванС Π½Π° заявкитС Π² систСмата Π½Π° ниска Ρ†Π΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

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

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

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

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

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

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

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

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

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