Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° прилоТСния Π² мноТСство Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ с Helm

Как Dailymotion ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Kubernetes: Π Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° прилоТСния

НиС ΠΎΡ‚ Dailymotion Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Kubernetes Π² производството ΠΏΡ€Π΅Π΄ΠΈ 3 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. Но внСдряванСто Π½Π° прилоТСния Π² мноТСство ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π΅ Π·Π°Π±Π°Π²Π½ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€Π΅Π· послСднитС няколко Π³ΠΎΠ΄ΠΈΠ½ΠΈ сС ΠΎΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΠΌ Π½Π°ΡˆΠΈΡ‚Π΅ инструмСнти ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ процСси.

ΠžΡ‚ΠΊΡŠΠ΄Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°

Π’ΡƒΠΊ Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ внСдрявамС Π½Π°ΡˆΠΈΡ‚Π΅ прилоТСния Π² мноТСство Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ ΠΏΠΎ свСта.

Π—Π° Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ няколко Kubernetes ΠΎΠ±Π΅ΠΊΡ‚Π° навСднъТ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π¨Π»Π΅ΠΌΠΈ всички наши Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² Π΅Π΄Π½ΠΎ git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π—Π° Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΠΌ пълСн стСк ΠΎΡ‚ прилоТСния ΠΎΡ‚ няколко услуги, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π°ΠΊΠ° Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π°Ρ‚Π° ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°. По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°, която Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π° зависимости ΠΈ Π²ΠΈ позволява Π΄Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ API ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ услуги с Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.

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

Π”Π° ΠΌΠΈΠ½Π΅ΠΌ ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°. Π”ΠΎΠΊΠ°Ρ‚ΠΎ Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΏΡŠΡ€Π²ΠΈΡΡ‚ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π·Π° освобоТдаванС Π½Π° Helm 3 Π²Π΅Ρ‡Π΅ Π΅ обявСн. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° вСрсия ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° цял Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ подобрСния Π·Π° справянС с някои ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ смС срСщали Π² ΠΌΠΈΠ½Π°Π»ΠΎΡ‚ΠΎ.

Π Π°Π±ΠΎΡ‚Π΅Π½ процСс Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°

ИзползвамС разклоняванС Π·Π° прилоТСния ΠΈ Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ ΡΡŠΡ‰ΠΈΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ към Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈΡ‚Π΅.

  • Клон Π”Π΅Π² ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° създаванС Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ тСствани Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.
  • ΠšΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ заявка Π·Π° изтСглянС Π½Π° майстор, Ρ‚Π΅ сС провСряват ΠΏΠΎΠ΅Ρ‚Π°ΠΏΠ½ΠΎ.
  • Накрая създавамС заявка Π·Π° изтСглянС, Π·Π° Π΄Π° Π°Π½Π³Π°ΠΆΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² ΠΊΠ»ΠΎΠ½Π° Ρ€ΡŠΠ³Π°Π½Π΅ ΠΈ Π³ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ Π² производството.

Всяка срСда ΠΈΠΌΠ° собствСно частно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π½Π°ΡˆΠΈΡ‚Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ ΠΈ Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Chartmuseum с ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ API. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ стриктна изолация ΠΌΠ΅ΠΆΠ΄Ρƒ срСдитС ΠΈ тСстванС Π² рСалния свят Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π² производството.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди

Π‘Ρ‚Ρ€ΡƒΠ²Π° си Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ натискат ΠΊΠ»ΠΎΠ½ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, вСрсия Π½Π° тяхната Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π² dev Chartmuseum. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ всички Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈ трябва Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ Π΄Π° посочитС Π²Π°ΡˆΠ°Ρ‚Π° вСрсия Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π°, Π·Π° Π΄Π° Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ случайно ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π° някой Π΄Ρ€ΡƒΠ³.

ОсвСн Ρ‚ΠΎΠ²Π° Π½Π°ΡˆΠΈΡΡ‚ малък Python скрипт Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π° Kubernetes ΠΎΠ±Π΅ΠΊΡ‚ΠΈ спрямо спСцификациитС Π½Π° Kubernetes OpenAPI, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠšΡƒΠ±Π΅Π²Π°Π», ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π³ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ‚Π΅ Π² Chartmusem.

