Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅
ΠΡΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ
Istio ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π·ΠΎΠ½ β control plane ΠΈ data plane. Control plane ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ . Π ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ (1.0) control plane ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°: Pilot, Mixer, Citadel. Citadel ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ, ΠΎΠ½ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ mutual TLS ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Pilot ΠΈ Mixer.
Pilot β ΡΡΠΎ Π³Π»Π°Π²Π½ΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅Ρ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ β ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΈΡ
endpointβΡ ΠΈ routing ΠΏΡΠ°Π²ΠΈΠ»Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ Canary deployment ΠΈΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° circuit breaker).
Mixer β ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ control plane, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ±ΠΎΡΠ° ΠΌΠ΅ΡΡΠΈΠΊ, Π»ΠΎΠ³ΠΎΠ² ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ΠΌ Policy ΠΏΡΠ°Π²ΠΈΠ» ΠΈ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ΠΌ rate limitβΠΎΠ².
Data plane ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²-ΠΏΡΠΎΠΊΡΠΈ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΎΡΠ½ΡΠΉ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Istio ΡΠ°Π±ΠΎΡΠ°Π» ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ injectβΠΈΠ½Π³Π°. ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΉ Kubernetes 1.9+ (mutational admission webhook). ΠΠ»Ρ Kubernetes Π²Π΅ΡΡΠΈΠΉ 1.7, 1.8 Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Initializer.
Sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Ρ Pilot ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ GRPC, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΡΠΈΠ½Π³Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅. GRPC Π½Π°ΡΠ°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Envoy Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 1.6, Π² Istio ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Ρ Π²Π΅ΡΡΠΈΠΈ 0.8 ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ pilot-agent β ΠΎΠ±Π΅ΡΡΠΊΡ Π½Π° golang Π½Π°Π΄ envoy, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°.
Pilot ΠΈ Mixer ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ stateless ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, Π²ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π΄Π΅ΡΠΆΠ°Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ Π½ΠΈΡ
Π·Π°Π΄Π°Π΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Kubernetes Custom Resources, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ Π² etcd.
Istio-agent ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π°Π΄ΡΠ΅Ρ Pilot ΠΈ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ GRPC stream ΠΊ Π½Π΅ΠΌΡ.
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π», Istio ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ ΠΊΠ°ΠΊ. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°ΠΊΠΎΠΉ:
- ΠΠ΅ΠΏΠ»ΠΎΠΈΠΌ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°.
- Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° injectingβΠ° sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ istio-init ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ istio-agent ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (envoy) Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π»ΠΈΠ±ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΆΠ΅ Π²ΡΡΡΠ½ΡΡ Π²ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Pod ΡΡΡΠ½ΠΎΡΡΠΈ Kubernetes.
- istio-init ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° iptables Π΄Π»Ρ ΠΏΠΎΠ΄Π°. ΠΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π°Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠ° Π² istio-agent ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ redirect ΠΏΡΠ°Π²ΠΈΠ»Π° iptables, Π»ΠΈΠ±ΠΎ
TPROXY . ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Ρ redirect ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ. Π istio-init Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠ°ΡΠΈΠΊ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΈ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ Π² istio-agent. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ Π²Π΅ΡΡ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΠΈ Π²Π΅ΡΡ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ, Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ-i
ΠΈ-b
Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅*
. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΏΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π°Π³Π°-x
. - ΠΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ init ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅, ΠΈ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ pilot-agent (envoy). ΠΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠΆΠ΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎΠΌΡ Pilot ΠΏΠΎ GRPC ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ ΠΈ routing ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅. ΠΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ, ΠΎΠ½ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅Ρ clusterβΡ ΠΈ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠΌ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ endpointβΡ Π½Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ: envoy Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ listeners (ΠΏΠ°ΡΡ IP, port), ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ»ΡΡΠ°ΡΡ. ΠΠΎΡΡΠΎΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡΠΎΡΡ Π²Ρ ΠΎΠ΄ΡΡ Π² pod, ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ redirect iptables ΠΏΡΠ°Π²ΠΈΠ» Π² sidecar, envoy ΡΠΆΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΡΠ΄Π° Π½ΡΠΆΠ½ΠΎ Π΄Π°Π»ΡΡΠ΅ ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΠΊ. Π’Π°ΠΊΠΆΠ΅ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² Mixer, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅, ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° tracing spanβΠΎΠ².
Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅Π»ΡΡ ΡΠ΅ΡΡ envoy ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ (Pilot). ΠΡΠ΅ inbound ΠΈ outbound Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· envoy. ΠΡΠΈΡΠ΅ΠΌ, ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ TCP ΡΡΠ°ΡΠΈΠΊ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Kubernetes service IP ΡΠ΅Π·ΠΎΠ»Π²ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ kube-dns ΠΏΠΎ UDP Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ°ΡΠ΅ΠΌ ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π·ΠΎΠ»Π²Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° envoyβΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΡΠ΅ΡΠ°Π΅Ρ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ endpoint Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ (ΠΈΠ»ΠΈ Π½Π΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ, Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠ»ΠΈ ΡΡΠ°Π±ΠΎΡΠΊΠΈ circuit breaker Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°).
Π‘ Pilot ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Mixer ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½. ΠΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ Π½Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ
Mixer Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°: istio-telemetry, istio-policy (Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 0.8 ΡΡΠΎ Π±ΡΠ» ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ istio-mixer). Π ΡΠΎΡ, ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ· ΡΠ΅Π±Ρ mixer, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΡΠ²ΠΎΡ Π·Π°Π΄Π°ΡΡ. Istio telemetry ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎ GRPC ΠΎΡ sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Report ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΡΠΎ ΠΊΡΠ΄Π° ΠΈΠ΄Π΅Ρ ΠΈ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. Istio-policy ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Check Π·Π°ΠΏΡΠΎΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ Policy ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ. Poilicy check ΠΏΡΠΎΠ²ΠΎΠ΄ΡΡΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΠΎΡ, Π° ΠΊΡΡΠΈΡΡΡΡΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ (Π² sidecar) Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. Report checkβΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ batch Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ. ΠΠ°ΠΊ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΡΠ»Π°ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
Mixer ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π²ΡΡΠΎΠΊΠΎΠ΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±Π΅ΡΠΏΠ΅ΡΠ΅Π±ΠΎΠΉΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ telemetry Π΄Π°Π½Π½ΡΡ . Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΡΠΎΠ³Π΅ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ Π±ΡΡΠ΅Ρ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΡΠ΅ΡΠΈΠ·ΠΈΡΡΡΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², Π·Π°ΡΠ΅ΠΌ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ mixer ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ mixer backendβΡ. Π ΠΈΡΠΎΠ³Π΅, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π±ΡΡΠ΅Ρ ΡΠ°ΡΡΠ΅Ρ ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ»Π°ΡΠΈΡΡΡ. Mixer backendβΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ· ΡΠ΅Π±Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΎ ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΠΈ: statsd, newrelic ΠΈ ΡΠ΄. ΠΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ backend, ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ, ΠΈ ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΡΠ»ΠΈ ΠΏΠΎΠ΄ΡΡΠΎΠΆΠΈΡΡ, ΡΡ
Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ Ρ istio-telemetry ΡΠ°ΠΊΠΎΠ²Π°.
- Π‘Π΅ΡΠ²ΠΈΡ 1 ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡ Π² ΡΠ΅ΡΠ²ΠΈΡ 2.
- ΠΡΠΈ Π²ΡΡ ΠΎΠ΄Π΅ ΠΈΠ· ΡΠ΅ΡΠ²ΠΈΡΠ° 1, Π·Π°ΠΏΡΠΎΡ Π·Π°Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² Π΅Π³ΠΎ ΠΆΠ΅ sidecar.
- Sidecar envoy ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΡΠΎΡ Π² ΡΠ΅ΡΠ²ΠΈΡ 2 ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
- ΠΠ°ΡΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΅Ρ Π² istio-telemetry Ρ ΠΏΠΎΠΌΠΎΡΡΡ Report Π·Π°ΠΏΡΠΎΡΠ°.
- Istio-telemetry ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠΎΡ Report Π² backendβΡ, Π² ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ.
- Istio-telemetry ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Report Π΄Π°Π½Π½ΡΠ΅ Π² backend Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Istio, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (Pilot ΠΈ sidecar envoy).
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (mesh), ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΠ°Π΅Ρ 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
ΠΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (control plane) ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π² namespace istio-system Π² Kubernetes.
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Pilot. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π Π½Π°ΡΡΡΠΎΠΈΠΌ Π²ΡΡΡΠ½ΡΡ injecting sidecar ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
Init container:
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
Π sidecar:
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 Π΄Π»Ρ Pilot, ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ
Π ΠΈΡΠΎΠ³Π΅ ΡΠ΅ΡΠ²ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ injectβΠΈΠΌ sidecar Ρ envoy, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ, ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π΅ΡΡ discovery ΠΈΠ· ΠΏΠΈΠ»ΠΎΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ.
ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ control plane ΡΠ²Π»ΡΡΡΡΡ stateless ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½Ρ. ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π»Π΅ΠΆΠ°Ρ Π² etcd Π² Π²ΠΈΠ΄Π΅ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΡΠ΅ΡΡΡΡΠΎΠ² Kubernetes.
Π’Π°ΠΊΠΆΠ΅ Ρ Istio (ΠΏΠΎΠΊΠ° ΡΡΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ) Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° Π²Π½Π΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈ ΡΠ°ΡΠΈΡΡ service discovery ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Kubernetes ΠΊΠ»Π°ΡΡΠ΅ΡΠ°ΠΌΠΈ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ
ΠΡΠΈ ΠΌΡΠ»ΡΡΠΈΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
- Pod CIDR ΠΈ Service CIDR Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°ΠΌ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ.
- ΠΡΠ΅ Pod CIDR Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΎΡ Π»ΡΠ±ΡΡ Pod CIDR ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°ΠΌΠΈ.
- ΠΡΠ΅ Kubernetes API ΡΠ΅ΡΠ²Π΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄ΡΡΠ³ Π΄Π»Ρ Π΄ΡΡΠ³Π°.
ΠΡΠΎ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Ρ Istio. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΡ
ΠΊΠ°ΠΌΠ½Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠΎΡΡΠΈΠ½Π³Π° Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° (Π½Π°ΡΡΠΆΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°), ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ ΠΊ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ sidecarβΠΎΠ², ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° mixer ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠ³ΠΎ mixer backend, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° tracing ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° ΠΈ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ envoy.
ΠΡΡ ΡΡΠΎ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡ
. ΠΠ°Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π°ΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ, ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΈΡ
ΠΎΡΠ²Π΅ΡΠΈΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com