Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! МСня Π·ΠΎΠ²ΡƒΡ‚ ПавСл АгалСцкий. Π― Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Ρ‚ΠΈΠΌΠ»ΠΈΠ΄ΠΎΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, которая Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ систСму доставки Lamoda. Π’ 2018 Π³ΠΎΠ΄Ρƒ я выступал Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ HighLoad++, Π° сСгодня Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΡƒ своСго Π΄ΠΎΠΊΠ»Π°Π΄Π°.

Моя Ρ‚Π΅ΠΌΠ° посвящСна ΠΎΠΏΡ‹Ρ‚Ρƒ нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎ дСплою систСм ΠΈ сСрвисов Π² Ρ€Π°Π·Π½Ρ‹Π΅ срСды. Начиная ΠΎΡ‚ Π½Π°ΡˆΠΈΡ… доисторичСских Π²Ρ€Π΅ΠΌΠ΅Π½, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄Π΅ΠΏΠ»ΠΎΠΈΠ»ΠΈ всС систСмы Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСра, заканчивая постСпСнным ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ Nomad ΠΊ дСплою Π² Kubernetes. РасскаТу ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ это сдСлали ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Ρƒ нас Π±Ρ‹Π»ΠΈ Π² процСссС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° VM

НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ 3 Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ всС систСмы ΠΈ сСрвисы ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ дСплоились Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСра. ВСхничСски Π±Ρ‹Π»ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ вСсь ΠΊΠΎΠ΄ Π½Π°ΡˆΠΈΡ… систСм Π»Π΅ΠΆΠ°Π» ΠΈ собирался Π·Π° счСт срСдств автоматичСской сборки, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ jenkins. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ansible ΠΎΠ½ ΠΈΠ· нашСй систСмы контроля вСрсий раскатывался ΡƒΠΆΠ΅ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСра. ΠŸΡ€ΠΈ этом каТдая систСма, которая Π±Ρ‹Π»Π° Π² нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, дСплоилась, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π½Π° 2 сСрвСра: ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ… β€” Π½Π° head, вторая β€” Π½Π° tail. Π­Ρ‚ΠΈ Π΄Π²Π΅ систСмы Π±Ρ‹Π»ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΏΠΎ всСм своим настройкам, мощности, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΠΌΡƒ. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π±Ρ‹Π»ΠΎ лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ head ΠΏΠΎΠ»ΡƒΡ‡Π°Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Π° tail Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° сСбя Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π».

Для Ρ‡Π΅Π³ΠΎ это Π±Ρ‹Π»ΠΎ сдСлано?

Когда ΠΌΡ‹ Π΄Π΅ΠΏΠ»ΠΎΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π»ΠΈΠ·Ρ‹ нашСго прилоТСния, Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ бСсшовной раскатки, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±Π΅Π· Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… послСдствий для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π”ΠΎΡΡ‚ΠΈΠ³Π°Π»ΠΎΡΡŒ это Π·Π° счСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ собранный Ρ€Π΅Π»ΠΈΠ· с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ansible выкатывался Π½Π° tail. Π’Π°ΠΌ люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ занимались Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ, ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ: всС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΈ прилоТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚; Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π½ΡƒΠΆΠ½Ρ‹Π΅ скрипты. Волько послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡƒΠ±Π΅ΠΆΠ΄Π°Π»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΎΠΊ, Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π»ΡΡ. Он Π½Π°Ρ‡ΠΈΠ½Π°Π» ΠΈΠ΄Ρ‚ΠΈ Π½Π° Ρ‚ΠΎΡ‚ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎ этого Π±Ρ‹Π» tail. А Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎ этого Π±Ρ‹Π» head-ΠΎΠΌ, оставался Π±Π΅Π· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΏΡ€ΠΈ этом с ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉΡΡ Π½Π° Π½Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсиСй нашСго прилоТСния.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ это Π±Ρ‹Π»ΠΎ бСсшовно. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠΎΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это просто ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ балансировщика. ΠžΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, просто ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠ² балансировщик Π½Π°Π·Π°Π΄. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² способности прилоТСния Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ достаточно ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

КакиС ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²ΠΎ всСм этом достоинства?

  1. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, это достаточно просто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ВсСм понятно, ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ подобная схСма дСплоя, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΈΠ»ΠΈ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСра.
  2. Π­Ρ‚ΠΎ достаточно Π½Π°Π΄Π΅ΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ тСхнология дСплоя простая, опробованная тысячами ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. ΠœΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ сСрвСров дСплоятся ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ. Π‘Π»ΠΎΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ.
  3. И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹Π΅ Π΄Π΅ΠΏΠ»ΠΎΠΈ. Π”Π΅ΠΏΠ»ΠΎΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ происходят ΠΎΠ΄Π½ΠΎΠΌΠΎΠΌΠ΅Π½Ρ‚Π½ΠΎ, Π±Π΅Π· Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ³ΠΎ этапа ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ старой вСрсиСй ΠΈ Π½ΠΎΠ²ΠΎΠΉ.