ΠžΠ±Ρ‰ΠΎ описаниС Π½Π° работния процСс Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°

  1. НастройванС Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ спорСд спСцификацията gazr.io Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° качСството (ΠΌΡŠΡ…, тСст Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π°).
  2. Π˜Π·Π±ΡƒΡ‚Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΊΠ΅Ρ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с инструмСнти Π½Π° Python, ΠΊΠΎΠΈΡ‚ΠΎ внСдряват Π½Π°ΡˆΠΈΡ‚Π΅ прилоТСния.
  3. Настройка Π½Π° срСдата ΠΏΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΊΠ»ΠΎΠ½.
  4. Π’Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Kubernetes yaml Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Kubeval.
  5. Автоматично ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° вСрсията Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° ΠΈ Π½Π΅ΠΉΠ½ΠΈΡ‚Π΅ родитСлски Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ (Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ зависят ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½Π°Ρ‚Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°).
  6. Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π² Chartmuseum, която ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° срСда

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° различията ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅

ЀСдСрация Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅

ИмашС Π²Ρ€Π΅ΠΌΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ фСдСрация Π½Π° Kubernetes ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° Kubernetes ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ Π΅Π΄Π½Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° API. Но Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ…Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. НапримСр, някои ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π½Π° Kubernetes Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ създадСни Π² ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° обСдиняванС, ΠΊΠΎΠ΅Ρ‚ΠΎ затруднява ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π·Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ.

Π—Π° Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° управлявамС ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅ нСзависимо, ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ опрости процСса (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ ΠΏΡŠΡ€Π²Π°Ρ‚Π° вСрсия Π½Π° фСдСрацията; Π½Π΅Ρ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΎ във Π²Ρ‚ΠΎΡ€Π°Ρ‚Π°).

Π“Π΅ΠΎ-разпространСна ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°ΡˆΠ°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π΅ разпространСна Π² 6 Ρ€Π΅Π³ΠΈΠΎΠ½Π° - 3 Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΈ 3 Π² ΠΎΠ±Π»Π°ΠΊΠ°.


Π Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ внСдряванС

Бтойности Π½Π° Global Helm

4 Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ стойности Π½Π° Helm Π²ΠΈ позволяват Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ‚Π΅. Всички наши Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ ΠΈΠΌΠ°Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ стойности ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

global:
  cloud: True
  env: staging
  region: us-central1
  clusterName: staging-us-central1

Π“Π»ΠΎΠ±Π°Π»Π½ΠΈ цСнности

Π’Π΅Π·ΠΈ стойности ΠΏΠΎΠΌΠ°Π³Π°Ρ‚ Π΄Π° сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚ Π·Π° Π½Π°ΡˆΠΈΡ‚Π΅ прилоТСния ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ†Π΅Π»ΠΈ: наблюдСниС, прослСдяванС, рСгистриранС, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° външни повиквания, ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ ΠΈ Π΄Ρ€.

  • "ΠΎΠ±Π»Π°ΠΊ": ИмамС Ρ…ΠΈΠ±Ρ€ΠΈΠ΄Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Kubernetes. НапримСр Π½Π°ΡˆΠΈΡΡ‚ API Π΅ Ρ€Π°Π·Π³ΡŠΡ€Π½Π°Ρ‚ Π² GCP Π·ΠΎΠ½ΠΈ ΠΈ Π² Π½Π°ΡˆΠΈΡ‚Π΅ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ.
  • "env": Някои стойности ΠΌΠΎΠΆΠ΅ Π΄Π° сС промСнят Π·Π° нСпроизводствСни срСди. НапримСр Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π½Π° рСсурси ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅.
  • "Ρ€Π΅Π³ΠΈΠΎΠ½": Π’Π°Π·ΠΈ информация ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ мСстополоТСниСто Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° опрСдСлянС Π½Π° Π±Π»ΠΈΠ·ΠΊΠΈ ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π·Π° външни услуги.
  • "clusterName": Π°ΠΊΠΎ ΠΈ ΠΊΠΎΠ³Π° искамС Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ стойност Π·Π° ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.

Π•Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

{{/* Returns Horizontal Pod Autoscaler replicas for GraphQL*/}}
{{- define "graphql.hpaReplicas" -}}
{{- if eq .Values.global.env "prod" }}
{{- if eq .Values.global.region "europe-west1" }}
minReplicas: 40
{{- else }}
minReplicas: 150
{{- end }}
maxReplicas: 1400
{{- else }}
minReplicas: 4
maxReplicas: 20
{{- end }}
{{- end -}}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° шаблон Π½Π° Helm

Π’Π°Π·ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π° Π² ΠΏΠΎΠΌΠΎΡ‰Π΅Π½ шаблон, Π·Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΏΡ€Π΅Ρ‚Ρ€ΡƒΠΏΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Kubernetes YAML.

Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π·Π° кандидатстванС

