Π ΠΏΡΠΎΡΠ»ΠΎΠΉ
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ Π² Π³ΠΎΠ»ΠΎΠ²Ρ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΠ»ΡΡΠ°Ρ ΡΠ»ΠΎΠ²Π° Service Mesh β ΡΡΠΎ tracing. Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ·Π΅Π» ΡΠ΅ΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ Π²Π΅ΡΡ TCP-ΡΡΠ°ΡΠΈΠΊ. ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ
ΡΠ΅ΡΠ΅Π²ΡΡ
Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡΡ
Π² ΡΠ΅ΡΠΈ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½ΡΠ°Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ
.
ΠΠ°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ ΠΎΠ΄ΠΈΠ½: ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΠΎΡ ΠΎΠ΄Π°Ρ ΠΏΠΎ ΡΠ΅ΡΠΈ
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ ΡΡΡΠ΅Π»ΠΊΠ°ΠΌΠΈ ΡΠ·Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ rate Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ (ΠΏΠΎ ΡΡΡΠΈ β ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ). ΠΠ΄Π½Π°ΠΊΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½Π°ΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠ°ΠΊΠΎΠΌΡ ΠΊΠ°ΠΊ, HTTP, gRPC, Redis ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΠΈΠ΄Π΅ΡΡ ΡΡΠ΅ΠΉΡΠΈΠ½Π³ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΡΡΠΈΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌ, Ρ ΠΎΡΠΈΠΌ Π²ΠΈΠ΄Π΅ΡΡ 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 ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ, ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°ΠΊΠ»Π°Π΄Π½ΠΎ.
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π», ΡΡΠ΅ΠΉΡΠΈΡΡ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. Π ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ proxy ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΡΡ ΡΡΠ΄ΠΎΠΌ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΠΉΡΠ°Ρ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, 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 ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠΎΡΡ admin ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° envoy Ρ location /config_dump. Π ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ΅ΠΉΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Ρ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΏΠΎΠ»Π΅ operation. ΠΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Istio ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΡΠ΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΡΠΎΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π² Istio Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° (ΠΌΡ Π·Π°ΡΠ΅ΠΌ Π±ΡΠ΄Π΅ΠΌ Π²ΠΈΠ΄Π΅ΡΡ Π΅Π³ΠΎ Π² Π½Π°ΡΠ΅ΠΉ tracing ΡΠΈΡΡΠ΅ΠΌΠ΅), Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° ΡΡΠ°ΠΏΠ΅ Π·Π°ΠΏΡΡΠΊΠ° sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»Π°Π³ serviceCluster. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡ ΡΠ°ΠΊ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΈΠ· downward API kubernetes:
--serviceCluster ${POD_NAMESPACE}.$(echo ${POD_NAME} | sed -e 's/-[a-z0-9]*-[a-z0-9]*$//g')
Π₯ΠΎΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ tracing Π² 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.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅Π΄ΠΈΠ½Π°Ρ ΡΠΎΡΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ°ΠΊΡΡ Π»ΠΎΠ³ΠΈΠΊΡ, ΡΠΎ Π²ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΠΎ, Π²Π°ΠΌ Π»ΠΈΡΡ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ Π²ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². ΠΠΎ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΎΡΠ΅Π½Ρ Π³Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ Π½Π΅Ρ ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² ΠΏΠΎΡ ΠΎΠ΄Π΅ ΠΈΠ· ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² ΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ, ΡΠΎ ΡΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠ΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ Π²ΡΡ tracing ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π»ΠΈΡΡ Β«ΠΎΠ΄Π½ΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉΒ». Π’ΠΎ Π΅ΡΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠ΅ ΠΌΠ΅ΠΆΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠΊΠ»Π΅Π΅Π½Ρ Π² Π΅Π΄ΠΈΠ½ΡΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΏΡΠΎΡ ΠΎΠ΄Π° ΠΏΠΎ ΡΠ΅ΡΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Istio ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ±ΠΎΡΠ° tracing ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ΅ΡΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΡΠ΅ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Istio. Π ΠΈΡΠΎΠ³Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°: ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ (ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ envoy proxy) ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΏΡΠΎΠ±ΡΠΎΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ΅ΡΠ²ΠΈΡ ΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ· ΡΠ΅ΡΠ²ΠΈΡΠ° (Ρ ΠΏΠΎΠΌΠΎΡΡΡ headerβΠΎΠ², Π² ΡΠ»ΡΡΠ°Π΅ HTTP ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°). ΠΠΎΠ³Π΄Π° ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΡΠ΅ΡΠ΅Π½Ρ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ ΡΠ΅ΡΠΈ Π΄Π°ΠΆΠ΅ Π² ΠΎΡΠ΅Π½Ρ Π³Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ².
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎ Service Mesh ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ°ΠΌΡΡ
Π±ΠΎΠ»ΡΡΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ Istio β Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΌ sidecar ΠΏΡΠΎΠΊΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ ΠΈ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Ρ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΡΠΎΡΡΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com