Но Π² этом всСм ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ нСсколько нСдостатков:

  1. Помимо ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-срСды, срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ срСды. НапримСр, qa ΠΈ preproduction. На Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρƒ нас Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ сСрвСров ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 60 сСрвисов. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвиса ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ для Π½Π΅Π³ΠΎ Π²Π΅Ρ€ΡΠΈΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ зависимости, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΠΎ всСх срСдах. Π’Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ врСмя, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ вашСго прилоТСния, со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° devops Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ настройки окруТСния. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ нСсколько ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ сразу Π²ΠΎ всСх срСдах подряд. НапримСр, Π² QA-срСдС Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄Π½ΠΈ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π° Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ β€” Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ.
  2. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ зависимостСй вашСго прилоТСния. Π­Ρ‚ΠΎ зависит Π½Π΅ ΠΎΡ‚ вас, Π° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. А ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ devops, которая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ сСрвСра. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ для Π½ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ Π΄Π°Ρ‚ΡŒ описаниС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.
  3. Π’ Ρ‚ΠΎ врСмя ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ имСвшиСся Ρƒ нас большиС ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Ρ‹ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ малСнькиС сСрвисы, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ всС большС ΠΈ большС. На Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρƒ нас ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ 100. НСобходимо Π±Ρ‹Π»ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ сСрвиса ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π½ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π΄ΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ этого, Π½ΡƒΠΆΠ½Π° Π½Π΅ ΠΎΠ΄Π½Π° машина, Π°, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π΄Π²Π΅. К этому всСму Π΅Ρ‰Π΅ добавляСтся QA-срСда. Π­Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ для вас созданиС ΠΈ запуск Π½ΠΎΠ²Ρ‹Ρ… систСм Π±ΠΎΠ»Π΅Π΅ слоТным, дорогостоящим ΠΈ Π΄ΠΎΠ»Π³ΠΈΠΌ процСссом.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ приняли Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΎΡ‚ дСплоя ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ΠΊ дСплою Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ docker. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ docker Π½ΡƒΠΆΠ½Π° систСма, которая смоТСт Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² кластСрС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ Π½Π΅ смоТСтС ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ просто Ρ‚Π°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ хочСтся ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌ, сколько ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² поднято, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ поднимались автоматичСски. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ систСму управлСния.

ΠœΡ‹ Π΄ΠΎΠ»Π³ΠΎ Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»ΡΠ»ΠΈ Π½Π°Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊΡƒΡŽ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ этот стСк дСплоя Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСрвСра Π±Ρ‹Π» Ρƒ нас нСсколько ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΌ Π±Ρ‹Π»ΠΈ Π½Π΅ самыС свСТиС вСрсии ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм. Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ‚Π°ΠΌ Π΄Π°ΠΆΠ΅ FreeBSD стояла, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ. ΠœΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстрСС ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² docker. Наши дСвопс посмотрСли Π½Π° свой ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Ρ‚Π°ΠΊΡƒΡŽ систСму ΠΊΠ°ΠΊ Nomad.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Nomad

Nomad – это ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ β€œHashiCorp”. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ΠΈ извСстны Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ своими Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ:

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

Β«ConsulΒ» β€” это срСдство для сСрвис-дискавСринга.

Β«TerraformΒ» β€” систСма для управлСния сСрвСрами, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Π°ΠΌ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ infrastructure-as-a-code.

Β«VagrantΒ» позволяСт Π²Π°ΠΌ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ локально ΠΈΠ»ΠΈ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Nomad Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ показался достаточно простым Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ быстро ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π±Π΅Π· измСнСния всСй инфраструктуры. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΠΎΠ½ достаточно Π»Π΅Π³ΠΊΠΎ осваиваСтся. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ ΠΌΡ‹ ΠΈ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π² качСствС систСмы Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ нашСго ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ систСму Π² Nomad?

  1. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго Π½ΡƒΠΆΠ΅Π½ docker image вашСго прилоТСния. НСобходимо ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² docker. Π’ нашСм случаС это artifactory β€” такая систСма, которая позволяСт ΠΏΡƒΡˆΠΈΡ‚ΡŒ Π² Π½Π΅Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Она ΡƒΠΌΠ΅Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΠ²Ρ‹, ΠΎΠ±Ρ€Π°Π·Ρ‹ docker, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ composer РНР, NРМ-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
  2. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скаТСт Nomad, Ρ‡Ρ‚ΠΎ, ΠΊΡƒΠ΄Π° ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ количСствС Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ.

