ΠΠ°ΠΊΠ²ΠΎ Π΅
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π·Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Π²
ΠΡΠΈΠ½ΡΠΈΠΏ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
Istio ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ - ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠ°Π²Π½ΠΈΠ½Π° ΠΈ ΡΠ°Π²Π½ΠΈΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠ°Π²Π½ΠΈΠ½Π° ΡΡΠ΄ΡΡΠΆΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅. Π ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ (1.0) ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠ°Π²Π½ΠΈΠ½Π° ΠΈΠΌΠ° ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°: ΠΏΠΈΠ»ΠΎΡ, ΠΌΠΈΠΊΡΠ΅Ρ, ΡΠΈΡΠ°Π΄Π΅Π»Π°. ΠΡΠΌΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Citadel, ΡΠΎΠΉ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ, Π·Π° Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ Π²Π·Π°ΠΈΠΌΠ΅Π½ TLS ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ»ΡΠ³ΠΈΡΠ΅. ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΎΡΠ±Π»ΠΈΠ·ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Pilot ΠΈ Mixer.
Pilot Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΡΡΠ»Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° - ΡΡΠ»ΡΠ³ΠΈ, ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Canary ΠΈΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΏΡΠ΅ΠΊΡΡΠ²Π°ΡΠΈ).
Mixer Π΅ Π½Π΅Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠ°Π²Π½ΠΈΠ½Π°, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π²ΡΡΠΊΠ°ΠΊΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. Π’ΠΎΠΉ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ»Π΅Π΄ΠΈ ΡΠΏΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° ΠΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° ΠΈ ΡΠΏΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π»ΠΈΠΌΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ°ΡΠΈΡΠΈΡΠ΅.
Π Π°Π²Π½ΠΈΠ½Π°ΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠΊΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΠΎΡΠ΅Π½.
ΠΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Istio Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°, ΠΈΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΠ°Π½Π΅. ΠΠ°ΠΉ-Π½ΠΎΠ²Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° Π·Π° Π²Π΅ΡΡΠΈΠΈ Π½Π° Kubernetes 1.9+ (ΡΠ΅Π± ΠΊΡΠΊΠΈΡΠΊΠ° Π·Π° ΠΌΡΡΠ°ΡΠΈΠΎΠ½Π΅Π½ Π΄ΠΎΡΡΡΠΏ). ΠΠ° Kubernetes Π²Π΅ΡΡΠΈΠΈ 1.7, 1.8 Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Initializer.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Sidecar ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΊΡΠΌ Pilot Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° GRPC ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ push ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π½Π°ΡΡΡΠΏΠ²Π°ΡΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°. GRPC ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Envoy ΠΎΡ Π²Π΅ΡΡΠΈΡ 1.6, Π² Istio ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ Π²Π΅ΡΡΠΈΡ 0.8 ΠΈ Π΅ ΠΏΠΈΠ»ΠΎΡΠ΅Π½ Π°Π³Π΅Π½Ρ - golang ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π½Π°Π΄ envoy, ΠΊΠΎΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΎΠΏΡΠΈΠΈΡΠ΅ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.
Pilot ΠΈ Mixer ΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π±Π΅Π· ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, ΡΡΠ»ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π·Π° ΡΡΡ
Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π° Kubernetes, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ Π² etcd.
Istio-agent ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΏΠΈΠ»ΠΎΡΠ° ΠΈ ΠΎΡΠ²Π°ΡΡ GRPC ΠΏΠΎΡΠΎΠΊ ΠΊΡΠΌ Π½Π΅Π³ΠΎ.
ΠΠ°ΠΊΡΠΎ ΠΊΠ°Π·Π°Ρ , Istio ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΡΠ»Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½Π° Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. ΠΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ. ΠΠ»Π³ΠΎΡΠΈΡΡΠΌΡΡ Π΅ ΡΠ»Π΅Π΄Π½ΠΈΡΡ:
- ΠΠ½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°.
- Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π·Π° ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ ΠΊΠΎΡ, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ istio-init ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ istio-agent (ΠΏΡΠ°ΡΠ΅Π½ΠΈΠΊ) ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΈΠ»ΠΈ Π²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΠΌΡΠΊΠ½Π°ΡΠΈ ΡΡΡΠ½ΠΎ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° Kubernetes Pod.
- ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ istio-init Π΅ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° iptables ΠΊΡΠΌ pod. ΠΠΌΠ° Π΄Π²Π΅ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ±Π²ΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π° istio-agent: ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° iptables ΠΈΠ»ΠΈ
TPROXY . ΠΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΠΏΠΈΡΠ°Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅. Π istio-init Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΊΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΈΡ Π²Π°Π½Π°Ρ ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ Π΄ΠΎ istio-agent. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΠΏΡΠΈΡ Π²Π°Π½Π΅ΡΠ΅ ΡΠ΅Π»ΠΈΡ Π²Ρ ΠΎΠ΄ΡΡ ΠΈ ΠΈΠ·Ρ ΠΎΠ΄ΡΡ ΡΡΠ°ΡΠΈΠΊ, ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅-i
ΠΈ-b
Π² ΡΠΌΠΈΡΡΠ»*
. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅ Π·Π° ΠΏΡΠΈΡ Π²Π°ΡΠ°Π½Π΅. ΠΠ° Π΄Π° Π½Π΅ ΠΏΡΠΈΡ Π²Π°ΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Ρ ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ»Π°Π³Π°-x
. - Π‘Π»Π΅Π΄ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° init ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΈΠ»ΠΎΡΠ½ΠΈΡ Π°Π³Π΅Π½Ρ (ΠΏΡΠ°ΡΠ΅Π½ΠΈΠΊ). Π’ΠΎΠΉ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Ρ Π²Π΅ΡΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Pilot ΡΡΠ΅Π· GRPC ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°. Π‘ΠΏΠΎΡΠ΅Π΄ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅ ΠΈ Π³ΠΈ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΊΡΠΌ ΠΊΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ Π²Π°ΠΆΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ: envoy Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΡΠ»ΡΡΠ°ΡΠ΅Π»ΠΈΡΠ΅ (IP, Π΄Π²ΠΎΠΉΠΊΠΈ ΠΏΠΎΡΡΠΎΠ²Π΅), ΠΊΠΎΠΈΡΠΎ Π·Π°ΠΏΠΎΡΠ²Π° Π΄Π° ΡΠ»ΡΡΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π²Π»ΡΠ·Π°Ρ Π² pod, ΡΠ΅ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° iptables Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π² ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΊΠΎΠ»Π°, envoy Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ΅Π·ΠΈ Π²ΡΡΠ·ΠΊΠΈ ΠΈ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΊΡΠ΄Π΅ Π΄Π° ΠΏΡΠΎΠΊΡΠΈΠΈΡΠ° ΡΡΠ°ΡΠΈΠΊΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΡΠΌ ΠΌΠΈΠΊΡΠ΅ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°ΡΠΈ ΡΡΠ°ΡΡΡΡΠΈ.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΡΠ»Π° ΠΌΡΠ΅ΠΆΠ° ΠΎΡ ΠΏΡΠΎΠΊΡΠΈ ΡΡΡΠ²ΡΡΠΈ envoy, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΎΡ Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° (Pilot). ΠΡΠΈΡΠΊΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈ ΠΈ ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΌΠΈΠ½Π°Π²Π°Ρ ΠΏΡΠ΅Π· envoy. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠΈΡ Π²Π°ΡΠ° ΡΠ°ΠΌΠΎ TCP ΡΡΠ°ΡΠΈΠΊ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ IP Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° Kubernetes ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° kube-dns ΠΏΡΠ΅Π· UDP Π±Π΅Π· ΠΏΡΠΎΠΌΡΠ½Π°. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π°, ΡΠ»Π΅Π΄ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ, ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΡΠ΅ ΠΏΡΠΈΡ Π²Π°ΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡ ΠΏΡΠ°ΡΠ΅Π½ΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ Π²Π΅ΡΠ΅ ΡΠ΅ΡΠ°Π²Π° ΠΊΡΠΌ ΠΊΠΎΡ ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° (ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½Π°, Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Ρ Π½Π° Π²Π΅ΡΠΈΠ³Π°ΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ°).
Π Π°Π·Π±ΡΠ°Ρ
ΠΌΠ΅ Pilot, ΡΠ΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Mixer ΠΈ Π·Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»Π½Π°ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° Π½Π΅Π³ΠΎ
ΠΠΈΠΊΡΠ΅ΡΡΡ Π² ΡΠ΅Π³Π°ΡΠ½Π°ΡΠ° ΡΠΈ ΡΠΎΡΠΌΠ° ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°: istio-telemetry, istio-policy (ΠΏΡΠ΅Π΄ΠΈ Π²Π΅ΡΡΠΈΡ 0.8 Π±Π΅ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ istio-mixer). Π Π΄Π²Π°ΡΠ° ΡΠ° ΠΌΠΈΠΊΡΠ΅ΡΠΈ, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠΈ Π·Π°Π΄Π°ΡΠ°. Istio telemetry ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΎΠ²Π° ΠΊΠΎΠΉ ΠΊΡΠ΄Π΅ ΠΎΡΠΈΠ²Π° ΠΈ Ρ ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π·Π° ΠΎΡΡΠ΅ΡΠΈ Ρ ΠΊΠΎΡ ΡΡΠ΅Π· GRPC. Istio-policy ΠΏΡΠΈΠ΅ΠΌΠ° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, Π·Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈ Π΄Π°Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° ΡΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ. ΠΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ°, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½Π΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π·Π° Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ°, Π½ΠΎ ΡΠ΅ ΠΊΠ΅ΡΠΈΡΠ°Ρ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Π² ΡΡΡΠ°Π½ΠΈΡΠ½Π°ΡΠ° ΠΊΠΎΠ»Π°) Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ ΠΊΠ°ΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. ΠΠ΅ΠΊΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΡΠ΅, ΡΠ΅ Mixer Π΅ Π²ΠΈΡΠΎΠΊΠΎΠ΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΊΠ°ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ΅ΠΏΠ΅Π½Π΅Π½ Π±ΡΡΠ΅Ρ. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ Π±ΡΡΠ΅ΡΠΈΡΠ°Ρ ΠΎΡ ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΠΊΠΎΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡ ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° ΠΌΠΈΠΊΡΠ΅ΡΠ° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ Π΄ΠΎ ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ Π·Π°Π΄Π½ΠΈ ΡΠ°ΡΡΠΈ Π½Π° ΠΌΠΈΠΊΡΠ΅ΡΠ°. Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π°, Π°ΠΊΠΎ Π½ΡΠΊΠΎΠΉ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ΅ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈ, Π±ΡΡΠ΅ΡΡΡ Π½Π°ΡΠ°ΡΡΠ²Π° ΠΈ ΡΠ΅ ΠΈΠ·ΠΌΠΈΠ²Π° ΡΠ»Π΅Π΄ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΌΠΈΠΊΡΠ΅ΡΠ° ΡΠ° ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ: statsd, newrelic ΠΈ Π΄Ρ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Π±Π΅ΠΊΠ΅Π½Π΄, ΡΠΎΠ²Π° Π΅ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡΠΎ ΠΈ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ.
ΠΠ° Π΄Π° ΠΎΠ±ΠΎΠ±ΡΠΈΠΌ, ΡΡ
Π΅ΠΌΠ°ΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ istio-ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡ Π΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ°.
- Π£ΡΠ»ΡΠ³Π° 1 ΠΈΠ·ΠΏΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π΄ΠΎ ΡΡΠ»ΡΠ³Π° 2.
- ΠΡΠΈ Π½Π°ΠΏΡΡΠΊΠ°Π½Π΅ Π½Π° ΡΡΠ»ΡΠ³Π° 1, Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΡΠ΅ ΠΎΠΏΠ°ΠΊΠΎΠ²Π° Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠΈ ΠΊΠΎΡ.
- Sidecar envoy ΡΠ»Π΅Π΄ΠΈ ΠΊΠ°ΠΊ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΎΡΠΈΠ²Π° ΠΊΡΠΌ ΡΡΠ»ΡΠ³Π° 2 ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
- Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π³ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π΄ΠΎ istio-telemetry Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΠΎΡΡΠ΅Ρ.
- Istio-telemetry ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π΄Π°Π»ΠΈ ΡΠΎΠ·ΠΈ ΠΎΡΡΠ΅Ρ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ Π΄ΠΎ Π·Π°Π΄Π½ΠΈΡΠ΅ ΡΠ°ΡΡΠΈ, ΠΊΡΠΌ ΠΊΠΎΠΈ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ.
- Istio-telemetry ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΎΡΡΠ΅ΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΊΡΠΌ Π±Π΅ΠΊΠ΅Π½Π΄Π°, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Istio Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΡΡΡΡΠΎΡΡΠ° ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ (Pilot ΠΈ sidecar envoy).
ΠΡΡΠ²ΠΎ, Π½Π΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (ΠΌΡΠ΅ΠΆΠ°), ΠΊΠΎΡΡΠΎ 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
ΠΡΠΈΡΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ (ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠ°Π²Π½ΠΈΠ½Π°) ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° istio-system Π² Kubernetes.
ΠΠ°ΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΡΠ±Π²Π° ΡΠ°ΠΌΠΎ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΠΌ Pilot. ΠΠ° ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅
Π Π½ΠΈΠ΅ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΡΡΠ½ΠΎ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΠ°ΡΠΈΡ ΠΊΠΎΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
ΠΠ°ΡΠ°Π»Π΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ:
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
Π ΠΊΠΎΡ:
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 for Pilot, ΡΠΈΠΈΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΡΡΠ»ΡΠ³Π°ΡΠ°, Π² ΠΊΠΎΡΡΠΎ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΠ°ΠΌΠ΅ sidecar Ρ envoy, ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΡΠΊΡΠΈΡΠΈΡ ΠΎΡ ΠΏΠΈΠ»ΠΎΡΠ° ΠΈ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π·Π°ΡΠ²ΠΊΠΈ.
ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠ°Π²Π½ΠΈΠ½Π° ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½ΠΈ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² etcd ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Kubernetes.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, Istio (Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½) ΠΈΠΌΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΈΠ·Π²ΡΠ½ ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π΄Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π° ΠΈ Π±ΡΡΠΊΠ° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ»ΡΠ³ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΠ²Π°
ΠΠ° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
- Pod CIDR ΠΈ Service CIDR ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ ΠΈ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΏΠΎΠΊΡΠΈΠ²Π°Ρ.
- ΠΡΠΈΡΠΊΠΈ CIDR ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ CIDR ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ.
- ΠΡΠΈΡΠΊΠΈ API ΡΡΡΠ²ΡΡΠΈ Π½Π° Kubernetes ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π΅Π΄ΠΈΠ½ Π·Π° Π΄ΡΡΠ³.
Π’ΠΎΠ²Π° Π΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Ρ Istio. ΠΡΠ΅ ΠΎΡΠ΅ ΠΎΠ±Π°ΡΠ΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΠΈ ΠΊΠ°ΠΌΡΠ½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ½ΡΠ΅Π½ ΡΡΠ°ΡΠΈΠΊ (ΠΈΠ·Π²ΡΠ½ ΠΊΠ»ΡΡΡΠ΅ΡΠ°), ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ ΠΊΠΎΠ»ΠΈ, ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΌΠΈΠΊΡΠ΅Ρ ΠΈ ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ Π½Π° ΠΌΠΈΠΊΡΠ΅Ρ, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° envoy.
ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ°Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΠΏΡΠΎΡΠΈΡΠ΅ ΡΠΈ, ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌ Π΄Π° Π³ΠΈ ΠΏΠΎΠΊΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com