ΠΠ°ΡˆΠΈΡ‚Π΅ инструмСнти Π·Π° внСдряванС сС основават Π½Π° мноТСство YAML Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. По-Π΄ΠΎΠ»Ρƒ Π΅ Π΄Π°Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°ΠΌΠ΅ услуга ΠΈ Π½Π΅ΠΉΠ½Π°Ρ‚Π° топология Π½Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ (Π±Ρ€ΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ) Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€.

releases:
  - foo.world

foo.world:                # Release name
  services:               # List of dailymotion's apps/projects
    foobar:
      chart_name: foo-foobar
      repo: [email protected]:dailymotion/foobar
      contexts:
        prod-europe-west1:
          deployments:
            - name: foo-bar-baz
              replicas: 18
            - name: another-deployment
              replicas: 3

ДСфиниция Π½Π° услугата

Π’ΠΎΠ²Π° Π΅ схСма Π½Π° всички ΡΡ‚ΡŠΠΏΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ опрСдСлят нашия Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс Π·Π° внСдряванС. ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² мноТСство Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.


Π‘Ρ‚ΡŠΠΏΠΊΠΈ Π·Π° Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° Jenkins

Ами Ρ‚Π°ΠΉΠ½ΠΈΡ‚Π΅?

По ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° сигурността, Π½ΠΈΠ΅ прослСдявамС всички Ρ‚Π°ΠΉΠ½ΠΈ ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ мСста ΠΈ Π³ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Π² ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ Ρ‚Ρ€Π΅Π·ΠΎΡ€ свод Π² ΠŸΠ°Ρ€ΠΈΠΆ.

ΠΠ°ΡˆΠΈΡ‚Π΅ инструмСнти Π·Π° внСдряванС ΠΈΠ·Π²Π»ΠΈΡ‡Π°Ρ‚ Ρ‚Π°ΠΉΠ½ΠΈ стойности ΠΎΡ‚ Vault ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄ΠΎΠΉΠ΄Π΅ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° внСдряванС, Π³ΠΈ Π²ΠΌΡŠΠΊΠ²Π°Ρ‚ Π² Helm.

Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π°, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ…ΠΌΠ΅ ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°ΠΉΠ½ΠΈΡ‚Π΅ Π² Vault ΠΈ Ρ‚Π°ΠΉΠ½ΠΈΡ‚Π΅, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ сС нуТдаят Π½Π°ΡˆΠΈΡ‚Π΅ прилоТСния:

secrets:                                                                                                                                                                                                        
     - secret_id: "stack1-app1-password"                                                                                                                                                                                  
       contexts:                                                                                                                                                                                                   
         - name: "default"                                                                                                                                                                                         
           vaultPath: "/kv/dev/stack1/app1/test"                                                                                                                                                               
           vaultKey: "password"                                                                                                                                                                                    
         - name: "cluster1"                                                                                                                                                                           
           vaultPath: "/kv/dev/stack1/app1/test"                                                                                                                                                               
           vaultKey: "password"

  • Π”Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ…ΠΌΠ΅ ΠΎΠ±Ρ‰ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° слСдватС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ записватС Ρ‚Π°ΠΉΠ½ΠΈ Π² Vault.
  • Ако Ρ‚Π°ΠΉΠ½Π°Ρ‚Π° Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌΠ° към ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ контСкст ΠΈΠ»ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ запис. (Π’ΡƒΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚ cluster1 ΠΈΠΌΠ° своя собствСна стойност Π·Π° Ρ‚Π°ΠΉΠ½Π°Ρ‚Π° ΠΏΠ°Ρ€ΠΎΠ»Π° Π½Π° stack-app1).
  • Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° стойността ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.
  • Π—Π° всСки Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ списък Π² Π’Π°ΠΉΠ½Π°Ρ‚Π° Π½Π° Kubernetes вмъква сС Π΄Π²ΠΎΠΉΠΊΠ° ΠΊΠ»ΡŽΡ‡-стойност. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ тайният шаблон Π² Π½Π°ΡˆΠΈΡ‚Π΅ класации Π΅ ΠΌΠ½ΠΎΠ³ΠΎ прост.

apiVersion: v1
data:
{{- range $key,$value := .Values.secrets }}
  {{ $key }}: {{ $value | b64enc | quote }}
{{ end }}
kind: Secret
metadata:
  name: "{{ .Chart.Name }}"
  labels:
    chartVersion: "{{ .Chart.Version }}"
    tillerVersion: "{{ .Capabilities.TillerVersion.SemVer }}"
type: Opaque

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ ограничСния

Π Π°Π±ΠΎΡ‚Π° с мноТСство Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°