Когда ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ Nomad, Ρ‚ΠΎ Π² качСствС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ язык HΠ‘L, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ HashiCorp Configuration Language. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ надмноТСство Π½Π°Π΄ Yaml, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт Π²Π°ΠΌ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ваш сСрвис Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Nomad.

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

Он позволяСт ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, сколько ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ, ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ… images ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ скармливаСтС этот Ρ„Π°ΠΉΠ» Nomad, Π° ΠΎΠ½ запускаСт Π² соотвСтствии с Π½ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½.

Π’ нашСм случаС ΠΌΡ‹ поняли, Ρ‡Ρ‚ΠΎ просто ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ HΠ‘L-Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ сСрвисов ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° хочСтся ΠΈΡ… ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Π‘Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ сСрвис Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠ΅Π½ Π½Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ экзСмплярС, Π° Π² самых Ρ€Π°Π·Π½Ρ‹Ρ…. НапримСр, ΠΎΠ΄Π½Π° ΠΈΠ· систСм, которая Ρƒ нас находится Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 100 инстансов Π² ΠΏΡ€ΠΎΠ΄Π΅. Они Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ², Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ настройками ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС наши ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для дСплоя Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±Ρ‰Π΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ΠΈ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΡ‹: ΠΈΡ… Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ систСмы Ρƒ нас Π΅ΡΡ‚ΡŒ. Π’ случаС нСобходимости Ρ‚Π°ΠΊΠΆΠ΅ нСслоТно Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ систСму Ρ‚ΠΎΠΆΠ΅ Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π° β€” достаточно просто завСсти ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΎΠ²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π΅ Π»Π΅ΠΆΠ°Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹: service.hcl, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит описаниС нашСго сСрвиса, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ env-Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ этот самый сСрвис, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠ΅Π½Π½Ρ‹ΠΌ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ.

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ наши систСмы Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠ΅Π½Ρ‹ Π² ΠΏΡ€ΠΎΠ΄Π΅ Π½Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ экзСмплярС, Π° Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сразу. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ Π² чистом Π²ΠΈΠ΄Π΅, Π° ΠΈΡ… ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄. И Π² качСствС языка ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ jinja 2. Π’ Ρ‚Π°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Ρƒ нас хранятся ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ самого сСрвиса, Ρ‚Π°ΠΊ ΠΈ env-Ρ„Π°ΠΉΠ»Ρ‹, Π½ΡƒΠΆΠ½Ρ‹Π΅ для Π½Π΅Π³ΠΎ.

Помимо этого, ΠΌΡ‹ помСстили Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ для всСх ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² скрипт-Π΄Π΅ΠΏΠ»ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ ваш сСрвис Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ environment, Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ‚Π°Ρ€Π³Π΅Ρ‚. Π’ случаС, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈ наш HCL-ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π² шаблон, Ρ‚ΠΎ Ρ‚ΠΎΡ‚ HΠ‘L-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎ этого Π±Ρ‹Π» ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠΌ Nomad, Π² этом случаС стал Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ нСсколько ΠΈΠ½Π°Ρ‡Π΅.

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ мСста ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° Π½Π° вставки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ бСрутся ΠΈΠ· env-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… источников. Помимо этого, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ HΠ‘L-Ρ„Π°ΠΉΠ»Ρ‹ динамичСски, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ вставки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ ΠΊΠ°ΠΊ jinja ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ условия, Ρ‚ΡƒΠ΄Π° ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡƒΠ΄Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚Π΅ свои прилоТСния.

НапримСр, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ ваш сСрвис Π² ΠΏΡ€Π΅ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ ΠΈ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½. Допустим, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΡ€ΠΎΠ½-cΠΊΡ€ΠΈΠΏΡ‚Ρ‹, Π° просто Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ сСрвис Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚. Для любого, ΠΊΡ‚ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ сСрвис, процСсс выглядит ΠΎΡ‡Π΅Π½ΡŒ просто ΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ. Достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» deploy.sh, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ сСрвис Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ Ρ‚Π°Ρ€Π³Π΅Ρ‚. НапримСр, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ систСму Π² Россию, Π² Π‘Π΅Π»ΠΎΡ€ΡƒΡΡΠΈΡŽ ΠΈΠ»ΠΈ ΠšΠ°Π·Π°Ρ…ΡΡ‚Π°Π½. Для этого достаточно просто ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈ Ρƒ вас собСрСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ».

Когда сСрвис Nomad ΡƒΠΆΠ΅ оказываСтся Ρƒ вас Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠ΅Π½Π½Ρ‹ΠΌ Π² кластСр, ΠΎΠ½ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

