ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, микроуслуги ΠΈ ΠΌΡ€Π΅ΠΆΠΈ Π·Π° услуги

Π’ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΊΡƒΠΏ статии ΠΎ сСрвизна ΠΌΡ€Π΅ΠΆΠ° (сСрвизна ΠΌΡ€Π΅ΠΆΠ°), Π° Π΅Ρ‚ΠΎ ΠΎΡ‰Π΅ Π΅Π΄Π½Π°. Π£Ρ€Π°! Но Π·Π°Ρ‰ΠΎ? Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° искам Π΄Π° изразя ΠΌΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ си, Ρ‡Π΅ Ρ‰Π΅ΡˆΠ΅ Π΄Π° Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅, Π°ΠΊΠΎ ΠΌΡ€Π΅ΠΆΠΈΡ‚Π΅ Π·Π° услуги сС появиха ΠΏΡ€Π΅Π΄ΠΈ 10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΠΏΡ€Π΅Π΄ΠΈ появата Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ ΠΊΠ°Ρ‚ΠΎ Docker ΠΈ Kubernetes. НС ΠΊΠ°Π·Π²Π°ΠΌ, Ρ‡Π΅ моята Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π° ΠΈΠ»ΠΈ ΠΏΠΎ-лоша ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅, Π½ΠΎ Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ сСрвизнитС ΠΌΡ€Π΅ΠΆΠΈ са доста слоТни ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΈ, мноТСството Π³Π»Π΅Π΄Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ Π·Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎΡ‚ΠΎ ΠΈΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Π©Π΅ говоря Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° dotCloud, която Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½Π° Π²ΡŠΡ€Ρ…Ρƒ Π½Π°Π΄ сто микроуслуги ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° хиляди прилоТСния Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Π©Π΅ обясня прСдизвикатСлствата, с ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΠ±Π»ΡŠΡΠΊΠ°Ρ…ΠΌΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ стартиранСто ΠΌΡƒ, ΠΈ ΠΊΠ°ΠΊ ΠΌΡ€Π΅ΠΆΠΈΡ‚Π΅ Π½Π° услугитС Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ (ΠΈΠ»ΠΈ Π½Π΅ Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ) Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Π½Π° dotCloud

Писал съм Π·Π° историята Π½Π° dotCloud ΠΈ ΠΈΠ·Π±ΠΎΡ€Π° Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π·Π° Ρ‚Π°Π·ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, Π½ΠΎ Π½Π΅ съм Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ Π·Π° мрСТовия слой. Ако Π½Π΅ искатС Π΄Π° сС Π³ΠΌΡƒΡ€Π½Π΅Ρ‚Π΅ Π² Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ послСдна статия относно dotCloud, Π΅Ρ‚ΠΎ ΡΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ: Ρ‚ΠΎΠ²Π° Π΅ PaaS ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠ°Ρ‚ΠΎ услуга, която позволява Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΡˆΠΈΡ€ΠΎΠΊ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ прилоТСния (Java, PHP, Python...), с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΡˆΠΈΡ€ΠΎΠΊ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ услуги (MongoDB, MySQL, Redis...) ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс ΠΊΠ°Ρ‚ΠΎ Heroku: Π’ΠΈΠ΅ ΠΊΠ°Ρ‡Π²Π°Ρ‚Π΅ своя ΠΊΠΎΠ΄ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, тя ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° изобраТСния Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ Π³ΠΈ внСдрява.

