БСрвисная ΡΠ΅Ρ‚ΡŒ, Β«ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…Β» ΠΈ Β«ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ управлСния» (Service mesh data plane vs. control plane)

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π₯Π°Π±Ρ€! ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Service mesh data plane vs control planeΒ» Π°Π²Ρ‚ΠΎΡ€Π° Matt Klein.

БСрвисная ΡΠ΅Ρ‚ΡŒ, «ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…» ΠΈ «ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ управлСния» (Service mesh data plane vs. control plane)

Π’ этот Ρ€Π°Π· Β«Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π»ΠΎΡΡŒΒ» описаниС ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² service mesh, data plane ΠΈ control plane. Π­Ρ‚ΠΎ описаниС ΠΌΠ½Π΅ показалось самым понятным ΠΈ интСрСсным, Π° Π³Π»Π°Π²Π½ΠΎΠ΅ подводящим ΠΊ пониманию «А Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅?Β».

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ идСя «БСрвисной сСти (Service mesh)Β» становится всС Π±ΠΎΠ»Π΅Π΅ популярной Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ послСдних Π΄Π²ΡƒΡ… Π»Π΅Ρ‚ (ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎΡ‚ 10 октября 2017), Π° число участников Π² пространствС возросло, я ΡƒΠ²ΠΈΠ΄Π΅Π» соразмСрный рост ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ срСди всСго тСхничСского сообщСства Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π‘ΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ сСриями Ρ‚Π²ΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я написал Π² июлС:

ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° с сСрвисной ΡΠ΅Ρ‚ΡŒΡŽ (service mesh) β„– 1: Linkerd ~ = Nginx ~ = Haproxy ~ = Envoy. Ни ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ Ρ€Π°Π²Π΅Π½ Istio. Istio β€” это Π½Π΅Ρ‡Ρ‚ΠΎ совсСм Π΄Ρ€ΡƒΠ³ΠΎΠ΅. 1 /

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ просто плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data planes). Π‘Π°ΠΌΠΈ ΠΏΠΎ сСбС ΠΎΠ½ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ настроСны Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ большСС. 2 /

Istio являСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ плоскости управлСния (control plane), которая связываСт части вмСстС вмСстС. Π­Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ слой. /ΠΊΠΎΠ½Π΅Ρ†

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ‚Π²ΠΈΡ‚Π°Ρ… упоминаСтся нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² (Linkerd, NGINX, HAProxy, Envoy ΠΈ Istio), Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, вводятся ΠΎΠ±Ρ‰ΠΈΠ΅ понятия плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane), сСрвисной сСти (service mesh) ΠΈ плоскости управлСния (control plane). Π’ этом постС я сдСлаю шаг Π½Π°Π·Π°Π΄ ΠΈ расскаТу, Ρ‡Ρ‚ΠΎ я имСю Π² Π²ΠΈΠ΄Ρƒ ΠΏΠΎΠ΄ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ Β«ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… (data plane)Β» ΠΈ Β«ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния (control plane)Β» Π½Π° ΠΎΡ‡Π΅Π½ΡŒ высоком ΡƒΡ€ΠΎΠ²Π½Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ расскаТу, ΠΊΠ°ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ относятся ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ, упомянутым Π² Ρ‚Π²ΠΈΡ‚Π°Ρ….

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сСрвисная ΡΠ΅Ρ‚ΡŒ (What is a service mesh, really)?

БСрвисная ΡΠ΅Ρ‚ΡŒ, «ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…» ΠΈ «ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ управлСния» (Service mesh data plane vs. control plane)
Рисунок 1: ΠžΠ±Π·ΠΎΡ€ сСрвисной сСти (Service mesh overview)

