ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, микросСрвизи ΠΈ сСрвис ΠΌΡ€Π΅ΠΆΠΈ

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

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

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

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

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

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

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚Π° Π½Π° dotCloud ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° прСдоставят HTTP ΠΈ TCP ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ.

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

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

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

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

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

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

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

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

ΠžΠ±ΡˆΠΈΡ€Π΅Π½ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ ΠΊΠΎΠ΄ Π½Π΅ бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ. По-спСциално, 12-factor прилоТСнията ΠΌΠΎΠ³Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ адрСса, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата.

Π‘ ΠΊΠ°ΠΊΠ²ΠΎ Ρ‚ΠΎΠ²Π° сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° ΠΎΡ‚ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ‚Π° service mesh?

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

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

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

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

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

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

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

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

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

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

Π’Π΅Π·ΠΈ нискоуровнСвни, Π²Π°ΠΆΠ½ΠΈ услуги бяха Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Ρ‡Ρ€Π΅Π· стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° няколко ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ възли. ΠŸΡ€ΠΈ Ρ‚ΠΎΠ²Π° Π½Π΅ бяха ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ стандартнитС услуги Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°: ΡΡŠΠ±ΠΈΡ€Π°Ρ‡, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ ΠΈ runner. Ако искатС Π΄Π° сравнитС с ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ, Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π» с docker run Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° Π²ΡŠΠ·Π»ΠΈΡ‚Π΅, вмСсто Π΄Π° сС Π΄Π΅Π»Π΅Π³ΠΈΡ€Π°Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ Π½Π° Kubernetes. Π’ΠΎΠ²Π° Π΅ доста сходно с концСпцията Π·Π° статични ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (ΠΏΠΎΠ΄Π°), ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° 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 ΠΌΠΎΠΆΠ΅ Π΄Π° сС управлява confd, позволявайки Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° информация Π·Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° Π² etcd ΠΈΠ»ΠΈ Consul ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° сС пуска ΠΎΠ±Π½ΠΎΠ²Π΅Π½Π°Ρ‚Π° конфигурация Π½Π° HAProxy, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π’Π°ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ Istio! Но с някои Ρ€Π°Π·Π»ΠΈΠΊΠΈ:

  • Използва Envoy Proxy вмСсто HAProxy.
  • Π—Π°ΠΏΠ°Π·Π²Π° конфигурацията Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΠΏΡ€Π΅Π· Kubernetes API вмСсто etcd ΠΈΠ»ΠΈ Consul.
  • На услугитС сС разпрСдСлят адрСси във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° подсСтка (адрСси Kubernetes ClusterIP) вмСсто 127.0.0.0/8.
  • Има Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (Citadel) Π·Π° добавянС Π½Π° Π²Π·Π°ΠΈΠΌΠ½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° идСнтичност TLS ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅.
  • ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°Ρ‚ΠΎ счупванС Π½Π° Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° (circuit breaking), Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ трасиранС, Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΊΠ°Π½Π°Ρ€ΠΊΠΈ ΠΈ Π΄Ρ€.

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

Envoy Proxy

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

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

Но Envoy ΡΡŠΡ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ Π΄Π°Π½ΡŠΡ‡Π½Π° ΠΏΠ»ΠΎΡ‰ (data plane) Π·Π° service mesh. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ сСга Π·Π° Ρ‚ΠΎΠ·ΠΈ service mesh Envoy сС настройва управляваща ΠΏΠ»ΠΎΡ‰ (control plane).

Управляваща ΠΏΠ»ΠΎΡ‰

Π’ управляващата ΠΏΠ»ΠΎΡ‰ Istio Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° Kubernetes API. Π’ΠΎΠ²Π° Π½Π΅ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° особСно ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° confd, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° etcd ΠΈΠ»ΠΈ Consul Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ. Istio ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ рСсурси Kubernetes Ρ‡Ρ€Π΅Π· Kubernetes API.

ΠœΠ΅ΠΆΠ΄ΡƒΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ: Π½Π° ΠΌΠ΅Π½ ΠΌΠΈ сС стори ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ‚ΠΎΠ²Π° описаниС Π½Π° 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 балансировачи Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, Π² зависимост ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½), Π·Π° Π΄Π° ΠΏΡ€Π΅ΠΏΠΈΡˆΠ΅ 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). Π—Π° Ρ‚ΠΎΠ²Π° отговаря ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Citadel.

Π‘ΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Mixer, ΠΊΠΎΠΉΡ‚ΠΎ 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 ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±Ρ€Π΅ послСдният сС справя със Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° си, Ρ‚.Π΅. позволява Π΄Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ сСрвис-мСш Π½Π° Π΄Ρ€ΡƒΠ³ Π±Π΅Π· прСзаписванС Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster