Β«ΠΠΏΠ°ΡΠ½ΠΎΡΡΡ β ΠΌΠΎΠ΅ Π²ΡΠΎΡΠΎΠ΅ ΠΈΠΌΡΒ», β Π³ΠΎΠ²Π°ΡΠΈΠ²Π°Π» ΠΡΡΠΈΠ½ ΠΠ°ΡΡΡΡ, ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ-Π·Π°Π³Π°Π΄ΠΊΠ° ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±Π°. ΠΠΎ ΡΠΎ, ΡΡΠΎ Π² ΠΏΠΎΡΠ΅ΡΠ΅ Ρ ΡΡΠΏΠ΅ΡΠ°Π³Π΅Π½ΡΠΎΠ² ΠΈ ΡΠΏΠ΅ΡΡΠ»ΡΠΆΠ±, ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Π³ΠΎΠ΄ΠΈΡΡΡ Π΄Π»Ρ ΡΠ»ΡΠΆΠ± ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ , Π³Π΄Π΅ ΡΠΊΡΠΊΠΎΡΠΈΡΠ° Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠ΅ΠΉ.
Π Istio Π²ΠΌΠ΅ΡΡΠ΅ OpenShift ΠΈ Kubernetes ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² Π΄Π΅Π»ΠΎ ΠΏΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΡΠΊΡΡΠ½ΠΎΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠ΅ β ΠΈ ΡΡΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ. ΠΠ± ΡΡΠΎΠΌ ΠΈ ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π² ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΌ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΏΠΎΡΡΠ΅ ΠΈΠ· ΡΠ΅ΡΠΈΠΈ ΠΏΡΠΎ Istio.
ΠΠΎΠ³Π΄Π° ΡΠΊΡΠΊΠΎΡΠΈΡΠ° β ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΊΡΠΊΠΎΡΠΈΡΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠ°Π·Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ΄Π΅ΡΡ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π·Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ. ΠΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ Π²ΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ, ΠΈ Π·Π΄Π΅ΡΡ Π²Π°Ρ ΠΆΠ΄Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ.
ΠΡΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠ° ΡΡΠΎΠΈΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΠΊΠΎΠ². Π Π°Π±ΠΎΡΠ° Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΉ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ Istio ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Β«ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ»ΡΠΆΠ±ΡΒ» (ΡΠΊΡΡΡΡΡ ΠΎΡ ΠΏΠΎΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π³Π»Π°Π· Π²Π΅ΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°) Π±Π΅Π· Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° Π² ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½-ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π΄Π°ΠΆΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠΌΠΈΠ½ β Β«Π’Π°ΠΉΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊΒ» (Dark Launch), ΠΊΠΎΡΠΎΡΡΠΉ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Ρ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΠΏΠΈΠΎΠ½ΡΠΊΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«Π·Π΅ΡΠΊΠ°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ°Β».
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π°Π±Π·Π°ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½ Β«ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅Β» (deploy), Π° Π½Π΅ Β«Π·Π°ΠΏΡΡΠΊΒ» (release). ΠΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°ΡΡ β ΠΈ, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ β ΡΠ²ΠΎΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΡΠ°ΠΊ ΡΠ°ΡΡΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΆΠ΅Π»Π°Π΅ΡΠ΅. ΠΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΠΊ, Π²ΡΠ΄Π°Π²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΈΡΠ°ΡΡ Π² Π»ΠΎΠ³ΠΈ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΡΡΡ. ΠΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌ ΡΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΡΡΠΊΠ°ΡΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½. Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΡΠΏΡΡΠΊ ΠΠ β ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅. Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²ΡΠ΅Π³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π·Π°Ρ ΠΎΡΠΈΡΠ΅, Π° Π²ΠΎΡ Π²ΡΠΏΡΡΠΊ β ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π³ΠΎΡΠΎΠ²Ρ.
ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠΊΡΠΊΠΈ β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ
ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Istio, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅ HTTP-Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ recommendation v1 (Π²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π²Π·ΡΡΡ ΠΈΠ·
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΠΊΡ mirror:
Π²Π½ΠΈΠ·Ρ ΡΠΊΡΠΈΠ½Π° β ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° Π·Π°Π΄Π°Π΅Ρ Π·Π΅ΡΠΊΠ°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ°. ΠΠ°, Π²ΠΎΡ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ!
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΡΠ°Π½Π΅Ρ ΡΠΎ, ΡΡΠΎ Π²Π°ΡΠ° ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½-ΡΠΈΡΡΠ΅ΠΌΠ° (v1) Π±ΡΠ΄Π΅Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ, Π½ΠΎ ΡΠ°ΠΌΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Π·Π΅ΡΠΊΠ°Π»ΠΈΡΡΡΡ Π½Π° v2, ΡΠΎ Π΅ΡΡΡ ΡΡΠ΄Π° Π±ΡΠ΄ΡΡ ΡΡ ΠΎΠ΄ΠΈΡΡ ΠΈΡ ΠΏΠΎΠ»Π½ΡΠ΅ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ v2 Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ β Π½Π° Π½Π°ΡΡΠΎΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΠ°ΡΠΈΠΊΠ΅, β Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²ΠΌΠ΅ΡΠΈΠ²Π°ΡΡΡ Π² ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½-ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΈ ΡΡΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΊΡΠΊΠΎΡΠΈΡΡ? ΠΠ°, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ. ΠΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ.
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π΄ΡΠ°ΠΌΡ
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΊΠΎΠ΄Π΅ v2 Π½Π°Π΄ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . Π‘Π°ΠΌΠΈ Π·Π°ΠΏΡΠΎΡΡ Π·Π΅ΡΠΊΠ°Π»ΡΡΡΡ Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎ, Π½ΠΎ Π²ΠΎΡ Π²ΡΠ±ΠΎΡ ΡΠΏΠΎΡΠΎΠ±Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΠΎΡΡΠ°Π΅ΡΡΡ Π·Π° Π²Π°ΠΌΠΈ β Π° Π²ΠΎΡ ΡΡΠΎ ΡΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠΎΠ²ΡΠΎΡΠΈΠΌ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ
Π’Π°ΠΉΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ Ρ Π·Π΅ΡΠΊΠ°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΠΈΠΊΠ° (Dark Launch/Request Mirroring) ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Ρ ΠΊΠΎΠ΄.
ΠΠΈΡΠ° Π΄Π»Ρ ΡΠ°Π·ΠΌΡΡΠ»Π΅Π½ΠΈΡ
Π ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΡΠΎ Π·Π΅ΡΠΊΠ°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°ΡΡΡ ΠΈΠ· Π½ΠΈΡ
Π½Π΅ Π½Π° v1, Π° Π½Π° v2? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅Π½Ρ ΠΎΡ Π²ΡΠ΅Ρ
Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. Π ΠΏΠΎΡΠΎΠΌ, ΡΠΆΠ΅ Π³Π»ΡΠ΄Ρ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ v2, ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ Π½Π° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ. ΠΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ Π²Π΅ΡΠ½ΡΡΡ Π²ΡΡ Π½Π° v1, Π΅ΡΠ»ΠΈ Ρ v2 ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ Π½Π΅ ΡΠ°ΠΊ. ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Canary Deployment (Β«ΠΊΠ°Π½Π°ΡΠ΅Π΅ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅Β» β ΡΠ΅ΡΠΌΠΈΠ½
Canary Deployment Π² Istio: ΡΠΏΡΠΎΡΠ°Π΅ΠΌ Π²Π²ΠΎΠ΄ Π² ΡΡΡΠΎΠΉ
ΠΡΡΠΎΡΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ
Π‘ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Canary Deployment ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°: ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΡΡΠ° (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ β ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°) Π²Ρ ΡΠ½Π°ΡΠ°Π»Π° Π΄Π°Π΅ΡΠ΅ ΠΊ Π½Π΅ΠΉ Π΄ΠΎΡΡΡΠΏ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠ»ΠΈ Π²ΡΡ ΠΈΠ΄Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π²Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΠ΅ ΡΡΡ Π³ΡΡΠΏΠΏΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π½Π΅ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π±Π°ΡΠ°Ρ Π»ΠΈΡΡ, ΠΈΠ»ΠΈ β Π΅ΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΊ ΠΈ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ β Π² ΠΈΡΠΎΠ³Π΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΠ΅ Π½Π° Π½Π΅Π΅ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠΎΠ΄ΡΠΌΠ°Π½Π½ΠΎ ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π²Π²ΠΎΠ΄Ρ Π² ΡΡΡΠΎΠΉ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Ρ Π½Π° Π½Π΅Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ½ΠΈΠ·ΠΈΡΡ ΡΠΈΡΠΊΠΈ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ.
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Istio ΡΠΏΡΠΎΡΠ°Π΅Ρ Canary Deployment, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ². Π Π΄Π°, Π²ΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΡΠΎΠ³Π°Ρ Π²Π°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄.
Π€ΠΈΠ»ΡΡΡΡΠ΅ΠΌ Π±ΡΠ°ΡΠ·Π΅Ρ
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΡΠΎΡΡΡΡ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π² ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ β ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π½Π° v2 ΡΡ ΠΎΠ΄ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΈΠ· Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² Safari. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ:
ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ curl
Π±ΡΠ΄Π΅ΠΌ Π² ΡΠΈΠΊΠ»Π΅ ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅, Π²ΡΠ΅ ΠΎΠ½ΠΈ ΡΡ
ΠΎΠ΄ΡΡ Π½Π° v1:
Π Π³Π΄Π΅ ΠΆΠ΅ ΡΡΠ°ΡΠΈΠΊ Π½Π° v2? ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· Π½Π°ΡΠ΅ΠΉ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠΎ Π΅Π³ΠΎ ΠΏΠΎΠΏΡΠΎΡΡΡ Π½Π΅Ρ. ΠΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠΆΠ½ΠΈΠ΅ ΡΡΡΠΎΡΠΊΠΈ Π½Π° ΡΠΊΡΠΈΠ½Π΅ Π²ΡΡΠ΅: ΡΡΠΎ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ ΠΈΠ· Π±ΡΠ°ΡΠ·Π΅ΡΠ° Safari, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²ΡΠ΄Π°Π» Π²ΠΎΡ ΡΡΠΎ:
ΠΠ΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Π°Ρ Π²Π»Π°ΡΡΡ
ΠΡ ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π»ΠΈ, ΡΡΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ (Π΄ΡΠΌΠ°Π΅ΠΌ, Π²Ρ ΠΈ ΡΠ°ΠΌΠΈ ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅, ΡΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ):
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅, Π½Π° ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ΅ΠΉΡΡΠ²ΡΠΉΡΠ΅ ΡΠΌΠ½ΠΎ
Π£ΠΌΠ½Π°Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ»ΠΈΡΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²Π°ΠΌ Ρ ΠΎΡΠ΅ΡΡΡ. Π ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π²Π²ΠΎΠ΄ Π² ΡΡΡΠΎΠΉ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ, ΡΡΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ Π²Π΅ΡΠ½ΡΡΡ ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ.
ΠΠ°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π»ΠΈΡΡ?
ΠΠ°Π³ΠΎΡΠ΅Π»ΠΈΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Istio, Kubernetes ΠΈ OpenShift Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅? ΠΠΎΠΌΠ°Π½Π΄Π°
β
Istio Egress: Π²ΡΡ ΠΎΠ΄ ΡΠ΅ΡΠ΅Π· ΡΡΠ²Π΅Π½ΠΈΡΠ½ΡΡ Π»Π°Π²ΠΊΡ
ΠΡΠΈΠΌΠ΅Π½ΡΡ Istio Π²ΠΌΠ΅ΡΡΠ΅ Ρ Red Hat OpenShift ΠΈ Kubernetes, ΠΌΠΎΠΆΠ½ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΡΠ΅Π±Π΅ ΠΆΠΈΠ·Π½Ρ Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. Π‘Π΅ΡΠ²ΠΈΡΠ½Π°Ρ ΡΠ΅ΡΠΊΠ° Istio ΡΠΏΡΡΡΠ°Π½Π° Π²Π½ΡΡΡΡ KubernetesβΠΎΠ²ΡΠΊΠΈΡ podβΠΎΠ², Π° Π²Π°Ρ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ (Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ) ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΏΡΠΎΡΠ΅Π΅ β Π²ΡΠ΅ ΡΡΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π° ΡΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ sidecar-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ OpenShift-Kubernetes?
ΠΠ΄Π΅ΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Istio Egress. ΠΡΠ»ΠΈ Π² Π΄Π²ΡΡ ΡΠ»ΠΎΠ²Π°Ρ , ΡΠΎ ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ (ΡΠΈΡΠ°ΠΉ: Β«ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΒ»), ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡ Π² Π²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ KubernetesβΠΎΠ²ΡΠΊΠΈΡ podβΠΎΠ². ΠΡΠ»ΠΈ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ, ΡΠΎ Π² ΡΡΠ΅Π΄Π΅ Istio Egress ΡΡΠ°ΡΠΈΠΊ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° podβΠΎΠ² ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°ΠΌΠΈ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ IP-ΡΠ°Π±Π»ΠΈΡ. Π ΡΠ°ΠΊΠΎΠ΅ Π·Π°ΠΊΡΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ ΡΠ½Π°ΡΡΠΆΠΈ.
Egress ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΠΎΠΉΡΠΈ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ IP-ΡΠ°Π±Π»ΠΈΡΡ, Π»ΠΈΠ±ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠ°Π²ΠΈΠ» Egress, Π»ΠΈΠ±ΠΎ Π΄Π»Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° IP-Π°Π΄ΡΠ΅ΡΠΎΠ².
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ GET-Π·Π°ΠΏΡΠΎΡ ΠΊ httpbin.org/headers.
(httpbin.org β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠ΅ΡΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡ-Π·Π°ΠΏΡΠΎΡΠΎΠ².)
ΠΡΠ»ΠΈ Π²Π²Π΅ΡΡΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ curl http://httpbin.org/headers
, ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ ΡΡΠΎΡ ΠΆΠ΅ Π°Π΄ΡΠ΅Ρ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅:
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΌ ΡΠ΅ΡΠ²ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π΅ΠΌΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.
ΠΠΌΠΏΠΎΡΡΠΎΠ·Π°ΠΌΠ΅ΡΠ°Π΅ΠΌ Π² Π»ΠΎΠ±
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ Java-ΠΊΠΎΠ΄ ΡΡΠΎΠ³ΠΎ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ Π·Π°ΠΏΡΡΡΠΈΠΌ Π΅Π³ΠΎ Ρ ΡΠ΅Π±Ρ, Π³Π΄Π΅, Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎΠΈΡ Istio. (ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΠ±ΡΠ°ΡΠΈΠ²ΡΠΈΡΡ ΠΊ curl egresshttpbin-istioegress.$(minishift ip).nip.io
, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π²ΠΎΡ ΡΡΠΎ:
ΠΠΏΠ°, Π° ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ? ΠΡΡ ΠΆΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ. Π§ΡΠΎ Π·Π½Π°ΡΠΈΡ Not Found? ΠΡ ΠΆΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π΄Π»Ρ Π½Π΅Π³ΠΎ curl
.
Π Π°ΡΡΠΈΡΡΠ΅ΠΌ IP-ΡΠ°Π±Π»ΠΈΡΡ Π½Π° Π²Π΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ
ΠΠΈΠ½ΠΈΡΡ (ΠΈΠ»ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΡΡ) Π·Π° ΡΡΠΎ Π½Π°Π΄ΠΎ Istio. ΠΠ΅Π΄Ρ Istio β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ sidecar- ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ (Π½Ρ ΠΈ Π·Π° ΠΌΠ°ΡΡΡ Π΄ΡΡΠ³ΠΈΡ Π²Π΅ΡΠ΅ΠΉ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅). ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ IP-ΡΠ°Π±Π»ΠΈΡΡ Π·Π½Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ². Π httpbin.org ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΡΠ½Π°ΡΡΠΆΠΈ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½. Π Π²ΠΎΡ ΡΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Istio Egress β Π±Π΅Π· ΠΌΠ°Π»Π΅ΠΉΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π²Π°ΡΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅ Egress-ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Istio ΠΈΡΠΊΠ°ΡΡ (Π΅ΡΠ»ΠΈ Π½Π°Π΄ΠΎ, ΡΠΎ ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠΈΡΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅) Π½ΡΠΆΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, httpbin.org. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° (egress_httpbin.yml), ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π·Π΄Π΅ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°Ρ:
ΠΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ:
istioctl create -f egress_httpbin.yml -n istioegress
ΠΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Egress ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ istioctl get egressrules
:
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΎΠΏΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ curl β ΠΈ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
ΠΡΡΠ»ΠΈΠΌ ΠΎΡΠΊΡΡΡΠΎ
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Istio ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΌΠΈΡΠΎΠΌ. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ OpenShift ΠΈ ΡΡΠ»ΠΈΡΡ ΠΈΠΌΠΈ ΡΠ΅ΡΠ΅Π· Kubernetes, Π΄Π΅ΡΠΆΠ° Π²ΡΡ Π² podβΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΡΡΡΡ Π²Π²Π΅ΡΡ -Π²Π½ΠΈΠ· ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡΠΈ. Π ΠΏΡΠΈ ΡΡΠΎΠΌ Π²Ρ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ Π²Π°ΡΠ΅ΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ. Π Π΄Π°, Π΅ΡΠ΅ ΡΠ°Π· ΠΏΠΎΠ²ΡΠΎΡΠΈΠΌΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΡΠΎΠ³Π°Ρ Π²Π°Ρ ΠΊΠΎΠ΄.
ΠΡΠΎ Π±ΡΠ» ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠΎΡΡ ΠΈΠ· ΡΠ΅ΡΠΈΠΈ ΠΏΠΎ Istio. ΠΡΡΠ°Π²Π°ΠΉΡΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ β Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ!
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com