ΠΠ° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ
ΠΠ΅ Π·Π±ΠΎΡΡΠ²Π°ΠΌ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° dotCloud, ΠΊΠΎΡΠ° Π±Π΅ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ ΡΡΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ ΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°ΡΠ΅ ΠΈΠ»ΡΠ°Π΄Π½ΠΈΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ΅ Π³ΠΈ ΠΎΠ±ΡΠ°ΡΠ½Π°ΠΌ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΡΠΈΡΠ΅ ΡΠΎ ΠΊΠΎΠΈ ΡΠ΅ ΡΠΎΠΎΡΠΈΠ²ΠΌΠ΅ ΠΏΡΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ ΠΈ Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅, ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ ΠΌΠΎΠΆΠ΅ (ΠΈΠ»ΠΈ Π½Π΅) Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ.
ΠΡΡΠΎΡΠΈΡΠ° Π½Π° dotCloud
ΠΠΈΡΡΠ²Π°Π² Π·Π° ΠΈΡΡΠΎΡΠΈΡΠ°ΡΠ° Π½Π° dotCloud ΠΈ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Π·Π° ΠΎΠ²Π°Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, Π½ΠΎ Π½Π΅ Π·Π±ΠΎΡΡΠ²Π°Π² ΠΌΠ½ΠΎΠ³Ρ Π·Π° ΠΌΡΠ΅ΠΆΠ½ΠΈΠΎΡ ΡΠ»ΠΎΡ. ΠΠΊΠΎ Π½Π΅ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ΅ Π½ΡΡΠ½Π΅ΡΠ΅ Π²ΠΎ ΡΠΈΡΠ°ΡΠ΅ΡΠΎ
ΠΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ Π±Π΅ΡΠ΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΠΎΠ½ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° dotCloud. ΠΠ΅ Π·Π°ΡΠΎΠ° ΡΡΠΎ Π±Π΅ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΊΡΠ» (ΠΈΠ°ΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ Π΄ΠΎΠ±ΡΠΎ Π²ΠΎ ΡΠ²ΠΎΠ΅ΡΠΎ Π²ΡΠ΅ΠΌΠ΅!), ΡΡΠΊΡ ΠΏΡΠ²Π΅Π½ΡΡΠ²Π΅Π½ΠΎ Π·Π°ΡΠΎΠ° ΡΡΠΎ ΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π°Π»Π°ΡΠΊΠΈ ΡΠ°ΠΊΠ²ΠΈΠΎΡ Π΄ΠΈΠ·Π°ΡΠ½ ΠΌΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° Π·Π° ΠΊΡΠ°ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΎΠ΄ ΡΠΊΡΠΎΠΌΠ΅Π½ ΡΠΈΠΌ, Π΄ΠΎΠΊΠΎΠ»ΠΊΡ ΠΈΠΌ ΡΡΠ΅Π±Π° Π½Π°ΡΠΈΠ½ Π΄Π° Π³ΠΎ Π½Π°ΡΠΎΡΠ°Ρ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΡΠΏ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ ΠΈΠ»ΠΈ Π΅Π΄Π΅Π½ ΠΊΡΠΏ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ° ΠΎΠ²ΠΎΡ Π½Π°ΡΠΈΠ½, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈΡΠ΅: ΡΡΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ Π°ΠΊΠΎ ΡΠ°Π·Π²ΠΈΠ΅ΡΠ΅ ΡΓ¨ ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠ° ΠΌΡΠ΅ΠΆΠ° Π·Π° ΡΡΠ»ΡΠ³ΠΈ. Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π΅Π½ ΠΈΠ·Π±ΠΎΡ Π΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ Π΄Π° Π³ΠΎ ΠΊΡΠΏΠΈΡΠ΅.
Π ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ Π·Π° Ρ ΠΎΡΡΠΈΡΠ°Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ
ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° dotCloud ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π³ΠΈ ΠΈΠ·Π»ΠΎΠΆΠ°Ρ HTTP ΠΈ TCP ΠΊΡΠ°ΡΠ½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ.
HTTP ΠΊΡΠ°ΡΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ Π΄ΠΎΠ΄Π°Π΄Π΅Π½ Π²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅
ΠΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°Π°Ρ ΡΠΎ HTTP ΠΊΡΠ°ΡΠ½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΏΡΠ΅ΠΊΡ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈ Π΄ΠΎΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠ΄ ΡΡΠ»ΠΎΠ² ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π΄ΠΎΠΌΠ΅Π½ΠΎΡ Π΄Π° ΡΠΊΠ°ΠΆΡΠ²Π° Π½Π° Π±Π°Π»Π°Π½ΡΠ΅ΡΠΈ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ dotCloud. ΠΠΈΡΡΠΎ ΠΏΠΎΡΠ΅Π±Π½ΠΎ.
TCP ΠΊΡΠ°ΡΠ½ΠΈ ΡΠΎΡΠΊΠΈ ΠΏΠΎΠ²ΡΠ·Π°Π½ ΡΠΎ Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠ°, ΠΊΠΎΡ ΠΏΠΎΡΠΎΠ° ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΡΠ²Π° Π΄ΠΎ ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π²ΠΎ ΡΠΎΡ ΠΎΡΠ°ΠΊ ΠΏΡΠ΅ΠΊΡ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ°.
ΠΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Ρ ΡΠΎ ΠΊΡΠ°ΡΠ½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ Π½Π° TCP ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ ΠΈΠΌΠ΅ Π½Π° Π΄ΠΎΠΌΠ°ΡΠΈΠ½ (Π½Π΅ΡΡΠΎ ΠΊΠ°ΠΊΠΎ gateway-X.dotcloud.com) ΠΈ Π±ΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠ°.
ΠΠ²Π° ΠΈΠΌΠ΅ Π½Π° Π΄ΠΎΠΌΠ°ΡΠΈΠ½ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π° Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΈ βnatsβ (Π½Π΅ Π΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ ΡΠΎ
ΠΠΊΠΎ ΡΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Π½ΠΈ ΡΠΎ Kubernetes, ΠΎΠ²Π° Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ ΡΠ΅ Π²Π΅ ΠΏΠΎΡΡΠ΅ΡΠΈ Π½Π° Services
ΠΠ΅ΠΌΠ°ΡΠ΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° dotCloud
Π‘Γ¨ Π±Π΅ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ: ΠΏΡΠ²ΠΈΡΠ½ΠΈΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° HTTP ΠΈ TCP ΡΡΡΠΈΡΠ°ΡΠΊΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ Π±Π΅Π° Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ ΡΠ°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΡΠΎΡΠΈΡΠΈ Π»ΠΈΠ½ΠΈΠΈ Π½Π° Python ΡΠ΅ΠΊΠΎΡΠ°. ΠΠ΄Π½ΠΎΡΡΠ°Π²Π½ΠΈ (Π±ΠΈ ΡΠ΅ΠΊΠ»Π° Π½Π°ΠΈΠ²Π½ΠΈ) Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΡΡΠΎΠ²ΡΡΡΠ²Π°Π° ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ°ΡΡΠ΅ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΠΈ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΡΠ²Π°Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π±Π°ΡΠ°ΡΠ°.
ΠΠ΅ Π±Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΠΎΠΏΡΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΠΎΡ ΠΊΠΎΠ΄. ΠΡΠΎΠ±Π΅Π½ΠΎ,
ΠΠ°ΠΊΠΎ ΠΎΠ²Π° ΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π° ΠΎΠ΄ ΠΌΠΎΠ΄Π΅ΡΠ½Π°ΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ½Π° ΠΌΡΠ΅ΠΆΠ°?
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ Π²ΠΈΠ΄Π»ΠΈΠ²ΠΎΡΡ. ΠΠΎΠΎΠΏΡΡΠΎ Π½Π΅ΠΌΠ°Π²ΠΌΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠ° Π·Π° TCP ΡΡΡΠΈΡΠ°ΡΠΊΠ°ΡΠ° ΠΌΡΠ΅ΠΆΠ°. ΠΠΎΠ³Π° ΡΡΠ°Π½ΡΠ²Π° Π·Π±ΠΎΡ Π·Π° ΡΡΡΠΈΡΠ°ΡΠ΅ HTTP, ΠΏΠΎΠ΄ΠΎΡΠ½Π΅ΠΆΠ½ΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΠΈ Π²ΠΎΠ²Π΅Π΄ΠΎΠ° Π΄Π΅ΡΠ°Π»Π½ΠΈ HTTP ΠΌΠ΅ΡΡΠΈΠΊΠ° ΡΠΎ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ, Π½ΠΎ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΠΎΠ΄Π°Ρ ΡΡΡΠ΅ ΠΏΠΎΠ΄Π°Π»Π΅ΠΊΡ, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΡΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠ° ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ Prometheus, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠΈΠ΄Π»ΠΈΠ²ΠΎΡΡΠ° Π΅ Π²Π°ΠΆΠ½Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π° (Π·Π° Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π²ΠΎ ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ), ΡΡΠΊΡ ΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°Π°Ρ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π‘Π΅ ΡΠ°Π±ΠΎΡΠΈ Π·Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ
ΠΡΠΈΠΊΠ°ΡΠ½ΠΎΡΡ Π½Π° ΡΡΡΠΈΡΠ°ΡΠ΅ Π΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½. ΠΠΎ ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π·Π° ΡΡΡΠΈΡΠ°ΡΠ΅ dotCloud, ΡΠ΅Π»ΠΈΠΎΡ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΏΠΎΠΌΠΈΠ½Π΅ Π½ΠΈΠ· ΠΊΠ»Π°ΡΡΠ΅Ρ Π½Π° ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈ ΡΡΡΠΈΡΠ°ΡΠΊΠΈ ΡΠ°Π·Π»ΠΈ. ΠΠ²Π° Π·Π½Π°ΡΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ°Π»Π½ΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠΈ AZ (Π·ΠΎΠ½Π° Π½Π° Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΎΡΡ) ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΠ°. Π‘Π΅ ΡΠ΅ΡΠ°Π²Π°ΠΌ Π½Π° ΠΊΠΎΠ΄ Π·Π° ΡΠΌΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΠΎ ΠΏΡΠ°Π²Π΅ΡΠ΅ Π½Π°Π΄ ΡΡΠΎ SQL Π±Π°ΡΠ°ΡΠ° ΠΏΠΎ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΈ ΠΎΡΠ²ΠΎΡΠ°ΡΠ΅ Π½ΠΎΠ²Π° Π²ΡΡΠΊΠ° ΡΠΎ SQL ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Π·Π° ΡΠ΅ΠΊΠΎΠ΅ Π±Π°ΡΠ°ΡΠ΅. ΠΠΎΠ³Π° ΡΠ°Π±ΠΎΡΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° ΡΠ΅ Π²ΡΠΈΡΡΠ²Π° Π²Π΅Π΄Π½Π°Ρ, Π½ΠΎ Π²ΠΎ dotCloud ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π·Π° Π΄Π° ΡΠ΅ Π²ΡΠΈΡΠ° Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠ΅ΠΊΠΎΡΠ° TCP ΠΊΠΎΠ½Π΅ΠΊΡΠΈΡΠ° (ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ SQL Π±Π°ΡΠ°ΡΠ΅) ΡΡΠ°Π΅ Π΄Π΅ΡΠ΅ΡΠΈΡΠΈ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΎ ΠΎΠ²ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΡΠ»ΡΡΠ°Ρ, ΠΏΠΎΡΡΠΎΡΠ°Π½ΠΈΡΠ΅ Π²ΡΡΠΊΠΈ Π³ΠΎ ΡΠ΅ΡΠΈΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ.
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ Π²ΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ Π²Π°ΠΊΠ²ΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΡΠ²ΠΎ, ΡΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π°Ρ Π΄Π°Π»ΠΈ Π²ΡΡΠΊΠΈΡΠ΅ ΡΠ΅ Π½Π°ΡΠΎΡΡΠ²Π°Π°Ρ Π²ΠΎ ΠΈΠ·Π²ΠΎΡΠΎΡ. ΠΠΎΠ³ΠΈΡΠΊΠΈΠΎΡ ΡΠ΅ΠΊ Π΅ ΠΈΡΡ: ΠΊΠ»ΠΈΠ΅Π½Ρ β ΠΌΠ΅Ρ β ΡΠ΅ΡΠ²ΠΈΡ
, Π½ΠΎ ΡΠ΅Π³Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π° Π½Π΅ Π½Π° ΠΎΠ΄Π΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΡΠ°Π·Π»ΠΈ, ΠΏΠ° Π²ΡΡΠΊΠ°ΡΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ β ΠΌΠ΅Ρ
Π΅ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΈ ΠΌΠ½ΠΎΠ³Ρ Π±ΡΠ· (ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ).
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π°Ρ ΠΏΠΎΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅. Π‘ΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π° Π·Π΄ΡΠ°Π²ΡΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ·Π°Π΄ΠΈΠ½ΡΠΊΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΠΈΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΈΡΠΏΡΠ°ΡΠ°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ Π΄ΠΎ ΠΏΠΎΠ±ΡΠ·ΠΈ Π·Π°Π΄Π½ΠΈ Π΄Π΅Π»ΠΎΠ²ΠΈ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈ Π²ΠΊΡΠΏΠ½ΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ.
Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°. Π Π΅ΡΠ΅ΡΠΊΠ°ΡΠ° Π·Π° ΡΡΡΠΈΡΠ°ΡΠ΅ dotCloud ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ Π½Π° EC2 Classic ΠΈ Π½Π΅ Π³ΠΎ ΡΠΈΡΡΠΈΡΠ°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ (Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΊΠ°ΡΠ° Π΄Π΅ΠΊΠ° Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΡ ΡΡΠΏΠ΅Π΅ Π΄Π° ΡΡΠ°Π²ΠΈ ΡΡΠ°Π³Π°Ρ Π½Π° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° EC2, Π²Π΅ΡΠ΅ ΡΡΠ΅ Π±ΠΈΠ»Π΅ Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° Π½Π΅Π²ΠΎΠ»ΡΠ°). Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΡΡΠ°Π½ΡΠΏΠ°ΡΠ΅Π½ΡΠ½ΠΎ Π³ΠΎ ΡΡΠΈΡΠ°Ρ ΡΠ΅Π»ΠΈΠΎΡ Π½Π°Ρ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎ ΠΌΠ΅ΡΡΡΠ΅Π±Π½Π° TLS Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΡΠΈΡΡΠΈΡΠ°ΡΠ΅.
Π ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ Π·Π° ΡΡΠ»ΡΠ³ΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°
ΠΠΎΠ±ΡΠΎ, ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°Π²ΠΌΠ΅ Π·Π° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ ΠΏΠΎΠΌΠ΅ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅, Π½ΠΎ ΡΡΠΎ Π΅ ΡΠΎ ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° dotCloud?
Π‘Π°ΠΌΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΡΠ΅ ΡΠΎΡΡΠΎΠ΅ΡΠ΅ ΠΎΠ΄ ΠΎΠΊΠΎΠ»Ρ ΡΡΠΎΡΠΈΠ½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ΅ΠΊΠΎΠΈ Π³ΠΈ ΠΏΡΠΈΡΠ°ΡΠΈΡΠ° Π±Π°ΡΠ°ΡΠ°ΡΠ° ΠΎΠ΄ Π΄ΡΡΠ³ΠΈ, Π° Π½Π΅ΠΊΠΎΠΈ Π±Π΅Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Π° ΡΠΎ Π΄ΡΡΠ³ΠΈ ΡΡΠ»ΡΠ³ΠΈ, Π½ΠΎ ΡΠ°ΠΌΠΈΡΠ΅ Π½Π΅ ΠΏΡΠΈΡΠ°ΡΠ°Π° Π²ΡΡΠΊΠΈ. ΠΠΎ ΡΠ΅ΠΊΠΎΡ ΡΠ»ΡΡΠ°Ρ, ΡΠ΅ΠΊΠΎΡΠ° ΡΡΠ»ΡΠ³Π° ΠΌΠΎΡΠ° Π΄Π° Π³ΠΈ Π·Π½Π°Π΅ ΠΊΡΠ°ΡΠ½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ Π½Π° Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅.
ΠΠ½ΠΎΠ³Ρ ΡΡΠ»ΡΠ³ΠΈ Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π·Π° Π½Π°ΡΠΎΡΡΠ²Π°ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΠΎΠ³ΠΎΡΠ΅. ΠΡΡΡΠ½ΠΎΡΡ, ΠΌΠ½ΠΎΠ³Ρ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ ΡΡΠΎΡΠΈΠ½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ Π½Π° dotCloud ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π΅Π½ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π΄ΠΎΠ²Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° dotCloud. ΠΠΎ, Π½Π° ΠΌΠ°Π» Π±ΡΠΎΡ ΡΡΠ»ΡΠ³ΠΈ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ (ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΎΠ½ΠΈΠ΅ ΡΡΠΎ ΡΠ° ΡΠΏΡΠΎΠ²Π΅Π΄ΡΠ²Π°Π°Ρ ΠΎΠ²Π°Π° ΠΌΡΠ΅ΠΆΠ° Π·Π° Π½Π°ΡΠΎΡΡΠ²Π°ΡΠ΅) ΠΈΠΌ ΡΡΠ΅Π±Π°ΡΠ΅ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ, ΡΠΎ ΠΏΠΎΠΌΠ°Π»ΠΊΡ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ (Π±ΠΈΠ΄Π΅ΡΡΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Π° Π΄Π° Π·Π°Π²ΠΈΡΠ°Ρ ΠΎΠ΄ ΡΠ΅Π±Π΅ Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ - ΡΡΠ°ΡΠΈΠΎΡ Π΄ΠΎΠ±Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎ ΠΏΠΈΠ»Π΅ΡΠΊΠΎ ΠΈ ΡΠ°ΡΡΠ°).
ΠΠ²ΠΈΠ΅ ΡΡΠ»ΡΠ³ΠΈ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ»ΡΡΠ½ΠΈ Π·Π° ΠΌΠΈΡΠΈΡΠ°ΡΠ°, Π±Π΅Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π΅Π½ΠΈ ΡΠΎ ΠΏΡΡΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΊΠ»ΡΡΠ½ΠΈ ΡΠ°Π·Π»ΠΈ. ΠΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ, ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡΠΊΠΈ ΡΡΠ»ΡΠ³ΠΈ Π½Π΅ Π±Π΅Π° ΠΊΠΎΡΠΈΡΡΠ΅Π½ΠΈ: ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°Ρ, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Ρ ΠΈ ΡΡΠΊΠ°Ρ. ΠΠΊΠΎ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΠΎΡΠ΅Π΄ΠΈΡΠ΅ ΡΠΎ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ, ΡΠΎΠ° Π΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ Π°Π²ΠΈΠΎΠ½ docker run
Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ΅, Π½Π°ΠΌΠ΅ΡΡΠΎ Π·Π°Π΄Π°ΡΠ°ΡΠ° Π΄Π° ΡΠ΅ Π΄Π΅Π»Π΅Π³ΠΈΡΠ° Π½Π° Kubernetes. ΠΡΠΈΠ»ΠΈΡΠ½ΠΎ Π΅ ΡΠ»ΠΈΡΠ΅Π½ ΠΏΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡ
ΠΠ²ΠΈΠ΅ ΡΡΠ»ΡΠ³ΠΈ Π±Π΅Π° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ ΠΈ Π³ΡΡΠ± Π½Π°ΡΠΈΠ½: Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° YAML Π³ΠΈ Π½Π°Π²Π΅Π΄Π΅ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΠΈΠΌΠΈΡΠ° ΠΈ Π°Π΄ΡΠ΅ΡΠΈ; ΠΈ ΡΠ΅ΠΊΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° Π·Π΅ΠΌΠ΅ ΠΊΠΎΠΏΠΈΡΠ° ΠΎΠ΄ ΠΎΠ²Π°Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° YAML Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅.
ΠΠ΄ Π΅Π΄Π½Π° ΡΡΡΠ°Π½Π°, ΡΠΎΡ Π΅ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠΈΠ³ΡΡΠ΅Π½ Π±ΠΈΠ΄Π΅ΡΡΠΈ Π½Π΅ Π±Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° ΠΎΠ΄ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½Π° ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ° Π·Π° ΠΊΠ»ΡΡΠ΅Π²ΠΈ/Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ Zookeeper (Π·Π°ΠΏΠΎΠΌΠ½Π΅ΡΠ΅, ΠΈΡΠ½. ΠΈΠ»ΠΈ ΠΠΎΠ½Π·ΡΠ» Π½Π΅ ΠΏΠΎΡΡΠΎΠ΅ΡΠ΅ Π²ΠΎ ΡΠΎΠ° Π²ΡΠ΅ΠΌΠ΅). ΠΠ΄ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π°, Π³ΠΎ ΠΎΡΠ΅ΠΆΠ½ΡΠ²Π°ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅. Π‘Π΅ΠΊΠΎΡ ΠΏΠ°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈ, ΡΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°Π°Ρ Π°ΠΆΡΡΠΈΡΠ°Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° YAML (ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ°Π»Π½ΠΎ ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°). ΠΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ!
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΏΠΎΡΠ½Π°Π²ΠΌΠ΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Π½ΠΎΠ²Π° ΡΠ΅ΠΌΠ°, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠ΅ΠΊΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ ΡΠΎ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ. ΠΠ°ΠΌΠ΅ΡΡΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΡΡΠ°, ΡΡΠ΅Π±Π° ΡΠ°ΠΌΠΎ Π΄Π° Π³ΠΎ Π·Π½Π°Π΅ Π±ΡΠΎΡΠΎΡ Π½Π° ΠΏΠΎΡΡΠ°ΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ ΠΏΡΠ΅ΠΊΡ localhost
. ΠΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ ΠΏΡΠΎΠΊΡΠΈ ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ ΠΎΠ²Π°Π° Π²ΡΡΠΊΠ° ΠΈ ΡΠ° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° Π΄ΠΎ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ. Π‘Π΅Π³Π°, ΠΏΡΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π·Π°Π΄Π½ΠΈΠ½Π°ΡΠ° Π½Π° Π΄ΡΡΠ³Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΈΠ»ΠΈ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅, Π½Π°ΠΌΠ΅ΡΡΠΎ Π΄Π° Π³ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΡΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, ΡΡΠ΅Π±Π° ΡΠ°ΠΌΠΎ Π΄Π° Π³ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΡΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΊΡΠΈ; ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅.
(ΠΡΡΠΎ ΡΠ°ΠΊΠ°, Π±Π΅ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠ° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ Π²ΠΎ TLS ΠΊΠΎΠ½Π΅ΠΊΡΠΈΠΈΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ ΡΡΠ°Π²ΠΈ Π΄ΡΡΠ³ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ Π½Π° ΠΏΡΠΈΠΌΠ°ΡΠΊΠ°ΡΠ° ΡΡΡΠ°Π½Π°, ΠΊΠ°ΠΊΠΎ ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ΄Π°Ρ TLS ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ Π±Π΅Π· ΡΡΠ΅ΡΡΠ²ΠΎ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΏΡΠΈΠΌΠ°Ρ, ΠΊΠΎΡΠ° Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π° Π΄Π° ΠΏΡΠΈΡΠ°ΡΠ° Π²ΡΡΠΊΠΈ ΡΠ°ΠΌΠΎ Π½Π° localhost
. ΠΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΡΠ½Π°).
ΠΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΠΈΡΠ½ΠΎ Π½Π°
ΠΠ°Ρ Π»ΠΈΡΠ½ΠΎ ΡΠΌΠ΅ΡΠ°ΠΌ Π΄Π΅ΠΊΠ° SmartStack Π΅ Π΅Π΄Π΅Π½ ΠΎΠ΄ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ Istio, Linkerd ΠΈ Consul Connect Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠΈΡΠ΅ ΡΠΈΠ΅ ΡΠ° ΡΠ»Π΅Π΄Π°Ρ ΠΈΡΡΠ°ΡΠ° ΡΠ΅ΠΌΠ°:
- Π‘ΡΠ°ΡΡΡΠ²Π°Ρ ΠΏΡΠΎΠΊΡΠΈ Π½Π° ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·ΠΎΠ».
- ΠΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°Π°Ρ ΡΠΎ ΠΏΡΠΎΠΊΡΠΈ.
- ΠΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠ°ΠΌΠ½ΠΈΠ½Π° ΡΠ° Π°ΠΆΡΡΠΈΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠΊΡΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΠΏΠΎΠ·Π°Π΄ΠΈΠ½ΠΈΡΠ΅.
- ... ΠΡΠΎΡΠΈΡ!
ΠΠΎΠ΄Π΅ΡΠ½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ½Π° ΠΌΡΠ΅ΠΆΠ°
ΠΠΊΠΎ ΡΡΠ΅Π±Π°ΡΠ΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ ΡΠ»ΠΈΡΠ½Π° ΠΌΡΠ΅ΠΆΠ° Π΄Π΅Π½Π΅Ρ, Π±ΠΈ ΠΌΠΎΠΆΠ΅Π»Π΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΡΠ»ΠΈΡΠ½ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΡΠ΅ Π²Π½Π°ΡΡΠ΅ΡΠ½Π° DNS Π·ΠΎΠ½Π° ΡΠΎ ΠΌΠ°ΠΏΠΈΡΠ°ΡΠ΅ Π½Π° ΠΈΠΌΠΈΡΠ°ΡΠ° Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π½Π° Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ Π²ΠΎ ΠΏΡΠΎΡΡΠΎΡΠΎΡ 127.0.0.0/8
. ΠΠΎΡΠΎΠ° ΠΈΠ·Π²ΡΡΠ΅ΡΠ΅ HAProxy Π½Π° ΡΠ΅ΠΊΠΎΡ ΡΠ°Π·ΠΎΠ» Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ, ΠΏΡΠΈΡΠ°ΡΠ°ΡΡΠΈ Π²ΡΡΠΊΠΈ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π° (Π²ΠΎ ΡΠ°Π° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° 127.0.0.0/8
) ΠΈ ΠΏΡΠ΅Π½Π°ΡΠΎΡΡΠ²Π°ΡΠ΅/Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π΄ΠΎ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΡΠ΅ Π·Π°Π΄Π½ΠΈ Π΄Π΅Π»ΠΎΠ²ΠΈ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° HAProxy ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°
ΠΠ²Π° Π΅ ΡΠ΅ΡΠΈΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° Istio! ΠΠΎ, ΡΠΎ Π½Π΅ΠΊΠΎΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ:
- ΠΠΎΡΠΈΡΡΠΈ
ΠΠΎΠ»Π½ΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π½Π° ΠΏΡΠ°ΡΠ΅Π½ΠΈΠΊ Π½Π°ΠΌΠ΅ΡΡΠΎ HAProxy. - ΠΠ° ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° Π·Π°Π΄Π½ΠΈΠΎΡ Π΄Π΅Π» ΠΏΡΠ΅ΠΊΡ Kubernetes API Π½Π°ΠΌΠ΅ΡΡΠΎ etcd ΠΈΠ»ΠΈ Consul.
- Π£ΡΠ»ΡΠ³ΠΈΡΠ΅ ΡΠ΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π°Π΄ΡΠ΅ΡΠΈ Π½Π° Π²Π½Π°ΡΡΠ΅ΡΠ½Π°ΡΠ° ΠΏΠΎΠ΄ΠΌΡΠ΅ΠΆΠ° (Kubernetes ClusterIP Π°Π΄ΡΠ΅ΡΠΈ) Π½Π°ΠΌΠ΅ΡΡΠΎ 127.0.0.0/8.
- ΠΠΌΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° (Π¦ΠΈΡΠ°Π΄Π΅Π»Π°) Π·Π° Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π²Π·Π°Π΅ΠΌΠ½Π° TLS Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈΡΠ΅.
- ΠΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΊΠΈΠ½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ»ΠΎΡΠΎ, Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠ°Π½Π°ΡΠΈ ΠΈΡΠ½.
ΠΡΠ΄Π΅ Π±ΡΠ·ΠΎ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅.
ΠΠΎΠ»Π½ΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π½Π° ΠΏΡΠ°ΡΠ΅Π½ΠΈΠΊ
Envoy Proxy Π³ΠΎ Π½Π°ΠΏΠΈΡΠ° Lyft [ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΡ Π½Π° Uber Π½Π° ΡΠ°ΠΊΡΠΈ ΠΏΠ°Π·Π°ΡΠΎΡ - ΠΏΡΠΈΠ±Π». Π»Π΅Π½ΡΠ°]. Π‘Π»ΠΈΡΠ½ΠΎ Π΅ Π½Π° ΠΌΠ½ΠΎΠ³Ρ Π½Π°ΡΠΈΠ½ΠΈ ΡΠΎ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ (Π½Π° ΠΏΡ. HAProxy, Nginx, Traefik...), Π½ΠΎ Lyft Π³ΠΈ Π½Π°ΠΏΠΈΡΠ° Π½ΠΈΠ²Π½ΠΈΡΠ΅ Π·Π°ΡΠΎΠ° ΡΡΠΎ ΠΈΠΌ ΡΡΠ΅Π±Π°Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΡΠΎ ΠΈΠΌ Π½Π΅Π΄ΠΎΡΡΠΈΠ³Π°Π° Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ, ΠΈ ΡΠ΅ ΡΠΈΠ½Π΅ΡΠ΅ ΠΏΠΎΠΏΠ°ΠΌΠ΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π½ΠΎΠ² Π½Π°ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠΈ ΠΏΠΎΡΡΠΎΡΠ½ΠΈΠΎΡ.
ΠΡΠ°ΡΠ΅Π½ΠΈΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΠ½ΠΎ. ΠΠΊΠΎ ΠΈΠΌΠ°ΠΌ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° ΡΡΠ»ΡΠ³Π° ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ ΡΠΎ Π΄ΡΡΠ³ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΌΠΎΠΆΠ°ΠΌ Π΄Π° ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ ΡΠΎ Envoy, Π° ΠΏΠΎΡΠΎΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌ ΠΈ ΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌ Envoy ΡΠΎ Π»ΠΎΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ, ΠΏΡΠΈΡΠΎΠ° Π΄ΠΎΠ±ΠΈΠ²Π°ΡΡΠΈ ΠΌΠ½ΠΎΠ³Ρ ΠΎΠ΄Π»ΠΈΡΠ½ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ Π²ΠΈΠ΄Π»ΠΈΠ²ΠΎΡΡ. ΠΠ°ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΈΠ»ΠΈ Π²Π±ΡΠΈΠ·Π³ΡΠ²Π°ΡΠ΅ ΡΡΠ°Π³ΠΈ ΠΎΠ΄ ΠΏΠΎΠ²ΠΈΡΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ, Π½ΠΈΠ΅ ΠΈΡΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ Π΄ΠΎ Envoy ΠΈ ΡΠΎΡ ΡΠΎΠ±ΠΈΡΠ° ΠΌΠ΅ΡΡΠΈΠΊΠ° Π·Π° Π½Π°Ρ.
ΠΠΎ, ΠΠ½Π²ΠΎΡ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠ½Π° ΡΠ°ΠΌΠ½ΠΈΠ½Π° (ΡΠ°ΠΌΠ½ΠΈΠ½Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ) Π·Π° ΡΠ΅ΡΠ²ΠΈΡΠ½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ°. ΠΠ²Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° Envoy ΡΠ΅Π³Π° Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Π·Π° ΠΎΠ²Π°Π° ΡΡΠ»ΡΠ³Π° ΠΌΡΠ΅ΠΆΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ Π°Π²ΠΈΠΎΠ½ (ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠ°ΠΌΠ½ΠΈΠ½Π°).
ΠΠΎΠ½ΡΡΠΎΠ»Π΅Π½ Π°Π²ΠΈΠΎΠ½
ΠΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠ°ΠΌΠ½ΠΈΠ½Π°, Istio ΡΠ΅ ΠΏΠΎΡΠΏΠΈΡΠ° Π½Π° Kubernetes API. ΠΠ²Π° Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ ΠΎΠ΄ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° confd, ΠΊΠΎΡ ΡΠ΅ ΠΏΠΎΡΠΏΠΈΡΠ° Π½Π° etcd ΠΈΠ»ΠΈ Consul Π·Π° Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΈ Π²ΠΎ ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ°ΡΠ° Π·Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. Istio Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ Kubernetes API Π·Π° Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π° Π·Π±ΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π½Π° Kubernetes.
ΠΠΎΠΌΠ΅ΡΡ ΠΎΠ²Π° ΠΈ ΡΠΎΠ³Π°Ρ: ΠΠ²Π° Π»ΠΈΡΠ½ΠΎ ΠΌΠΈ Π±Π΅ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ
Π‘Π΅ΡΠ²Π΅ΡΠΎΡ Kubernetes API Π΅ βΠ³Π»ΡΠΏ ΡΠ΅ΡΠ²Π΅Ρβ ΠΊΠΎΡ Π½ΡΠ΄ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅, Π²Π΅ΡΠ·ΠΈΠΈ, Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡΠ°, Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° Π·Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° API.
Istio Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ Kubernetes; ΠΈ Π°ΠΊΠΎ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π½Π°Π΄Π²ΠΎΡ ΠΎΠ΄ Kubernetes, ΡΠΎΠ³Π°Ρ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Kubernetes API (ΠΈ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΡΡΠ»ΡΠ³Π° etcd).
ΠΠ΄ΡΠ΅ΡΠΈ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°
Istio ΡΠ΅ ΠΏΠΎΡΠΏΠΈΡΠ° Π½Π° ClusterIP Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ ΡΡΠΎ Kubernetes Π³ΠΈ Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π°, ΡΠ°ΠΊΠ° ΡΡΠΎ ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π½Π° Istio Π΄ΠΎΠ±ΠΈΠ²Π°Π°Ρ Π²Π½Π°ΡΡΠ΅ΡΠ½Π° Π°Π΄ΡΠ΅ΡΠ° (Π½Π΅ Π²ΠΎ ΠΎΠΏΡΠ΅Π³ΠΎΡ 127.0.0.0/8
).
Π‘ΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ Π΄ΠΎ Π°Π΄ΡΠ΅ΡΠ°ΡΠ° ClusterIP Π·Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° ΡΡΠ»ΡΠ³Π° Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ Kubernetes Π±Π΅Π· Istio Π΅ ΠΏΡΠ΅ΡΡΠ΅ΡΠ½Π°Ρ ΠΎΠ΄ kube-ΠΏΡΠΎΠΊΡΠΈ ΠΈ ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ° Π΄ΠΎ Π·Π°Π΄Π½ΠΈΠΎΡ Π΄Π΅Π» Π½Π° ΡΠΎΡ ΠΏΡΠΎΠΊΡΠΈ. ΠΠΊΠΎ Π²Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π°Ρ ΡΠ΅Ρ Π½ΠΈΡΠΊΠΈΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ, kube-proxy ΠΏΠΎΡΡΠ°Π²ΡΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° iptables (ΠΈΠ»ΠΈ IPVS load balancers, Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½) Π·Π° Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΠΏΠΈΡΠ΅ Π΄Π΅ΡΡΠΈΠ½Π°ΡΠΈΡΠΊΠΈΡΠ΅ IP Π°Π΄ΡΠ΅ΡΠΈ Π½Π° ΠΊΠΎΠ½Π΅ΠΊΡΠΈΠΈΡΠ΅ ΡΡΠΎ ΠΎΠ΄Π°Ρ Π½Π° Π°Π΄ΡΠ΅ΡΠ°ΡΠ° ClusterIP.
Π¨ΡΠΎΠΌ Istio ΡΠ΅ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ Kubernetes, Π½ΠΈΡΡΠΎ Π½Π΅ ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π° Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π·Π° Π΄Π°Π΄Π΅Π½ ΠΏΠΎΡΡΠΎΡΡΠ²Π°Ρ, ΠΏΠ° Π΄ΡΡΠΈ ΠΈ Π·Π° ΡΠ΅Π»ΠΈΠΎΡ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ, ΡΠΎ Π²ΠΎΠ²Π΅Π΄ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ sidecar
Π²ΠΎ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΠΌΠ΅ΡΡΠ½ΠΊΠΈ. ΠΠ²ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΠ΅ ΡΠ²ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΊ ΠΎΠ΄ Envoy ΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ Π·Π±ΠΈΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° iptables Π·Π° Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΡΡΠ΅ΡΠ½Π΅ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ ΡΡΠΎ ΠΎΠ΄ΠΈ Π΄ΠΎ Π΄ΡΡΠ³ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠΈ ΡΠΎΡ ΡΠΎΠΎΠ±ΡΠ°ΡΠ°Ρ ΠΊΠΎΠ½ Envoy.
ΠΠΎΠ³Π° Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ ΡΠΎ Kubernetes DNS, ΡΠΎΠ° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° Π½Π°ΡΠΈΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ ΠΏΠΎ ΠΈΠΌΠ΅ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΈ ΡΓ¨ βΡΠ°ΠΌΠΎ ΡΠ°Π±ΠΎΡΠΈβ. Π‘ΠΎ Π΄ΡΡΠ³ΠΈ Π·Π±ΠΎΡΠΎΠ²ΠΈ, Π½Π°ΡΠΈΠΎΡ ΠΊΠΎΠ΄ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π° ΠΏΡΠ°ΡΠ°ΡΠ° ΠΊΠ°ΠΊΠΎ http://api/v1/users/4242
ΡΠΎΠ³Π°Ρ api
ΡΠ΅ΡΠΈ Π±Π°ΡΠ°ΡΠ΅ Π·Π° 10.97.105.48
, ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° iptables ΡΠ΅ Π³ΠΈ ΠΏΡΠ΅ΡΡΠ΅ΡΠ½Π°Ρ Π²ΡΡΠΊΠΈΡΠ΅ ΠΎΠ΄ 10.97.105.48 ΠΈ ΡΠ΅ Π³ΠΈ ΠΏΡΠΎΡΠ»Π΅Π΄Π°Ρ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ ΠΏΡΠΎΠΊΡΠΈ Envoy, Π° ΡΠΎΡ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΡΠΎΠΊΡΠΈ ΡΠ΅ Π³ΠΎ ΠΏΡΠ΅ΠΏΡΠ°ΡΠΈ Π±Π°ΡΠ°ΡΠ΅ΡΠΎ Π΄ΠΎ Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈΠΎΡ Π·Π°Π΄Π΅Π½ API. ΠΡΡ!
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²Π°ΠΆΠ½ΠΈΡΠ΅Π½Π΅
Istio, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΠΈΡΡΠΈΡΠ°ΡΠ΅ ΠΈ Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° ΠΎΠ΄ ΠΊΡΠ°Ρ Π΄ΠΎ ΠΊΡΠ°Ρ ΠΏΡΠ΅ΠΊΡ mTLS (Π·Π°Π΅ΠΌΠ½ΠΎ TLS). ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π½Π°ΡΠ΅ΡΠ΅Π½Π° Π¦ΠΈΡΠ°Π΄Π΅Π»Π°ΡΠ°.
ΠΠΎΡΡΠΎΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΠΈΠΊΡΠ΅Ρ, ΡΡΠΎ ΠΡΠ°ΡΠ΅Π½ΠΈΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ±Π°ΡΠ° ΠΎΠ΄ ΡΠ΅ΠΊΠΎΡΠ° ΠΏΠΎΠ±Π°ΡΠ°ΡΡΠ΅ Π΄Π° Π΄ΠΎΠ½Π΅ΡΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅Π±Π½Π° ΠΎΠ΄Π»ΡΠΊΠ° Π·Π° ΡΠΎΠ° Π±Π°ΡΠ°ΡΠ΅ Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΊΡΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ Π·Π°Π³Π»Π°Π²ΠΈΡΠ°, ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° Π·Π°Π΄Π½ΠΈΠΎΡ Π΄Π΅Π», ΠΈΡΠ½... (Π½Π΅ Π³ΡΠΈΠΆΠ΅ΡΠ΅ ΡΠ΅: ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ Π½Π°ΡΠΈΠ½ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Mixer, ΠΏΠ° Π΄ΡΡΠΈ ΠΈ Π°ΠΊΠΎ ΡΠ΅ ΡΡΠ½Π΅, Envoy ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΠ°ΡΠΈΡΠ½Π° ΠΊΠ°Π·Π½Π° ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠ½ΠΈΠΊ) .
Π, ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°, ΡΠ° ΡΠΏΠΎΠΌΠ΅Π½Π°Π²ΠΌΠ΅ Π²ΠΈΠ΄Π»ΠΈΠ²ΠΎΡΡΠ°: Envoy ΡΠΎΠ±ΠΈΡΠ° ΠΎΠ³ΡΠΎΠΌΠ½Π° ΠΊΠΎΠ»ΠΈΡΠΈΠ½Π° Π½Π° ΠΌΠ΅ΡΡΠΈΠΊΠ° Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅. ΠΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΡΠ»ΡΠ³ΠΈ, Π°ΠΊΠΎ Π΅Π΄Π½ΠΎ Π±Π°ΡΠ°ΡΠ΅ Π·Π° API ΠΌΠΎΡΠ° Π΄Π° ΠΏΠΎΠΌΠΈΠ½Π΅ Π½ΠΈΠ· ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅ A, B, C ΠΈ D, ΡΠΎΠ³Π°Ρ ΠΏΠΎ Π½Π°ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ, Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΡΠ΅ Π΄ΠΎΠ΄Π°Π΄Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° Π±Π°ΡΠ°ΡΠ΅ΡΠΎ ΠΈ ΡΠ΅ Π³ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΠΎΠ²ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠ΅ΠΊΡ ΠΏΠΎΠ΄Π±Π°ΡΠ°ΡΠ° Π½Π° ΡΠΈΡΠ΅ ΠΎΠ²ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΡΠΈ ΡΠΈΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ Π΄Π° ΡΠ΅ ΡΠ°ΡΠ°Ρ.ΠΎΠ΄Π»ΠΎΠΆΡΠ²Π°ΡΠ° ΠΈΡΠ½.
Π Π°Π·Π²ΠΈΡΡΠ΅ ΠΈΠ»ΠΈ ΠΊΡΠΏΠ΅ΡΠ΅
ΠΡΡΠΈΠΎ ΠΈΠΌΠ° ΡΠ΅ΠΏΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅Π½. Π‘ΠΏΡΠΎΡΠΈΠ²Π½ΠΎ Π½Π° ΡΠΎΠ°, ΠΈΠ·Π³ΡΠ°Π΄Π±Π°ΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π·Π° Π½Π°ΡΠΎΡΡΠ²Π°ΡΠ΅ ΡΡΠΎ ΡΠ° ΠΎΠΏΠΈΡΠ°Π² Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° ΠΎΠ²ΠΎΡ ΠΏΠΎΡΡ Π΅ ΡΠ΅Π»Π°ΡΠΈΠ²Π½ΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈ Π°Π»Π°ΡΠΊΠΈ. ΠΠ½Π°ΡΠΈ, Π΄Π°Π»ΠΈ ΠΈΠΌΠ° ΡΠΌΠΈΡΠ»Π° Π½Π°ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ½Π° ΠΌΡΠ΅ΠΆΠ°?
ΠΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠΊΡΠΎΠΌΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈ (Π½Π΅ Π½ΠΈ ΡΡΠ΅Π±Π° Π²ΠΈΠ΄Π»ΠΈΠ²ΠΎΡΡ, ΠΏΡΠ΅ΠΊΠΈΠ½ΡΠ²Π°Ρ ΠΈ Π΄ΡΡΠ³ΠΈ ΡΡΠΏΡΠΈΠ»Π½ΠΎΡΡΠΈ), ΡΠΎΠ³Π°Ρ ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π²ΠΈΠ΅ΠΌΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½Π° Π°Π»Π°ΡΠΊΠ°. ΠΠΎ, Π°ΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ Kubernetes, ΡΠΎΡ ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ΠΌΠ° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΡΡΠ΅Π±Π΅Π½ Π±ΠΈΠ΄Π΅ΡΡΠΈ Kubernetes Π²Π΅ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈ ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅.
ΠΠΎ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π°ΠΏΡΠ΅Π΄Π½ΠΈ Π±Π°ΡΠ°ΡΠ°, ΡΠΎΠ³Π°Ρ βΠΊΡΠΏΡΠ²Π°ΡΠ΅ΡΠΎβ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ° ΡΠ΅ ΡΠΈΠ½ΠΈ Π΄Π΅ΠΊΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ° ΠΎΠΏΡΠΈΡΠ°. (ΠΠ²Π° Π½Π΅ Π΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ βΠΊΡΠΏΡΠ²Π°ΡΠ΅β Π±ΠΈΠ΄Π΅ΡΡΠΈ Istio Π΅ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, Π½ΠΎ ΡΠ΅ΠΏΠ°ΠΊ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° Π΄Π° Π³ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΠ΅, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΠΈΠΌΠ΅ ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ ΡΠΎ Π½Π΅Π³ΠΎ.)
ΠΠ°Π»ΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ°ΠΌ Istio, Linkerd ΠΈΠ»ΠΈ Consul Connect?
ΠΠΎΡΠ΅Π³Π° Π·Π±ΠΎΡΡΠ²Π°Π²ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΡΡΠΈΠΎ, Π½ΠΎ ΠΎΠ²Π° Π½Π΅ Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ½Π° ΠΌΡΠ΅ΠΆΠ°. ΠΠΎΠΏΡΠ»Π°ΡΠ½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° -
Π¨ΡΠΎ Π΄Π° ΠΎΠ΄Π±Π΅ΡΠ΅Ρ?
ΠΡΠΊΡΠ΅Π½ΠΎ, Π½Π΅ Π·Π½Π°ΠΌ. ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ ΡΠ΅ ΡΠΌΠ΅ΡΠ°ΠΌ ΡΠ΅Π±Π΅ΡΠΈ Π·Π° Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠ΅Π½ Π΄Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ°ΠΌ Π½Π° ΠΎΠ²Π° ΠΏΡΠ°ΡΠ°ΡΠ΅. ΠΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡ
ΠΠ΄Π΅Π½ Π²Π΅ΡΡΠ²Π°ΡΠΊΠΈ ΠΏΡΠΈΡΡΠ°ΠΏ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π°Π»Π°ΡΠΊΠ° ΠΊΠ°ΠΊΠΎ
ΠΠ°Π»ΠΊΡ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°Π² ΡΠΎ Istio ΠΈ SuperGloo, Π° Π²ΠΎ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡΠ° ΡΠ°ΠΊΠ°ΠΌ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Istio ΠΈΠ»ΠΈ Linkerd Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ SuperGloo, ΠΈ ΠΊΠ°ΠΊΠΎ Π²ΡΠΎΡΠΈΠΎΡ ΡΠ° Π·Π°Π²ΡΡΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ°, ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ»ΠΈΡΠ΅ ΠΎΠ΄ Π΅Π΄Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ½Π° ΠΌΡΠ΅ΠΆΠ° Π²ΠΎ Π΄ΡΡΠ³Π° Π±Π΅Π· ΠΏΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΠ·Π²ΠΎΡ: www.habr.com