Π‘Π΅Π³Π° раздСлямС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ прилоТСния. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ трябва Π΄Π° работят Π² Π΄Π²Π΅ git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°: Π΅Π΄Π½ΠΎ Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ Π΅Π΄Π½ΠΎ Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π² Kubernetes. 2 git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Ρ‚ 2 Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ Π΅ лСсно Π·Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‰ Π΄Π° сС ΠΎΠ±ΡŠΡ€ΠΊΠ°.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ Π΅ ΠΊΠ°Ρ€Π°Π½ΠΈΡ†Π°

ΠšΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ ΠΊΠ°Π·Π°Ρ…ΠΌΠ΅, ΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ са ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° зависимости ΠΈ Π±ΡŠΡ€Π·ΠΎ внСдряванС Π½Π° мноТСство прилоТСния. Но Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ --reuse-valuesΠ·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° всички стойности всСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ част ΠΎΡ‚ Ρ‚Π°Π·ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°.

Π’ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс Π½Π° доставка ΠΈΠΌΠ°ΠΌΠ΅ само Π΄Π²Π΅ стойности, ΠΊΠΎΠΈΡ‚ΠΎ сС промСнят Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ: броя Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ ΠΈ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (вСрсия). Π”Ρ€ΡƒΠ³ΠΈ, ΠΏΠΎ-стабилни стойности сС промСнят Ρ€ΡŠΡ‡Π½ΠΎ ΠΈ Ρ‚ΠΎΠ²Π° Π΅ доста Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. ОсвСн Ρ‚ΠΎΠ²Π° Π΅Π΄Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ сСриозни нСуспСхи, ΠΊΠ°ΠΊΡ‚ΠΎ видяхмС ΠΎΡ‚ собствСния си ΠΎΠΏΠΈΡ‚.

АктуализиранС Π½Π° мноТСство ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅

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

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ‚Π° Π½Π° Jenkins са Ρ‚Π²ΡŠΡ€Π΄Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ Π² Vault

Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ AppRole, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‡Π΅Ρ‚Π΅ всички Ρ‚Π°ΠΉΠ½ΠΈ ΠΎΡ‚ Π’Ρ€Π΅Π·ΠΎΡ€Π°.

ΠŸΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π΅ Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½

Π—Π° Π΄Π° сС Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ Π½Π°Π·Π°Π΄, трябва Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π½Π° няколко ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ Ρ‚ΠΎΠ²Π° Π΅ изпълнСно с Π³Ρ€Π΅ΡˆΠΊΠΈ. Π˜Π·Π²ΡŠΡ€ΡˆΠ²Π°ΠΌΠ΅ Ρ‚Π°Π·ΠΈ опСрация Ρ€ΡŠΡ‡Π½ΠΎ, Π·Π° Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅, Ρ‡Π΅ Π΅ посочСн правилният ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° вСрсията.

ΠŸΡ€ΠΈΠ΄Π²ΠΈΠΆΠ²Π°ΠΌΠ΅ сС към GitOps

ΠΠ°ΡˆΠ°Ρ‚Π° Ρ†Π΅Π»

ИскамС Π΄Π° Π²ΡŠΡ€Π½Π΅ΠΌ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ внСдрява.

Работният процСс Ρ‰Π΅ бъдС ΡΡŠΡ‰ΠΈΡΡ‚ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°. НапримСр, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π΄Π΅Π½ ΠΊΠ»ΠΎΠ½ бъдС натиснат Π·Π° овладяванС, внСдряванСто Ρ‰Π΅ сС задСйства Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ. ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈ тСкущия Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс Π±ΠΈ Π±ΠΈΠ»Π° Ρ‚Π°Π·ΠΈ всичко Ρ‰Π΅ сС управлява Π² git (самото ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ Π² Kubernetes).

Има няколко прСдимства:

  • ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ясно Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. По-лСсно Π΅ Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Π΄Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Π»ΠΎΠΊΠ°Π»Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°.
  • ДСфиницията Π·Π° внСдряванС Π½Π° услугата ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС посочСна ΡΡŠΡ‰ΠΎΡ‚ΠΎ място ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ΄Π° обслуТванС.
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ. Услугата Ρ‰Π΅ ΠΈΠΌΠ° собствСно ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Helm. Π’ΠΎΠ²Π° Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° управляватС ТизнСния Ρ†ΠΈΠΊΡŠΠ» Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π°Π·Π°Π΄, Π½Π°Π΄Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅) Π½Π° Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° Π½Π΅ засяга Π΄Ρ€ΡƒΠ³ΠΈ услуги.
  • ΠŸΡ€Π΅Π΄ΠΈΠΌΡΡ‚Π²Π° Π½Π° git Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°: отмяна Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΎΠ΄ΠΈΡ‚Π΅Π½ ΠΆΡƒΡ€Π½Π°Π» ΠΈ Ρ‚.Π½. Ако трябва Π΄Π° ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ промяна Π² Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° git. ВнСдряванСто Π·Π°ΠΏΠΎΡ‡Π²Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ.
  • МоТС Π΄Π° обмислитС подобряванС Π½Π° работния си процСс Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° с инструмСнти ΠΊΠ°Ρ‚ΠΎ Π‘ΠΊΠ΅Π»Π΅, с ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° тСстват ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² контСкст, близък Π΄ΠΎ производствСния.