Рисунок 1 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ сСрвисной сСти (service mesh) Π½Π° самом Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π•ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ сСрвисных кластСра (A-D). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр сСрвиса связан с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ прокси сСрвСром. Π’Π΅ΡΡŒ сСтСвой Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (HTTP, REST, gRPC, Redis ΠΈ Ρ‚. Π”.) ΠΎΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ экзСмпляра прилоТСния пСрСдаСтся Ρ‡Π΅Ρ€Π΅Π· Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ прокси-сСрвСр Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ внСшниС сСрвисныС кластСры. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, экзСмпляр прилоТСния Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ сСти Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈ Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ своСм локальном прокси. ЀактичСски, ΡΠ΅Ρ‚ΡŒ распрСдСлСнной систСмы Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π° ΠΎΡ‚ сСрвиса.

ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… (Data plane)

Π’ сСрвисной сСти (service mesh) прокси-сСрвСр, располоТСнный локально для прилоТСния, выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

  • ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ сСрвисов (Service discovery). КакиС сСрвисы/слуТбы/прилоТСния доступны для вашСго прилоТСния?
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° работоспособности (Health checking). Π―Π²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ экзСмпляры сСрвисов, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ сСрвисов (service discovery), работоспособными ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π»ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сСтСвой Ρ‚Ρ€Π°Ρ„ΠΈΠΊ? Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΎΡ‚Π²Π΅Ρ‚Π° / healthcheck), Ρ‚Π°ΠΊ ΠΈ ΠΏΠ°ΡΡΠΈΠ²Π½ΡƒΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с использованиСм 3 ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… 5xx ошибок Π² качСствС ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎΠ³ΠΎ состояния сСрвиса) ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности.
  • ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ (Routing). ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² ΠΎΡ‚ сСрвиса REST запрос ΠΊ «/foo», Π² ΠΊΠ°ΠΊΠΎΠΉ сСрвисный кластСр слСдуСт ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запрос?
  • Балансировка Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Load balancing). ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΠΎ врСмя ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ кластСр сСрвиса, Π² ΠΊΠ°ΠΊΠΎΠΉ экзСмпляр сСрвиса Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ запрос? Π‘ ΠΊΠ°ΠΊΠΈΠΌ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠΌ? Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ настройками ΠΎΠ±Ρ€Ρ‹Π²Π° Ρ†Π΅ΠΏΠΈ (circuit breaking)? Если запрос Π½Π΅ удался, Π΅Π³ΠΎ слСдуСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ?
  • АутСнтификация ΠΈ авторизация (Authentication and authorization). Для входящих запросов ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ сСрвис Π±Ρ‹Ρ‚ΡŒ криптографичСски ΠΎΠΏΠΎΠ·Π½Π°Π½/Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ mTLS ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°? Если ΠΎΠ½ ΠΎΠΏΠΎΠ·Π½Π°Π½/Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π»ΠΈ Π΅ΠΌΡƒ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ (endpoint) Π² сСрвисС ΠΈΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ Π½Π΅Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚?
  • ΠΠ°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚ΡŒ (Observability). Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ сгСнСрированы ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ статистичСскиС Π΄Π°Π½Π½Ρ‹Π΅, ΠΆΡƒΡ€Π½Π°Π»Ρ‹/Π»ΠΎΠ³ΠΈ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ распрСдСлСнной трассировки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ распрСдСлСнный ΠΏΠΎΡ‚ΠΎΠΊ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… возникновСния.

Π—Π° всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ Π² сСрвисной сСти (service mesh), ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… (data plane). По сути, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ для сСрвиса (sidecar) прокси ΠΈ являСтся ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ… (data plane). Π˜Π½Ρ‹ΠΌΠΈ словами, ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… (data plane) ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡƒΡΠ»ΠΎΠ²Π½ΡƒΡŽ Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ, пСрСсылку ΠΈ наблюдСниС Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ сСтСвым ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ присылаСтся Π² сСрвис ΠΈΠ»ΠΈ отсылаСтся ΠΈΠ· Π½Π΅Π³ΠΎ.

ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния (The control plane)