Для Π½Π°Ρ‡Π°Π»Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ балансировщик снаруТи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ вСсь ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² сСбя. Он Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ вмСстС с Consul ΠΈ ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ Ρƒ Π½Π΅Π³ΠΎ, Π³Π΄Π΅, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ Π½ΠΎΠ΄Π΅, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ IP-адрСсу находится ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт Ρ‚ΠΎΠΌΡƒ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌΡƒ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ. БСрвисы Π² Consul ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ· самого Nomad. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΎΠ½ΠΈ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Nomad ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС запускаСмыС Π² Π½Π΅ΠΌ сСрвисы Π²Π½ΡƒΡ‚Ρ€ΠΈ Consul.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ваш внСшний балансировщик ΡƒΠ·Π½Π°Π΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΉ сСрвис Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΎΠ½ пСрСнаправляСт Π΅Π³ΠΎ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈΠ»ΠΈ Π² нСсколько ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. ЕстСствСнно, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΈ ΠΎ бСзопасности. Π”Π°ΠΆΠ΅ нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС сСрвисы Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ для этого трСбуСтся Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ свободный доступ ΠΈΠ· любого сСрвиса ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. ΠœΡ‹ достигали этого Π·Π° счСт сСгмСнтации. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис запускался Π² своСй Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ сСти, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π»ΠΈ прописаны ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ/Π·Π°ΠΏΡ€Π΅Ρ‚Π° доступа ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ систСмами ΠΈ сСрвисам. Они ΠΌΠΎΠ³Π»ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого кластСра, Ρ‚Π°ΠΊ ΠΈ Π²Π½Π΅ Π½Π΅Π³ΠΎ. НапримСр, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ сСрвису ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ сСгмСнтации Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ сСти. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ ΠΏΠΎ ошибкС Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ случайно ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ ΠΈΠ· тСстового окруТСния ΠΊ вашСй ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Π±Π°Π·Π΅.

Π’ΠΎ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ обошСлся процСсс ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² ΠΏΠ»Π°Π½Π΅ чСловСчСских рСсурсов?

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 5-6 мСсяцСв занял ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ всСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π² Nomad. ΠœΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ посСрвисно, Π½ΠΎ Π² достаточно быстром Ρ‚Π΅ΠΌΠΏΠ΅. КаТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свои собствСнныС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ для сСрвисов.

Π£ нас принят Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‡Ρ‚ΠΎ каТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° docker images своих систСм ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. ДСвопс ΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ инфраструктуру, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для дСплоя, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ самого кластСра, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ CI-систСмы ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. И Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρƒ нас Π±ΠΎΠ»Π΅Π΅ 60 систСм ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Π»ΠΈ Π² Nomad, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ порядка 2 тысяч ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

ДСвопс ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠ±Ρ‰ΡƒΡŽ инфраструктуру всСго, Ρ‡Ρ‚ΠΎ связано с Π΄Π΅ΠΏΠ»ΠΎΠ΅ΠΌ, с сСрвСрами. А каТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄ свою ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ систСму, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ Nomad

КакиС достоинства ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ, пСрСйдя Π½Π° Π΄Π΅ΠΏΠ»ΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Nomad ΠΈ docker Π² Ρ‚ΠΎΠΌ числС?

  1. ΠœΡ‹ обСспСчили ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ условия для всСх срСд. Π’ Π΄Π΅Π²Π΅Π»ΠΎΠΌΠΏΠ΅Π½Ρ‚Π΅, QA-срСдС, ΠΏΡ€Π΅ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½Π΅, ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², с ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ зависимостями. БоотвСтствСнно Ρƒ вас практичСски отсутствуСт шанс Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ окаТСтся Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎ этого протСстировали Ρƒ сСбя локально ΠΈΠ»ΠΈ Π½Π° тСстовом ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ.
  2. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ выяснили, Ρ‡Ρ‚ΠΎ достаточно Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ сСрвис. Π›ΡŽΠ±Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ систСмы с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния дСплоя Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ просто. Достаточно ΠΏΠΎΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, хранящий ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ для вашСй систСмы, ΠΈ Ρƒ вас всС Π³ΠΎΡ‚ΠΎΠ²ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ систСму Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий ΠΎΡ‚ дСвопс.
  3. ВсС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±Ρ‰Π΅ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ оказались ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΡ‹Π΅. Π’ Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄Π΅ΠΏΠ»ΠΎΠΈΠ»ΠΈ наши систСмы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… сСрвСров, ΠΌΡ‹ использовали Ansible, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ Π»Π΅ΠΆΠ°Π»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Однако для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Ρ‹Π»ΠΎ с этим нСсколько слоТнСС. Π’ΡƒΡ‚ объСм ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² ΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ сСрвис, стал Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ мСньшС. Плюс для дСвопс ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ. Π’ случаС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Π½ΠΎΠ²ΠΎΠΉ вСрсии Nomad, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·ΡΡ‚ΡŒ ΠΈ массово ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ мСстС.