Π©Π΅ Π²ΠΈ ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ бСшС насочСн към ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° dotCloud. НС Π·Π°Ρ‰ΠΎΡ‚ΠΎ бСшС особСно страхотно (Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ систСмата Ρ€Π°Π±ΠΎΡ‚Π΅ΡˆΠ΅ Π΄ΠΎΠ±Ρ€Π΅ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ си!), Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΈ всичко Π·Π°Ρ‰ΠΎΡ‚ΠΎ с ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ инструмСнти ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° бъдС Π²Π½Π΅Π΄Ρ€Π΅Π½ Π·Π° ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΎΡ‚ скромСн Π΅ΠΊΠΈΠΏ, Π°ΠΊΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Π³Ρ€ΡƒΠΏΠ° Π½Π° микроуслуги ΠΈΠ»ΠΈ ΠΊΡƒΠΏ прилоТСния. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сравнитС ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅: ΠΊΠ°ΠΊΠ²ΠΎ сС случва, Π°ΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ всичко сами ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π° сСрвизна ΠΌΡ€Π΅ΠΆΠ°. Бтандартният ΠΈΠ·Π±ΠΎΡ€ Π΅ Π΄Π° си Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ сами ΠΈΠ»ΠΈ Π΄Π° Π³ΠΎ ΠΊΡƒΠΏΠΈΡ‚Π΅.

ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π·Π° хоствани прилоТСния

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚Π° Π² dotCloud ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π°Ρ‚ HTTP ΠΈ TCP ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ.

HTTP ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π΅Π½ към конфигурацията Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π·Π° балансиранС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π₯ΠΈΠΏΠ°Ρ‡Π΅. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ рСсурситС правят днСс Π’Π»ΠΈΠ·Π°Π½Π΅ Π² Kubernetes ΠΈ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΠΊΠ°Ρ‚ΠΎ Π’Ρ€Π°Π΅Ρ„ΠΈΠΊ.

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ с HTTP ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‡Ρ€Π΅Π· подходящи Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ, ΠΏΡ€ΠΈ условиС Ρ‡Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° сочи към dotCloud load balancers. Нищо спСциално.

TCP ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ с Π½ΠΎΠΌΠ΅Ρ€ Π½Π° ΠΏΠΎΡ€Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π΅Π΄Π°Π²Π° Π½Π° всички ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ стСк Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата.

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ към TCP ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ подходящото ΠΈΠΌΠ΅ Π½Π° хост (Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ gateway-X.dotcloud.com) ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Π½Π° ΠΏΠΎΡ€Ρ‚.

Π’ΠΎΠ²Π° ΠΈΠΌΠ΅ Π½Π° хост сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π² ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈΡ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ β€žnatsβ€œ (Π½Π΅ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ с NATS), ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ насочва входящитС TCP Π²Ρ€ΡŠΠ·ΠΊΠΈ към правилния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (ΠΈΠ»ΠΈ, Π² случай Π½Π° услуги с балансирано Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, към ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ).

Ако стС Π·Π°ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ с Kubernetes, Ρ‚ΠΎΠ²Π° вСроятно Ρ‰Π΅ Π²ΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈ Π·Π° услугитС NodePort.

НямашС Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΈ услуги Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° dotCloud ClusterIP: Π—Π° простота, услугитС бяха Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Π½Π°Ρ‡ΠΈΠ½ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΡ‚Π²ΡŠΡ‚Ρ€Π΅, Ρ‚Π°ΠΊΠ° ΠΈ извън ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.

Всичко бСшС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ съвсСм просто: ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° HTTP ΠΈ TCP ΠΌΡ€Π΅ΠΆΠΈΡ‚Π΅ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ вСроятно бяха само няколкостотин Ρ€Π΅Π΄Π° Π½Π° Python всяка. ΠŸΡ€ΠΎΡΡ‚ΠΈ (Π±ΠΈΡ… ΠΊΠ°Π·Π°Π» Π½Π°ΠΈΠ²Π½ΠΈ) Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ бяха ΡƒΡΡŠΠ²ΡŠΡ€ΡˆΠ΅Π½ΡΡ‚Π²Π°Π½ΠΈ с разрастванСто Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΈ появата Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ изисквания.

НС сС изисквашС ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ ΠΊΠΎΠ΄. Π’ частност, 12 Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΈ прилоТСния ΠΌΠΎΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° адрСса, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата.