Π”Π²ΡƒΠ΅Ρ‚Π°ΠΏΠ½Π° миграция

ΠΠ°ΡˆΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ‚ΠΎΠ·ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс Π²Π΅Ρ‡Π΅ 2 Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ искамС миграцията Π΄Π° бъдС възмоТно Π½Π°ΠΉ-Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π°. Π—Π°Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½Π° ΡΡ‚ΡŠΠΏΠΊΠ° ΠΏΠΎ ΠΏΡŠΡ‚Ρ към Ρ†Π΅Π»Ρ‚Π°.
ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π΅Ρ‚Π°ΠΏ Π΅ прост:

  • ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° структура Π·Π° настройванС Π½Π° внСдряванС Π½Π° прилоТСния, Π½ΠΎ Π² Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ‚, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ DailymotionRelease.

apiVersion: "v1"
kind: "DailymotionRelease"
metadata:
  name: "app1.ns1"
  environment: "dev"
  branch: "mybranch"
spec:
  slack_channel: "#admin"
  chart_name: "app1"
  scaling:
    - context: "dev-us-central1-0"
      replicas:
        - name: "hermes"
          count: 2
    - context: "dev-europe-west1-0"
      replicas:
        - name: "app1-deploy"
          count: 2
  secrets:
    - secret_id: "app1"
      contexts:
        - name: "default"
          vaultPath: "/kv/dev/ns1/app1/test"
          vaultKey: "password"
        - name: "dev-europe-west1-0"
          vaultPath: "/kv/dev/ns1/app1/test"
          vaultKey: "password"

  • 1 ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π±Π΅Π· ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΈ).
  • Π“Ρ€Π°Ρ„ΠΈΠΊΠΈ Π² git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

РазговаряхмС с всички Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° миграция Π²Π΅Ρ‡Π΅ Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°Π». ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π΅Ρ‚Π°ΠΏ всС ΠΎΡ‰Π΅ сС управлява с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° CI ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. Π‘ΠΊΠΎΡ€ΠΎ Ρ‰Π΅ напиша Π΄Ρ€ΡƒΠ³Π° публикация Π·Π° Π²Ρ‚ΠΎΡ€Π° Ρ„Π°Π·Π°: ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ…ΠΌΠ΅ към Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс Π½Π° GitOps Flux. Π©Π΅ Π²ΠΈ ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ настроихмС всичко ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ трудности срСщнахмС (мноТСство Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, Ρ‚Π°ΠΉΠ½ΠΈ ΠΈ Ρ‚.Π½.). Π‘Π»Π΅Π΄Π΅Ρ‚Π΅ Π½ΠΎΠ²ΠΈΠ½ΠΈΡ‚Π΅.

Π’ΡƒΠΊ сС ΠΎΠΏΠΈΡ‚Π°Ρ…ΠΌΠ΅ Π΄Π° опишСм нашия Π½Π°ΠΏΡ€Π΅Π΄ΡŠΠΊ Π² работния процСс Π·Π° внСдряванС Π½Π° прилоТСния ΠΏΡ€Π΅Π· послСднитС Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ мисли относно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° GitOps. ВсС ΠΎΡ‰Π΅ Π½Π΅ смС постигнали Ρ†Π΅Π»Ρ‚Π° ΠΈ Ρ‰Π΅ Π΄ΠΎΠΊΠ»Π°Π΄Π²Π°ΠΌΠ΅ Π·Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅, Π½ΠΎ сСга смС ΡƒΠ±Π΅Π΄Π΅Π½ΠΈ, Ρ‡Π΅ ΠΏΠΎΡΡ‚ΡŠΠΏΠΈΡ…ΠΌΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° опростим всичко ΠΈ Π΄Π° Π³ΠΎ Π΄ΠΎΠ±Π»ΠΈΠΆΠΈΠΌ Π΄ΠΎ Π½Π°Π²ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅.

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

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