Но ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ ΠΈ с нСсколькими нСдостатками:

Оказалось, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ смогли Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π±Π΅ΡΡˆΠΎΠ²Π½ΠΎΡΡ‚ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅Π² Π² случаС Nomad. ΠŸΡ€ΠΈ Π²Ρ‹ΠΊΠ°Ρ‚ΠΊΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… условий ΠΌΠΎΠ³Π»ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ оказывался Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ, ΠΈ Nomad воспринимал Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊ ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΈΡŽ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π­Ρ‚ΠΎ происходило Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ успСло Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ систСма Π½Π° Π½Π΅Π΄ΠΎΠ»Π³ΠΈΠΉ срок Π½Π°Ρ‡ΠΈΠ½Π°Π»Π° Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ 500-Π΅ ошибки, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π°Ρ‡ΠΈΠ½Π°Π» ΠΈΠ΄Ρ‚ΠΈ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ² Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ.

ΠœΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±Π°Π³Π°ΠΌΠΈ. Π‘Π°ΠΌΡ‹ΠΉ сущСствСнный Π±Π°Π³ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Nomad Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ воспринимаСт большой кластСр, Ссли Ρƒ вас ΠΌΠ½ΠΎΠ³ΠΎ систСм ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Когда Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π²Π΅Π·Ρ‚ΠΈ Π² обслуТиваниС ΠΎΠ΄ΠΈΠ½ ΠΈΠ· сСрвСров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² кластСр Nomad, Π΅ΡΡ‚ΡŒ достаточно большая Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ кластСр почувствуСт сСбя Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ развалится Π½Π° части. Π§Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠΏΠ°ΡΡ‚ΡŒ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒΡΡ β€” это Π²Π°ΠΌ впослСдствии ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΡ€ΠΎΠ³ΠΎ обойдСтся, Ссли всС ваши систСмы Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ находятся ΠΈΠΌΠ΅Π½Π½ΠΎ Π² кластСрС, управляСмом Nomad.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΊΡƒΠ΄Π° Π½Π°ΠΌ ΠΈΠ΄Ρ‚ΠΈ дальшС. На Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ стали Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ, Ρ‡Π΅Π³ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ. А ΠΈΠΌΠ΅Π½Π½ΠΎ: Ρ…ΠΎΡ‚ΠΈΠΌ надСТности, Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‡Π΅ΠΌ Π΄Π°Π΅Ρ‚ Nomad, ΠΈ Π±ΠΎΠ»Π΅Π΅ Π·Ρ€Π΅Π»ΡƒΡŽ, Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ систСму.

Π’ этом ΠΏΠ»Π°Π½Π΅ наш Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ°Π» Π½Π° Kubernetes ΠΊΠ°ΠΊ Π½Π° ΡΠ°ΠΌΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для запуска кластСров. ОсобСнно ΠΏΡ€ΠΈ условии Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ количСство Π½Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π±Ρ‹Π» достаточно большой. Для Ρ‚Π°ΠΊΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ Kubernetes показался самой подходящСй систСмой ΠΈΠ· Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² Kubernetes

НСмноТко расскаТу ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ основныС понятия Kubernetes ΠΈ Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Nomad.

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ самым Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ понятиСм Π² Kubernetes являСтся понятиС pod. Pod β€” это Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всСгда Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ вмСстС. И ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ всСгда строго Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС. Они доступны Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ ΠΏΠΎ Π°ΠΉΠΏΠΈΡˆΠ½ΠΈΠΊΡƒ 127.0.0.1 Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΡ€Ρ‚Π°Ρ….

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ РНР-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ состоит ΠΈΠ· nginx ΠΈ php-fpm – классичСская схСма. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈ nginx ΠΈ php-fpm ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π±Ρ‹Π»ΠΈ всСгда вмСстС. Kubernetes позволяСт этого Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, описав ΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ pod. Как Ρ€Π°Π· этого ΠΌΡ‹ ΠΈ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Nomad.

Π’Ρ‚ΠΎΡ€Ρ‹ΠΌ понятиСм являСтся deployment. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ pod сам ΠΏΠΎ сСбС – это эфСмСрная Π²Π΅Ρ‰ΡŒ, ΠΎΠ½Π° запускаСтся ΠΈ исчСзаСт. Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ сначала ΡƒΠ±ΠΈΠ²Π°Ρ‚ΡŒ всС ваши ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ сразу Π½ΠΎΠ²Ρ‹Π΅ вСрсии ΠΈΠ»ΠΈ ΠΆΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… постСпСнно – Π²ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π° этот процСсс ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ понятиС deployment. Он описываСт Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚Π΅ ваши podΡ‹, Π² ΠΊΠ°ΠΊΠΎΠΌ количСствС ΠΈ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ.