Как Ρ‚ΠΎΠ²Π° Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Ρ€Π½Π°Ρ‚Π° сСрвизна ΠΌΡ€Π΅ΠΆΠ°?

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ видимост. Π˜Π·ΠΎΠ±Ρ‰ΠΎ нямахмС Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π·Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° TCP. Π©ΠΎ сС отнася Π΄ΠΎ HTTP ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ, ΠΏΠΎ-ΠΊΡŠΡΠ½ΠΈΡ‚Π΅ вСрсии Π²ΡŠΠ²Π΅Π΄ΠΎΡ…Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΈ HTTP ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ с ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π·Π° рСакция, Π½ΠΎ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΌΡ€Π΅ΠΆΠΈ Π·Π° услуги ΠΎΡ‚ΠΈΠ²Π°Ρ‚ Π΄ΠΎΡ€ΠΈ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ‡, осигурявайки интСграция със систСми Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠ°Ρ‚ΠΎ Prometheus, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Видимостта Π΅ Π²Π°ΠΆΠ½Π° Π½Π΅ само ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π° Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° (Π·Π° Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π·Π° отстраняванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ), Π½ΠΎ ΠΈ ΠΏΡ€ΠΈ пусканСто Π½Π° Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘Ρ‚Π°Π²Π° Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° бСзопасно синьо-Π·Π΅Π»Π΅Π½ΠΎ Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ ΠΈ ΠΊΠ°Π½Π°Ρ€Ρ‡Π΅ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅.

ЕфСктивност Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΡΡŠΡ‰ΠΎ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ. Π’ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° dotCloud цСлият Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ ΠΏΡ€Π΅Π· ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΎΡ‚ спСциализирани възли Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° мноТСство Π³Ρ€Π°Π½ΠΈΡ†ΠΈ Π½Π° AZ (Π·ΠΎΠ½Π° Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚) ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° латСнтността. Бпомням си ΠΊΠΎΠ΄Π° Π·Π° отстраняванС Π½Π° нСизправности, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π°Π²Π΅ΡˆΠ΅ Π½Π°Π΄ сто SQL заявки Π½Π° страница ΠΈ ΠΎΡ‚Π²Π°Ρ€ΡΡˆΠ΅ Π½ΠΎΠ²Π° Π²Ρ€ΡŠΠ·ΠΊΠ° към SQL ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° всяка заявка. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС изпълнява Π»ΠΎΠΊΠ°Π»Π½ΠΎ, страницата сС Π·Π°Ρ€Π΅ΠΆΠ΄Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ, Π½ΠΎ Π² dotCloud Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚Π½Π΅ΠΌΠ° няколко сСкунди, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ всяка TCP Π²Ρ€ΡŠΠ·ΠΊΠ° (ΠΈ послСдваща SQL заявка) ΠΎΡ‚Π½Π΅ΠΌΠ° дСсСтки милисСкунди. Π’ Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ случай постояннитС Π²Ρ€ΡŠΠ·ΠΊΠΈ Ρ€Π΅ΡˆΠΈΡ…Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ сСрвизни ΠΌΡ€Π΅ΠΆΠΈ сС справят ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ с ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. На ΠΏΡŠΡ€Π²ΠΎ място Ρ‚Π΅ провСряват Π΄Π°Π»ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ са ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π² ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΠ°. ЛогичСският ΠΏΠΎΡ‚ΠΎΠΊ Π΅ ΡΡŠΡ‰ΠΈΡΡ‚: ΠΊΠ»ΠΈΠ΅Π½Ρ‚ β†’ мСш β†’ сСрвис, Π½ΠΎ сСга ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π° Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΈ възли, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ β†’ мСш Π΅ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π· (микросСкунди вмСсто милисСкунди).

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ сСрвизни ΠΌΡ€Π΅ΠΆΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΏΠΎ-ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° балансиранС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ. ΠšΠ°Ρ‚ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚ изправността Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅Ρ‚Π΅, Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ към ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° цялостна производитСлност.

сигурност ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΡΡŠΡ‰ΠΎ. ΠœΡ€Π΅ΠΆΠ°Ρ‚Π° Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° dotCloud Ρ€Π°Π±ΠΎΡ‚ΠΈ изцяло Π½Π° EC2 Classic ΠΈ Π½Π΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (въз основа Π½Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‡Π΅ Π°ΠΊΠΎ някой успСС Π΄Π° постави ΡΠ½ΠΈΡ„ΡŠΡ€ Π½Π° мрСТовия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° EC2, Π²ΠΈΠ΅ Π²Π΅Ρ‡Π΅ стС ΠΈΠΌΠ°Π»ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ). ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈΡ‚Π΅ мрСТСсти услуги ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π°Π²Π°Ρ‚ цСлия Π½ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π²Π·Π°ΠΈΠΌΠ½ΠΎ TLS удостовСряванС ΠΈ послСдващо ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅.

ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½ΠΈ услуги