БСтСвая абстракция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ обСспСчиваСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ прокси Π² плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane), являСтся волшСбной (?). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠ°ΠΊ прокси-сСрвСр Π½Π° самом Π΄Π΅Π»Π΅ ΡƒΠ·Π½Π°Π΅Ρ‚ ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π΅ «/foo» ΠΊ сСрвису B? Как Π΄Π°Π½Π½Ρ‹Π΅ обнаруТСния сСрвисов (service discovery), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ прокси-запросами, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹? Как настроСны ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ балансировки Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° (timeout), ΠΎΠ±Ρ€Ρ‹Π²Π° Ρ†Π΅ΠΏΠΈ (circuit breaking) ΠΈ Ρ‚.Π΄.? Как осущСствляСтся Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ прилоТСния с использованиСм синСго/Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ (blue/green) ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° постСпСнного ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°? ΠšΡ‚ΠΎ настраиваСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ общСсистСмной Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ?

ВсС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ находятся Π² Π²Π΅Π΄Π΅Π½ΠΈΠΈ плоскости управлСния (control plane) сСрвисной сСти (service mesh). ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния (control plane) ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… прокси-сСрвСров Π±Π΅Π· состояния ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… Π² Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ систСму.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈ находят Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ понятия плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane) ΠΈ плоскости управлСния (control plane), Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° людСй ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠΌΠ°, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния Ρ‡ΡƒΠΆΠ΅Ρ€ΠΎΠ΄Π½Π°/нСпонятна. ΠœΡ‹ ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с физичСскими сСтСвыми ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ. ΠœΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹/запросы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ΄Ρ‚ΠΈ ΠΈΠ· ΠΏΡƒΠ½ΠΊΡ‚Π° А Π² ΠΏΡƒΠ½ΠΊΡ‚ Π‘, ΠΈ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для этого Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС. НовоС ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… прокси β€” это просто ΠΌΠΎΠ΄Π½Ρ‹Π΅ вСрсии инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ использовали Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

БСрвисная ΡΠ΅Ρ‚ΡŒ, «ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…» ΠΈ «ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ управлСния» (Service mesh data plane vs. control plane)
Рисунок 2: ЧСловСчСская ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния (Human control plane)

Однако, ΠΌΡ‹ ΡƒΠΆΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя использовали плоскости управлСния (control plane), хотя Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сСтСвых ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ эту Ρ‡Π°ΡΡ‚ΡŒ систСмы с ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ тСхнологичСским ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этого проста:
Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… сСгодня плоскостСй управлСния (control plane) -это… ΠΌΡ‹.

На рисункС 2 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я Π½Π°Π·Ρ‹Π²Π°ΡŽ «ЧСловСчСской ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒΡŽ управлСния (Human control plane)Β». Π’ этом Ρ‚ΠΈΠΏΠ΅ развСртывания, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ всС Π΅Ρ‰Π΅ встрСчаСтся ΠΎΡ‡Π΅Π½ΡŒ часто, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, вСроятно сварливый, создаСт статичСскиС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ β€” ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптов β€” ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ процСсса Π½Π° всСх прокси-сСрвСрах. Π—Π°Ρ‚Π΅ΠΌ прокси Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane) с использованиСм ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… настроСк.

БСрвисная ΡΠ΅Ρ‚ΡŒ, «ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…» ΠΈ «ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ управлСния» (Service mesh data plane vs. control plane)
Рисунок 3: Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния сСрвисной ΡΠ΅Ρ‚ΡŒΡŽ (Advanced service mesh control plane)