Π’Ρ€Π΅Ρ‚ΡŒΠΈΠΌ понятиСм являСтся service. Π’Π°Ρˆ service – это фактичСски ваша систСма, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² сСбя Π½Π΅ΠΊΠΈΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Π° ΠΏΠΎΡ‚ΠΎΠΌ направляСт Π΅Π³ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько podΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Π°ΡˆΠ΅ΠΌΡƒ сСрвису. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ позволяСт ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ вСсь входящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° Ρ‚Π°ΠΊΠΎΠΉ-Ρ‚ΠΎ сСрвис с Ρ‚Π°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ эти podΡ‹. И ΠΏΡ€ΠΈ этом ΠΎΠ½ обСспСчиваСт Π²Π°ΠΌ балансировку Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π²Π° podΠ° вашСго прилоТСния, ΠΈ вСсь входящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Π±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ относящимися ΠΊ этому сСрвису podΠ°ΠΌΠΈ.

И Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ΅ основноС понятиС β€” Ingress. Π­Ρ‚ΠΎ сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся Π² кластСрС Kubernetes. Он выступаСт ΠΊΠ°ΠΊ внСшний балансировщик Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° сСбя всС запросы. Π—Π° счСт API Kubernetes Ingress ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΊΡƒΠ΄Π° эти запросы Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ½ это ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС запросы Π½Π° этот хост ΠΈ Ρ‚Π°ΠΊΠΎΠΉ-Ρ‚ΠΎ URL отправляСм Π½Π° этот сСрвис. А эти запросы, приходящиС Π½Π° этот хост ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ URL отправляСм Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвис.

Π‘Π°ΠΌΠΎΠ΅ ΠΊΡ€ΡƒΡ‚ΠΎΠ΅ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ способны этим всСм ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π—Π°Π΄Π°Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ Ingress, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вСсь Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, приходящий Π½Π° Ρ‚Π°ΠΊΠΎΠΉ-Ρ‚ΠΎ API, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, прописанныС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° Go. А Π²ΠΎΡ‚ этот Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, приходящий Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π΄ΠΎΠΌΠ΅Π½, Π½ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ URL, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, написанныС Π½Π° РНР, Π³Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΠΊΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ скоростныС.

Если ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ всС эти понятия с Nomad, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ понятия – это всС вмСстС Service. А послСднСС понятиС Π² самом Nomad отсутствуСт. ΠœΡ‹ Π² качСствС Π½Π΅Π³ΠΎ использовали внСшний балансировщик: это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ haproxy, nginx, nginx+ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ случаС с ΠΊΡƒΠ±ΠΎΠΌ Π²Π°ΠΌ Π½Π΅ Π½Π°Π΄ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ это Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ понятиС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Однако, Ссли ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ingress Π²Π½ΡƒΡ‚Ρ€ΠΈ, Ρ‚ΠΎ это Π»ΠΈΠ±ΠΎ nginx, Π»ΠΈΠ±ΠΎ haproxy, Π»ΠΈΠ±ΠΎ traefik, Π½ΠΎ ΠΊΠ°ΠΊ Π±Ρ‹ встроСнный Π² Kubernetes.

ВсС описанныС мною понятия – это, ΠΏΠΎ сути Π΄Π΅Π»Π°, рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра Kubernetes. Для ΠΈΡ… описания Π² ΠΊΡƒΠ±Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ yaml-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ, Ρ‡Π΅ΠΌ НБL-Ρ„Π°ΠΉΠ»Ρ‹ Π² случаС с Nomad. Но структурно ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π² случаС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, podΠ° Ρ‚ΠΎ ΠΆΠ΅ самоС. Они говорят – Ρ…ΠΎΡ‡Ρƒ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅-Ρ‚ΠΎ podΡ‹ Ρ‚ΡƒΠ΄Π°-Ρ‚ΠΎ, с Ρ‚Π°ΠΊΠΈΠΌΠΈ-Ρ‚ΠΎ ΠΈΠΌΠ°Π΄ΠΆΠΈ, Π² Ρ‚Π°ΠΊΠΎΠΌ-Ρ‚ΠΎ количСствС.

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

Помимо этого, ΠΌΡ‹ поняли, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€ΡƒΠΊΠ°ΠΌΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ рСсурс: deployment, сСрвисы, Ingress ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. ВмСсто этого ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ систСму, ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽΡΡ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Kubernetes, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ порядкС всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависимости рСсурсов. Π’ качСствС Ρ‚Π°ΠΊΠΎΠΉ систСмы, которая ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π½Π°ΠΌ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Helm.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ понятия Π² Helm