Π”ΠΎΠ±Ρ€Π΅, ΠΎΠ±ΡΡŠΠ΄ΠΈΡ…ΠΌΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ прилоТСнията, Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° самата ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° dotCloud?

Π‘Π°ΠΌΠ°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° сС ΡΡŠΡΡ‚ΠΎΠ΅ΡˆΠ΅ ΠΎΡ‚ ΠΎΠΊΠΎΠ»ΠΎ сто микросСрвизи, отговарящи Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Някои ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ…Π° заявки ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ, Π° някои бяха Ρ„ΠΎΠ½ΠΎΠ²ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ…Π° с Π΄Ρ€ΡƒΠ³ΠΈ услуги, Π½ΠΎ самитС Ρ‚Π΅ Π½Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ…Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ. Π’ΡŠΠ² всСки случай всяка услуга трябва Π΄Π° Π·Π½Π°Π΅ ΠΊΡ€Π°ΠΉΠ½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° адрСситС, към ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅.

Много услуги Π½Π° високо Π½ΠΈΠ²ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅, описана ΠΏΠΎ-Π³ΠΎΡ€Π΅. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ сто микроуслуги Π½Π° dotCloud са Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ прилоТСния Π½Π° самата ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° dotCloud. Но малък Π±Ρ€ΠΎΠΉ услуги ΠΎΡ‚ ниско Π½ΠΈΠ²ΠΎ (особСно Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ Ρ‚Π°Π·ΠΈ ΠΌΡ€Π΅ΠΆΠ° Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅) сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ…Π° ΠΎΡ‚ Π½Π΅Ρ‰ΠΎ ΠΏΠΎ-просто, с ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ зависимости (Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ…Π° Π΄Π° Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°Ρ‚ Π½Π° сСбС си, Π·Π° Π΄Π° работят - добрият стар ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΊΠΎΠΊΠΎΡˆΠΊΠ°Ρ‚Π° ΠΈ яйцСто).

Π’Π΅Π·ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ Π·Π° мисията услуги Π½Π° ниско Π½ΠΈΠ²ΠΎ бяха Ρ€Π°Π·Π³ΡŠΡ€Π½Π°Ρ‚ΠΈ Ρ‡Ρ€Π΅Π· стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° няколко ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ възСла. Π’ Ρ‚ΠΎΠ·ΠΈ случай Π½Π΅ са ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ стандартни услуги Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°: Π»ΠΈΠ½ΠΊΠ΅Ρ€, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ ΠΈ Π±Π΅Π³Π°Ρ‡. Ако искатС Π΄Π° сравнитС с ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ, Ρ‚ΠΎΠ²Π° Π΅ ΠΊΠ°Ρ‚ΠΎ Π΄Π° управляватС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ€Π°Π²Π½ΠΈΠ½Π° с docker run Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅, вмСсто Π΄Π° Π΄Π΅Π»Π΅Π³ΠΈΡ€Π°Ρ‚Π΅ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π½Π° Kubernetes. Доста Π΅ сходСн ΠΊΠ°Ρ‚ΠΎ концСпция статични ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (pods), ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° kubeadm ΠΈΠ»ΠΈ bootkube ΠΏΡ€ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° самостоятСлСн ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.

Π’Π΅Π·ΠΈ услуги бяха Ρ€Π°Π·ΠΊΡ€ΠΈΡ‚ΠΈ ΠΏΠΎ прост ΠΈ Π³Ρ€ΡƒΠ± Π½Π°Ρ‡ΠΈΠ½: YAML Ρ„Π°ΠΉΠ» изброява Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π° ΠΈ адрСси; ΠΈ всСки ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π²Π·Π΅ΠΌΠ΅ ΠΊΠΎΠΏΠΈΠ΅ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ YAML Ρ„Π°ΠΉΠ» Π·Π° внСдряванС.

