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

Π’ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚a ΠΌΠ½ΠΎΠ³ΠΎ статиитС ΠΎ сСрвизни ΠΌΡ€Π΅ΠΆΠΈ (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-Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΈ прилоТСния ΠΌΠΎΠ³Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ адрСса, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата.

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° обзорност. НиС ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ нямахмС Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π·Π° TCP ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π°. Π©ΠΎ сС отнася Π΄ΠΎ HTTP ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π°, Π² ΠΏΠΎ-късни вСрсии сС появиха ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΈ HTTP ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ с ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€, Π½ΠΎ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ сСрвисни ΠΌΡ€Π΅ΠΆΠΈ ΠΎΡ‚ΠΈΠ²Π°Ρ‚ ΠΎΡ‰Π΅ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ‡, осигурявайки интСграция с систСмитС Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ΠΊΠ°Ρ‚ΠΎ 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) Π·Π° сСрвис мСша. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ сСга Π·Π° Ρ‚ΠΎΠ·ΠΈ сСрвис мСш 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 ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° осигурява end-to-end ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π΅ ΠΈ удостовСряванС Ρ‡Ρ€Π΅Π· mTLS (Π²Π·Π°ΠΈΠΌΠ½ΠΎ TLS). Π—Π° Ρ‚ΠΎΠ²Π° отговаря ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Citadel.

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

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

Π”Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΈΠ»ΠΈ Π΄Π° ΠΊΡƒΠΏΠΈΠΌ

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

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

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

Какво Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ: Istio, Linkerd ΠΈΠ»ΠΈ Consul Connect?

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

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

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

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

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

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

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