Helm – это ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ для Kubernetes. Он ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ Π² языках программирования. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ сСрвис, состоящий ΠΈΠ·, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, deployment nginx, deployment php-fpm, ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° для Ingress, configmaps (это ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, которая позволяСт Π²Π°ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ env ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для вашСй систСмы) Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ‡Π°Ρ€Ρ‚ΠΎΠ². ΠŸΡ€ΠΈ этом Helm Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ²Π΅Ρ€Ρ… Kubernetes. Π’ΠΎ Π΅ΡΡ‚ΡŒ это Π½Π΅ какая-Ρ‚ΠΎ систСма, стоящая Π² сторонС, Π° просто Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ сСрвис, запускаСмый Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΡƒΠ±Π°. Π’Ρ‹ взаимодСйствуСтС с Π½ΠΈΠΌ ΠΏΠΎ Π΅Π³ΠΎ API Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Π•Π³ΠΎ удобство ΠΈ ΠΏΡ€Π΅Π»Π΅ΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ссли helm сломаСтся ΠΈΠ»ΠΈ Π²Ρ‹ Π΅Π³ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΠ· кластСра, Ρ‚ΠΎ ваши сСрвисы Π½Π΅ исчСзнут, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ helm слуТит ΠΏΠΎ сути Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для запуска систСмы. Π—Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈ состояниС сСрвисов дальшС ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ сам Kubernetes.

Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ поняли, Ρ‡Ρ‚ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄ΠΎ этого Π±Ρ‹Π»ΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ jinja Π² наши ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ, являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· основных возмоТностСй helm. ВсС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ создаСтС для Π²Π°ΡˆΠΈΡ… систСм, хранятся Π² helm Π² Π²ΠΈΠ΄Π΅ шаблонов, ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ Π½Π° jinja, Π½ΠΎ, Π½Π° самом Π΄Π΅Π»Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ языка Go, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ helm написан, ΠΊΠ°ΠΊ ΠΈ Kubernetes.

Helm добавляСт Π½Π°ΠΌ Π΅Ρ‰Π΅ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… понятий.

Chart β€” это описаниС вашСго сСрвиса. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°Ρ… Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π»ΠΈ Π±Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚, bundle ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. Π—Π΄Π΅ΡΡŒ это называСтся chart.

Values – это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для сборки Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² ΠΈΠ· шаблонов.

Release. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСплоится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ helm, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ€Π΅Π»ΠΈΠ·Π°. Helm ΠΏΠΎΠΌΠ½ΠΈΡ‚, ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ‹Π» ΠΊΠΎΠ½Ρ„ΠΈΠ³ сСрвиса ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ, ΠΏΠΎΠ·Π°ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Ρ€Π΅Π»ΠΈΠ·Π΅ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ, достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ helm callback, ΡƒΠΊΠ°Π·Π°Π² Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ρ€Π΅Π»ΠΈΠ·Π°. Π”Π°ΠΆΠ΅ Ссли Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ конфигурация Π² вашСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ доступна, helm всС Ρ€Π°Π²Π½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π°, ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ Π²Π°ΡˆΡƒ систСму Π½Π° Ρ‚ΠΎ состояниС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π΅Π»ΠΈΠ·Π΅.

Π’ случаС, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ helm, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ для Kubernetes Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ вашСго сСрвиса Π² зависимости ΠΎΡ‚ срСды.

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ Π² случаС с Nomad. Если Π² Nomad Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ для дСплоя, ΠΈ n-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ наш сСрвис, Ρ‚ΠΎ здСсь ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… рСпозитория. Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Β«deployΒ» хранятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ n-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½ΡƒΠΆΠ½Ρ‹Π΅ для дСплоя, Π° Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Β«helmΒ» хранятся ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ ΠΈΠ»ΠΈ Ρ‡Π°Ρ€Ρ‚Ρ‹.

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