ΠžΡ‚ Π΅Π΄Π½Π° страна, Ρ‚ΠΎΠΉ Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ изисква ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° външно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅/стойности ΠΊΠ°Ρ‚ΠΎ Zookeeper (Π½Π΅ забравяйтС, Ρ‡Π΅ etcd ΠΈΠ»ΠΈ Consul Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ…Π° ΠΏΠΎ Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅). ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, Ρ‚ΠΎΠ²Π° Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈ прСмСстванСто Π½Π° услуги. ВсСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, всички ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ YAML Ρ„Π°ΠΉΠ» (ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ рСстартиранС). НС Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ!

ВпослСдствиС Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°ΠΌΠ΅ Π½ΠΎΠ²Π° схСма, ΠΏΡ€ΠΈ която всСки ΠΊΠ»ΠΈΠ΅Π½Ρ‚ сС ΡΠ²ΡŠΡ€Π·Π²Π°ΡˆΠ΅ с Π»ΠΎΠΊΠ°Π»Π΅Π½ прокси ΡΡŠΡ€Π²ΡŠΡ€. ВмСсто адрСс ΠΈ ΠΏΠΎΡ€Ρ‚, Ρ‚ΠΎΠΉ трябва само Π΄Π° Π·Π½Π°Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° ΠΏΠΎΡ€Ρ‚Π° Π½Π° услугата ΠΈ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ Ρ‡Ρ€Π΅Π· localhost. Локалният прокси ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Ρ‚Π°Π·ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΈ я ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π° към дСйствитСлния ΡΡŠΡ€Π²ΡŠΡ€. Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ прСмСстватС Π±Π΅ΠΊΠ΅Π½Π΄Π° Π½Π° Π΄Ρ€ΡƒΠ³Π° машина ΠΈΠ»ΠΈ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Ρ‚Π΅, вмСсто Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ всички ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ, трябва само Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ всички Ρ‚Π΅Π·ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ проксита; ΠΈ Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ рСстартиранС.

(Π‘Π΅ΡˆΠ΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ Π΄Π° сС капсулира Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ Π² TLS Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΈ Π΄Π° сС постави Π΄Ρ€ΡƒΠ³ прокси ΡΡŠΡ€Π²ΡŠΡ€ Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‰Π°Ρ‚Π° страна, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π΄Π° сС провСряват TLS сСртификати Π±Π΅Π· участиСто Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‰Π°Ρ‚Π° услуга, която Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π° Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Ρ€ΡŠΠ·ΠΊΠΈ само Π½Π° localhost. ΠŸΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ‚ΠΎΠ²Π° ΠΏΠΎ-късно).

Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° SmartStack ΠΎΡ‚ Airbnb, Π½ΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° Π΅, Ρ‡Π΅ SmartStack сС внСдрява ΠΈ внСдрява Π² производството, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° систСма Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° dotCloud бСшС ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ dotCloud стана Docker.

Аз Π»ΠΈΡ‡Π½ΠΎ считам SmartStack Π·Π° Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° систСми ΠΊΠ°Ρ‚ΠΎ Istio, Linkerd ΠΈ Consul Connect, Π·Π°Ρ‰ΠΎΡ‚ΠΎ всички слСдват Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ ΠΌΠΎΠ΄Π΅Π»:

  • ΠŸΡƒΡΠ½Π΅Ρ‚Π΅ прокси Π½Π° всСки възСл.
  • ΠšΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ сС ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚ с проксито.
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ€Π°Π²Π½ΠΈΠ½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° конфигурацията Π½Π° прокси ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄ΡŠΡ‚ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ.
  • ... ΠŸΠ΅Ρ‡Π°Π»Π±Π°!

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ изпълнСниС Π½Π° сСрвизна ΠΌΡ€Π΅ΠΆΠ°