На рисункС 3 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Β«Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°ΡΒ» ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния (control plane) сСрвисной сСти (service mesh). Она состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… частСй:

  • Π§Π΅Π»ΠΎΠ²Π΅ΠΊ (The human): ВсС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ (надСюсь, ΠΌΠ΅Π½Π΅Π΅ сСрдитый), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° высоком ΡƒΡ€ΠΎΠ²Π½Π΅ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ всСй систСмы Π² Ρ†Π΅Π»ΠΎΠΌ.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс плоскости управлСния (Control plane UI): Π§Π΅Π»ΠΎΠ²Π΅ΠΊ взаимодСйствуСт с ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Ρ‚ΠΈΠΏΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса для управлСния систСмой. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π΅Π±-ΠΏΠΎΡ€Ρ‚Π°Π», ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (CLI) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ интСрфСйс. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ систСмы, ΠΊΠ°ΠΊ:
    • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ, синий/Π·Π΅Π»Π΅Π½Ρ‹ΠΉ (blue/green) ΠΈ/ΠΈΠ»ΠΈ с постСпСнным ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°
    • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ
    • Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ A Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ «/foo», Ρ‡Ρ‚ΠΎ происходит
    • Настройки балансировщика Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹ (timeouts), ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ (retries), ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ±Ρ€Ρ‹Π²Π° Ρ†Π΅ΠΏΠΈ (circuit breaking) ΠΈ Ρ‚.Π΄.
  • ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Workload scheduler): БСрвисы Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² инфраструктурС Ρ‡Π΅Ρ€Π΅Π· систСму планирования/оркСстрации ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Kubernetes ΠΈΠ»ΠΈ Nomad. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ слуТбы вмСстС с Π΅Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ прокси-сСрвСром.
  • ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ сСрвиса (Service discovery). Когда ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ запускаСт ΠΈ останавливаСт экзСмпляры сСрвиса, ΠΎΠ½ сообщаСт ΠΎ состоянии работоспособности Π² систСму обнаруТСния сСрвиса.
  • API ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ локального прокси-сСрвСра (Sidecar proxy configuration APIs) : Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ прокси-сСрвСры динамичСски ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ состояниС ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² систСмы ΠΏΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ Β«ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счётС» (eventually consistent) Π±Π΅Π· участия ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Вся систСма, состоящая ΠΈΠ· всСх Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ экзСмпляров сСрвисов ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… прокси-сСрвСров, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ сходится Π² ΠΎΠ΄Π½Ρƒ экосистСму. API ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane) Π² Envoy являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

По сути, Ρ†Π΅Π»ΡŒ плоскости управлСния (control plane) состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ, которая Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ принята ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ… (data plane). Π‘ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Π΅ плоскости управлСния (control plane) ΡƒΠ±Π΅Ρ€ΡƒΡ‚ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° большС Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСм ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ мСньшС Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ управлСния, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ!..

ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния. Π‘Π²ΠΎΠ΄ΠΊΠ° (Data plane vs. control plane summary)

  • ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… cСрвисной сСти (Service mesh data plane): Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ / запрос Π² систСмС. ΠžΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΉ/сСрвисов, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ работоспособности, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ, распрСдСлСниС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ / Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚ΡŒ.
  • ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния cСрвисной сСти (Service mesh control plane): прСдоставляСт ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ для всСх Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… плоскостСй Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ cСрвисной сСти. НС Ρ‚Ρ€ΠΎΠ³Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² / запросов Π² систСмС. ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС плоскости Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ систСму.

Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Current project landscape)

Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ с объяснСниСм Π²Ρ‹ΡˆΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° «сСрвисной сСти (service mesh)Β».

  • ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Data planes): Linkerd, NGINX, HAProxy, Envoy, Traefik
  • ΠŸΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ управлСния (Control planes): Istio, Nelson, SmartStack

ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, я ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ мнСнию, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ Π² экосистСмС прямо сСйчас.

Π’ Π½Π°Ρ‡Π°Π»Π΅ 2016 Π³ΠΎΠ΄Π° Linkerd Π±Ρ‹Π» ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… прокси-сСрвСров плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane) для сСрвисной сСти (service mesh) ΠΈ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π» Ρ„Π°Π½Ρ‚Π°ΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ освСдомлСнности ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ внимания ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ проСктирования «сСрвисная ΡΠ΅Ρ‚ΡŒΒ» (service mesh). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· 6 мСсяцСв послС этого Envoy присоСдинился ΠΊ Linkerd (хотя Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² Lyft с ΠΊΠΎΠ½Ρ†Π° 2015 Π³ΠΎΠ΄Π°). Π›ΠΈΠ½ΠΊΠ΅Ρ€Π΄ ΠΈ Envoy β€” это Π΄Π²Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Π°Ρ‰Π΅ всСго ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ обсуТдСнии сСрвисных сСтСй (service mesh).