Π§Ρ‚ΠΎ это Π½Π°ΠΌ Π΄Π°Π»ΠΎ?

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² самих ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΌΡ‹ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. НапримСр, ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Они хранятся Π² Π²ΠΈΠ΄Π΅ secrets Π² Kubernetes, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ‚Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄Π°Π²Π°Ρ‚ΡŒ доступ всСм подряд. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ доступ ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ Β«deployΒ» Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Β«helmΒ» содСрТит просто описаниС сСрвиса. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π² Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ доступ бСзопасно Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ ΠΊΡ€ΡƒΠ³Ρƒ Π»ΠΈΡ†.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, Π½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ срСды, Ρ‚ΠΎ благодаря Ρ‚Π°ΠΊΠΎΠΌΡƒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наши helm-Ρ‡Π°Ρ€Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ сСрвисы Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½, Π½ΠΎ ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² QA-срСду. Π”Π°ΠΆΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… локально, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Minikube β€” это такая ΡˆΡ‚ΡƒΠΊΠ° для локального запуска Kubernetes.

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ рСпозитория ΠΌΡ‹ оставили Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСрвиса. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ находятся ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, относящиСся ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ‡Π°Ρ€Ρ‚Ρƒ ΠΈ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ рСсурсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ для запуска нашСй систСмы. Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Β«deployΒ» ΠΌΡ‹ оставили Ρ‚ΠΎΠ»ΡŒΠΊΠΎ энвы. Π’ этом случаС ΠΌΡ‹ Π½Π΅ стали ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ jinja, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ helm сам Π΄Π°Π΅Ρ‚ ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ – это ΠΎΠ΄Π½Π° ΠΈΠ· Π΅Π³ΠΎ основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠœΡ‹ оставили скрипт для дСплоя – deploy.sh, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈ стандартизируСт запуск для дСплоя с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ helm. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для любого, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ, интСрфСйс дСплоя выглядит Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ Π±Ρ‹Π» Π² случаС дСплоя Ρ‡Π΅Ρ€Π΅Π· Nomad. Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅ deploy.sh, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ вашСго сСрвиса, ΠΈ Ρ‚ΠΎ, ΠΊΡƒΠ΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ запускаСтся helm. Он Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ собираСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ ΠΈΠ· шаблонов, подставляСт Π² Π½ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ values-Ρ„Π°ΠΉΠ»Ρ‹, Π·Π°Ρ‚Π΅ΠΌ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚, пуская ΠΈΡ… Π² Kubernetes.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

БСрвис Kubernetes выглядит Π±ΠΎΠ»Π΅Π΅ слоТным, Ρ‡Π΅ΠΌ Nomad.

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² VM, Nomad ΠΈ Kubernetes

Π—Π΄Π΅ΡΡŒ исходящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π² Ingress. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ„Ρ€ΠΎΠ½Ρ‚-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° сСбя всС запросы ΠΈ впослСдствии отправляСт ΠΈΡ… Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌ запроса сСрвисы. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΠΎΠ½ ΠΈΡ… Π½Π° основС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ описания вашСго прилоТСния Π² helm ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π·Π°Π΄Π°ΡŽΡ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. БСрвис ΠΆΠ΅ отправляСт запросы Π½Π° свои podΡ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, балансируя входящий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ всСми ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ сСрвису. Ну ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ бСзопасности Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ сСти, ΠΌΡ‹ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² кластСрС Kubernetes Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сСгмСнтация, которая основана Π½Π° Ρ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ВсС сСрвисы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ привязаны ΠΏΡ€Π°Π²Π° доступов сСрвисов ΠΊ Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ внСшним/Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ рСсурсам Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ»ΠΈ Π²Π½Π΅ кластСра.

Выполняя ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ Kubernetes ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми возмоТностями Nomad, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎ этого ΠΌΡ‹ использовали, Π° Ρ‚Π°ΠΊΠΆΠ΅ добавляСт ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, Π° ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ Ρ‡Π΅Ρ€Π΅Π· кастомныС Ρ‚ΠΈΠΏΡ‹ рСсурсов. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ Π² Kubernetes ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ, Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой собствСнный рСсурс ΠΈ сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ваш рСсурс Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ вашСй систСмы Π±Π΅Π· нСобходимости пСрСустановки Kubernetes ΠΈ Π±Π΅Π· нСобходимости ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ использования являСтся Prometheus, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся Ρƒ нас Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра Kubernetes. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½Π°Ρ‡Π°Π» ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ с Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ сСрвиса, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² описаниС сСрвиса Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ рСсурса, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ сСрвис-ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€. Prometheus Π·Π° счСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ Π² Kubernetes, кастомный Ρ‚ΠΈΠΏ рСсурсов, автоматичСски Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ с Π½ΠΎΠ²ΠΎΠΉ систСмы. Π­Ρ‚ΠΎ достаточно ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π΄Π΅ΠΏΠ»ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ сдСлали Π² Kubernetes Π±Ρ‹Π» Π² ΠΌΠ°Ρ€Ρ‚Π΅ 2018 Π³ΠΎΠ΄Π°. И Π·Π° это врСмя ΠΌΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ испытывали с Π½ΠΈΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Он достаточно ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· сущСствСнных Π±Π°Π³ΠΎΠ². К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ дальшС Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ. На сСгодняшний дСнь Π½Π°ΠΌ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Ρ‚Π΅Ρ… возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ, Π° Ρ‚Π΅ΠΌΠΏΡ‹ развития Kubernetes Π½Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ нравятся. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ большС 3000 ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² находятся Π² Kubernetes. ΠšΠ»Π°ΡΡ‚Π΅Ρ€ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ нСсколько Node. ΠŸΡ€ΠΈ этом ΠΎΠ½ обслуТиваСмый, ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ.

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