Ако Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΌΡ€Π΅ΠΆΠ° днСс, Π±ΠΈΡ…ΠΌΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ. НапримСр, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΉΡ‚Π΅ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° DNS Π·ΠΎΠ½Π°, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π° Π½Π° услуги с адрСси Π² пространството 127.0.0.0/8. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° стартирайтС HAProxy Π½Π° всСки възСл Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΉΠΊΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π½Π° всСки адрСс Π½Π° услуга (Π² Ρ‚Π°Π·ΠΈ ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ° 127.0.0.0/8) ΠΈ прСнасочванС/балансиранС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ към подходящитС Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π½Π° HAProxy ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° ΠΊΠΎΠ½Ρ„, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚Π΅ Π±Π΅ΠΊΠ΅Π½Π΄ информация Π² etcd ΠΈΠ»ΠΈ Consul ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° конфигурация към HAProxy, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π”ΠΎ голяма стСпСн Ρ‚Π°ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ Istio! Но с някои Ρ€Π°Π·Π»ΠΈΠΊΠΈ:

  • Π£ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈ ΠŸΡŠΠ»Π½ΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ Π½Π° ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈΠΊΠ° вмСсто HAProxy.
  • Π‘ΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π±Π΅ΠΊΠ΅Π½Π΄ конфигурация Ρ‡Ρ€Π΅Π· Kubernetes API вмСсто etcd ΠΈΠ»ΠΈ Consul.
  • УслугитС са Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ адрСси във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ° (IP адрСси Π½Π° Kubernetes Cluster) вмСсто 127.0.0.0/8.
  • Има Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (Citadel) Π·Π° добавянС Π½Π° Π²Π·Π°ΠΈΠΌΠ½ΠΎ TLS удостовСряванС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅.
  • ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅ Π½Π° Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π°, Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ прослСдяванС, Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° Canary ΠΈ Π΄Ρ€.

НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½Π°Π±ΡŠΡ€Π·ΠΎ някои ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΠΊΠΈΡ‚Π΅.

ΠŸΡŠΠ»Π½ΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ Π½Π° ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈΠΊΠ°

Envoy Proxy Π΅ написан ΠΎΡ‚ Lyft [ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ Π½Π° Uber Π½Π° ΠΏΠ°Π·Π°Ρ€Π° Π½Π° таксита - ΠΏΡ€ΠΈΠ±Π». ΠΏΠ»Π°Ρ‚Π½ΠΎ]. По ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ прокси ΡΡŠΡ€Π²ΡŠΡ€ΠΈ (Π½Π°ΠΏΡ€. HAProxy, Nginx, Traefik...), Π½ΠΎ Lyft написа своя, Π·Π°Ρ‰ΠΎΡ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ…Π° ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ липсваха Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ прокси ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, ΠΈ изглСТдашС ΠΏΠΎ-ΡƒΠΌΠ½ΠΎ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½ΠΎΠ², вмСсто Π΄Π° сС Ρ€Π°Π·ΡˆΠΈΡ€ΠΈ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡΡ‚.

Envoy ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° самостоятСлно. Ако ΠΈΠΌΠ°ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° услуга, която трябва Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с Π΄Ρ€ΡƒΠ³ΠΈ услуги, ΠΌΠΎΠ³Π° Π΄Π° я ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌ Π΄Π° сС ΡΠ²ΡŠΡ€Π·Π²Π° с Envoy ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌ ΠΈ ΠΏΡ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌ Envoy с мСстополоТСниСто Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ услуги, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ страхотни Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ видимост. ВмСсто пСрсонализирана клиСнтска Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° слСди Π½Π° обаТданията Π² ΠΊΠΎΠ΄Π°, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΌΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ към Envoy ΠΈ Ρ‚ΠΎΠΉ ΡΡŠΠ±ΠΈΡ€Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π·Π° нас.

Но Envoy ΡΡŠΡ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π²Π½ΠΈΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈ (Ρ€Π°Π²Π½ΠΈΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈ) Π·Π° сСрвизната ΠΌΡ€Π΅ΠΆΠ°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Envoy Π²Π΅Ρ‡Π΅ Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π·Π° Ρ‚Π°Π·ΠΈ услуга ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ€Π°Π²Π½ΠΈΠ½Π° (ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ€Π°Π²Π½ΠΈΠ½Π°).

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ самолСт

