Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
ΠΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ΄Π²Π° Π½Π° ΡΠΌ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΡ Π΄ΡΠΌΠΈΡΠ΅ 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