Istio Π±Ρ‹Π»ΠΎ объявлСно Π² ΠΌΠ°Π΅ 2017 Π³ΠΎΠ΄Π°. Π¦Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Istio ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния (control plane), ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π½Π° рисункС 3. Envoy для Istio являСтся прокси-сСрвСром Β«ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Istio являСтся ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒΡŽ управлСния (control plane), Π° Envoy β€” ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ… (data plane). Π—Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ врСмя Istio Π²Ρ‹Π·Π²Π°Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ»Π½Π΅Π½ΠΈΠΉ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane) Π½Π°Ρ‡Π°Π»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ Π² качСствС Π·Π°ΠΌΠ΅Π½Ρ‹ Envoy (ΠΈ Linkerd, ΠΈ NGINX продСмонстрировали ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Istio). Π’ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΉ плоскости управлСния (control plane) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane), ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния (control plane) ΠΈ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… (data plane) Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ тСсно связаны. Π’Π°ΠΊΠΎΠΉ API ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ API плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane) Envoy ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ мост ΠΌΠ΅ΠΆΠ΄Ρƒ двумя частями систСмы.

Nelson ΠΈ SmartStack ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ плоскости управлСния (control plane) ΠΈ плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane). Nelson ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Envoy Π² качСствС своСго прокси ΠΈ строит Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния (control plane) сСрвисной ΡΠ΅Ρ‚ΡŒΡŽ (service mesh) Π½Π° Π±Π°Π·Π΅ стСка HashiCorp, Ρ‚.Π΅. Nomad ΠΈ Ρ‚.Π΄. SmartStack стал, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈΠ· Π½ΠΎΠ²ΠΎΠΉ Π²ΠΎΠ»Π½Ρ‹ сСрвисных сСтСй (service mesh). SmartStack Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния (control plane) Π²ΠΎΠΊΡ€ΡƒΠ³ HAProxy ΠΈΠ»ΠΈ NGINX, дСмонстрируя Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ развязки плоскости управлСния (control plane) сСрвисной ΡΠ΅Ρ‚ΡŒΡŽ (service mesh) ΠΈ плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane).

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° с сСрвисной ΡΠ΅Ρ‚ΡŒΡŽ (service mesh) ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΊ сСбС всС большС внимания (ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ!), ΠΈ всС большС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠ² Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² этом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΉ ΠΊΠ°ΠΊ Π² плоскостях Π΄Π°Π½Π½Ρ‹Ρ… (data plane), Ρ‚Π°ΠΊ ΠΈ Π² плоскостях управлСния (control plane), Π° Ρ‚Π°ΠΊΠΆΠ΅ дальнСйшСС смСшиваниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ счСтС микросСрвисная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΉ ΠΈ волшСбной (?) для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.
НадСюсь, всС ΠΌΠ΅Π½Π΅Π΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ (Key takeaways)

  • БСрвисная ΡΠ΅Ρ‚ΡŒ (service mesh) состоит ΠΈΠ· Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… частСй: плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane) ΠΈ плоскости управлСния (control plane). Оба ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΈ Π±Π΅Π· Π½ΠΈΡ… систСма Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.
  • ВсС Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒΡŽ управлСния (control plane), ΠΈ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒΡŽ управлСния (control plane) ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹!
  • ВсС плоскости Π΄Π°Π½Π½Ρ‹Ρ… (data plane) ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΏΠΎ функциям, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, конфигурируСмости ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ.
  • ВсС плоскости управлСния (control plane) ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΏΠΎ функциям, конфигурируСмости, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ удобству использования.
  • Одна ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ управлСния (control plane) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ абстракции ΠΈ API, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько плоскостСй Π΄Π°Π½Π½Ρ‹Ρ… (data plane).

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