Π—Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ€Π°Π²Π½ΠΈΠ½Π° Istio Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° Kubernetes API. Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° confd, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° etcd ΠΈΠ»ΠΈ Consul Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ. Istio ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Kubernetes API Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ рСсурси Π½Π° Kubernetes.

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΎΠ²Π° ΠΈ Ρ‚ΠΎΠ³Π°Π²Π°: Π›ΠΈΡ‡Π½ΠΎ Π½Π°ΠΌΠΈΡ€Π°ΠΌ Ρ‚ΠΎΠ²Π° Π·Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ОписаниС Π½Π° Kubernetes APIΠΊΠΎΠΉΡ‚ΠΎ гласи:

Kubernetes API ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π΅ β€žΠ³Π»ΡƒΠΏΠ°Π² ΡΡŠΡ€Π²ΡŠΡ€β€œ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅, вСрсия, Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅, Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈ сСмантика Π·Π° API рСсурси.

Istio Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с Kubernetes; ΠΈ Π°ΠΊΠΎ искатС Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ извън Kubernetes, Ρ‚ΠΎΠ³Π°Π²Π° трябва Π΄Π° стартиратС СкзСмпляр Π½Π° Kubernetes API ΡΡŠΡ€Π²ΡŠΡ€Π° (ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° услуга etcd).

Π‘Π΅Ρ€Π²ΠΈΠ·Π½ΠΈ адрСси

Istio Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° ClusterIP адрСси, ΠΊΠΎΠΈΡ‚ΠΎ Kubernetes разпрСдСля, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ услугитС Π½Π° Istio ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ адрСс (Π½Π΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° 127.0.0.0/8).

Π’Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ към ClusterIP адрСса Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° услуга Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π½Π° Kubernetes Π±Π΅Π· Istio сС ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π° ΠΎΡ‚ kube-proxy ΠΈ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° към Π±Π΅ΠΊΠ΅Π½Π΄Π° Π½Π° Ρ‚ΠΎΠ·ΠΈ прокси. Ако сС интСрСсуватС ΠΎΡ‚ тСхничСскитС подробности, 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). ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Π¦ΠΈΡ‚Π°Π΄Π΅Π»Π°.

Има ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠœΠΈΠΊΡΠ΅Ρ€, ΠΊΠΎΠΈΡ‚ΠΎ Envoy ΠΌΠΎΠΆΠ΅ Π΄Π° поиска всСки поискайтС Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ спСциално Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ относно Ρ‚Π°Π·ΠΈ заявка Π² зависимост ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈ ΠΊΠ°Ρ‚ΠΎ Ρ…Π΅Π΄ΡŠΡ€ΠΈ, Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΠΈ Ρ‚.Π½... (Π½Π΅ сС притСснявайтС: ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ Mixer Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ Π΄ΠΎΡ€ΠΈ Π΄Π° сС сринС, Envoy Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΊΠ°Ρ‚ΠΎ ΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ).

И, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, спомСнахмС видимостта: Envoy ΡΡŠΠ±ΠΈΡ€Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎ количСство ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ осигурява Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ прослСдяванС. Π’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° микроуслуги, Π°ΠΊΠΎ Π΅Π΄Π½Π° заявка Π·Π° API трябва Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ ΠΏΡ€Π΅Π· микроуслуги A, B, C ΠΈ D, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΈ Π²Π»ΠΈΠ·Π°Π½Π΅ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎΡ‚ΠΎ прослСдяванС Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ към заявката ΠΈ Ρ‰Π΅ ΡΡŠΡ…Ρ€Π°Π½ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‡Ρ€Π΅Π· подзаявки към всички Ρ‚Π΅Π·ΠΈ микроуслуги, позволявайки всички ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ повиквания Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΡƒΠ»ΠΎΠ²Π΅Π½ΠΈ.закъснСния ΠΈ Π΄Ρ€.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΊΡƒΠΏΠ΅Ρ‚Π΅

Istio ΠΈΠΌΠ° рСпутация Π½Π° слоТСн. Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Ρ‚ΠΎΠ²Π°, ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Ρ‰Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ°, която описах Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ публикация, Π΅ сравнитСлно лСсно с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ инструмСнти. И Ρ‚Π°ΠΊΠ°, ΠΈΠΌΠ° Π»ΠΈ смисъл вмСсто Ρ‚ΠΎΠ²Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ своя собствСна сСрвизна ΠΌΡ€Π΅ΠΆΠ°?

Ако ΠΈΠΌΠ°ΠΌΠ΅ скромни Π½ΡƒΠΆΠ΄ΠΈ (нямамС Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ видимост, ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Ρ‡ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Ρ‚ΡŠΠ½ΠΊΠΎΡΡ‚ΠΈ), Ρ‚ΠΎΠ³Π°Π²Π° мислитС ΠΈΠ΄Π²Π°Ρ‚ Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ собствСн инструмСнт. Но Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Kubernetes, ΠΌΠΎΠΆΠ΅ Π΄ΠΎΡ€ΠΈ Π΄Π° Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Kubernetes Π²Π΅Ρ‡Π΅ прСдоставя основни инструмСнти Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° услуги ΠΈ балансиранС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ.

Но Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ изисквания, Ρ‚ΠΎΠ³Π°Π²Π° β€žΠ·Π°ΠΊΡƒΠΏΡƒΠ²Π°Π½Π΅Ρ‚ΠΎβ€œ Π½Π° сСрвизна ΠΌΡ€Π΅ΠΆΠ° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡŠΡ€ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. (Π’ΠΎΠ²Π° Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ β€žΠΊΡƒΠΏΡƒΠ²Π°Π½Π΅β€œ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Istio Π΅ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, Π½ΠΎ всС ΠΏΠ°ΠΊ трябва Π΄Π° инвСстирамС ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅, Π·Π° Π΄Π° Π³ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, Π²Π½Π΅Π΄Ρ€ΠΈΠΌ ΠΈ управлявамС.)

Врябва Π»ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π° Istio, Linkerd ΠΈΠ»ΠΈ Consul Connect?

ДосСга Π³ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ само Π·Π° Istio, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ СдинствСният мСш Π½Π° услугата. ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Π° Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° - Linkerd, ΠΈ ΠΈΠΌΠ° ΠΎΡ‰Π΅ Consul Connect.

Какво Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ?

ЧСстно ΠΊΠ°Π·Π°Π½ΠΎ, Π½Π΅ Π·Π½Π°ΠΌ. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ сС смятам Π·Π° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ‚Π΅Π½ Π΄Π° отговоря Π½Π° Ρ‚ΠΎΠ·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡ. Има няколко интСрСсно статии със сравнСниС Π½Π° Ρ‚Π΅Π·ΠΈ инструмСнти ΠΈ Π΄ΠΎΡ€ΠΈ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ²Π΅.

Π•Π΄ΠΈΠ½ ΠΎΠ±Π΅Ρ‰Π°Π²Π°Ρ‰ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° инструмСнт ΠΊΠ°Ρ‚ΠΎ SuperGloo. Π’ΠΎΠΉ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° абстракционСн слой, Π·Π° Π΄Π° опрости ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈ API-Ρ‚Π°Ρ‚Π°, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΎΡ‚ сСрвизнитС ΠΌΡ€Π΅ΠΆΠΈ. ВмСсто Π΄Π° ΠΈΠ·ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ спСцифичнитС (ΠΈ, ΠΏΠΎ ΠΌΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, сравнитСлно слоТни) API Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ сСрвизни ΠΌΡ€Π΅ΠΆΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎ-проститС конструкции Π½Π° SuperGloo - ΠΈ лСсно Π΄Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ към Π΄Ρ€ΡƒΠ³, сякаш ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, описващ HTTP интСрфСйси ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅, способни Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° дСйствитСлната конфигурация Π·Π° Nginx, HAProxy, Traefik, Apache...

Забавлявах сС ΠΌΠ°Π»ΠΊΠΎ с Istio ΠΈ SuperGloo ΠΈ Π² слСдващата статия искам Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Π΄Π° добавя Istio ΠΈΠ»ΠΈ Linkerd към ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° SuperGloo ΠΈ ΠΊΠ°ΠΊ послСдният Π²ΡŠΡ€ΡˆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°, тоСст Π²ΠΈ позволява Π΄Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚Π΅ ΠΎΡ‚ Π΅Π΄Π½Π° сСрвизна ΠΌΡ€Π΅ΠΆΠ° към Π΄Ρ€ΡƒΠ³Π° Π±Π΅Π· прСзаписванС Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€