Π Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° повСќС кластСри Π½Π° Kubernetes со Helm

Како Dailymotion Π³ΠΎ користи Kubernetes: Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

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

КадС ΠΏΠΎΡ‡Π½Π°

ОвдС ќС ΠΏΠΎΠΊΡ€ΠΈΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π³ΠΈ распорСдувамС Π½Π°ΡˆΠΈΡ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½ΠΈΠ· повСќС кластСри Π½Π° Kubernetes ΡˆΠΈΡ€ΡƒΠΌ свСтот.

Π—Π° Π΄Π° распорСдимС повСќС ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ одСднаш, користимС ΠΊΠΎΡ€ΠΌΠΈΠ»ΠΎΡ‚ΠΎ, ΠΈ ситС наши Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ сС Π·Π°Ρ‡ΡƒΠ²Π°Π½ΠΈ Π²ΠΎ Π΅Π΄Π½ΠΎ git ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅. Π—Π° Π΄Π° распорСдимС цСлосСн ΠΊΡƒΠΏ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ услуги, ја користимС Ρ‚Π°ΠΊΠ°Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π°Ρ‚Π° сумарна Ρ‚Π°Π±Π΅Π»Π°. Π’ΠΎ ΡΡƒΡˆΡ‚ΠΈΠ½Π°, ΠΎΠ²Π° Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ кој Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π° зависности ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ API ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ услуги со Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.

НапишавмС ΠΈ ΠΌΠ°Π»Π° Python скрипта Π½Π° Π²Ρ€Π²ΠΎΡ‚ Π½Π° Helm Π·Π° Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π΄Π° создавамС Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ, Π΄Π° Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Ρ‚Π°Ρ˜Π½ΠΈ ΠΈ Π΄Π° распорСдувамС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π‘ΠΈΡ‚Π΅ ΠΎΠ²ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ сС ΠΈΠ·Π²Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ Π½Π° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π½Π° CI ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° со помош Π½Π° Π΄ΠΎΠΊΠ΅Ρ€ слика.

АјдС Π΄Π° дојдСмС Π΄ΠΎ ΠΏΠΎΠ΅Π½Ρ‚Π°Ρ‚Π°.

Π—Π°Π±Π΅Π»Π΅ΡˆΠΊΠ°. Π”ΠΎΠ΄Π΅ΠΊΠ° Π³ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅ ΠΎΠ²Π°, вСќС Π΅ објавСн ΠΏΡ€Π²ΠΈΠΎΡ‚ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π·Π° издавањС Π½Π° Helm 3. Π“Π»Π°Π²Π½Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° содрТи Ρ†Π΅Π»Π° Π½ΠΈΠ·Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΡƒΠ²Π°ΡšΠ° Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅ Π½Π° Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ со ΠΊΠΎΠΈ сС срСтнавмС Π²ΠΎ ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ‚ΠΎ.

Π Π°Π±ΠΎΡ‚Π΅Π½ Ρ‚Π΅ΠΊ Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ

НиС користимС Ρ€Π°Π·Π³Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ΅ истиот пристап ΠΈ Π·Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈΡ‚Π΅.

  • Ѐилијала dev сС користи Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ ΠΊΠΎΠΈ ќС сС тСстираат Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈ кластСри.
  • Кога сС поднСсува Π±Π°Ρ€Π°ΡšΠ΅ Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π°ΡšΠ΅ Π΄ΠΎ господар, сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ Π΅Ρ‚Π°ΠΏΠ½ΠΎ.
  • ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΊΡ€Π΅ΠΈΡ€Π°ΠΌΠ΅ Π±Π°Ρ€Π°ΡšΠ΅ Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π°ΡšΠ΅ Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ Π³Ρ€Π°Π½ΠΊΠ°Ρ‚Π° prod ΠΈ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ производството.

БСкоја ΠΎΠΊΠΎΠ»ΠΈΠ½Π° ΠΈΠΌΠ° своС ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ ΠΊΠΎΠ΅ Π³ΠΈ Ρ‡ΡƒΠ²Π° Π½Π°ΡˆΠΈΡ‚Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ, Π° Π½ΠΈΠ΅ Π³ΠΈ користимС Π¨Π°Ρ€Ρ‚ΠΌΡƒΠ·Π΅Ρ˜ со ΠΌΠ½ΠΎΠ³Ρƒ корисни API. На овој Π½Π°Ρ‡ΠΈΠ½ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°ΠΌΠ΅ строга ΠΈΠ·ΠΎΠ»Π°Ρ†ΠΈΡ˜Π° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΎΠΊΠΎΠ»ΠΈΠ½ΠΈΡ‚Π΅ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈΡ‚Π΅ Π²ΠΎ Ρ€Π΅Π°Π»Π½ΠΈΠΎΡ‚ свСт ΠΏΡ€Π΅Π΄ Π΄Π° Π³ΠΈ користитС Π²ΠΎ производството.

Π‘ΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСдини

Π’Ρ€Π΅Π΄ΠΈ Π΄Π° сС Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° ΠΊΠΎΠ³Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΡƒΡ€ΠΊΠ°Π°Ρ‚ Π³Ρ€Π°Π½ΠΊΠ° Π½Π° dev, Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π½ΠΈΠ²Π½Π°Ρ‚Π° Ρ‚Π°Π±Π΅Π»Π° автоматски сС Ρ‚ΡƒΡ€ΠΊΠ° Π²ΠΎ ΠœΡƒΠ·Π΅Ρ˜ΠΎΡ‚ Π½Π° dev Chartmuseum. Π’Π°ΠΊΠ°, ситС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ Π³ΠΎ користат истото ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Π½Π° dev, ΠΈ Ρ‚Ρ€Π΅Π±Π° Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ Π΄Π° ја Π½Π°Π²Π΅Π΄Π΅Ρ‚Π΅ Π²Π°ΡˆΠ°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΎΡ‚ Π·Π° Π΄Π° Π½Π΅ ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ Π΄Π° користитС Ρ‚ΡƒΡ“ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ.

ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, Π½Π°ΡˆΠ°Ρ‚Π° ΠΌΠ°Π»Π° Python скрипта Π³ΠΈ ΠΏΠΎΡ‚Π²Ρ€Π΄ΡƒΠ²Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° Kubernetes наспроти спСцификациитС Kubernetes OpenAPI ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΠšΡƒΠ±Π΅Π²Π°Π», ΠΏΡ€Π΅Π΄ Π΄Π° Π³ΠΈ објави Π½Π° Chartmusem.

ΠžΠΏΡˆΡ‚ опис Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΎΡ‚ Ρ‚Π΅ΠΊ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΎΡ‚

  1. ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° гасоводот спорСд ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° gazr.io Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° ΠΊΠ²Π°Π»ΠΈΡ‚Π΅Ρ‚ΠΎΡ‚ (влакнСст, Π΅Π΄ΠΈΠ½ΠΈΡ†Π°-тСст).
  2. ΠŸΡ€ΠΈΡ‚ΠΈΡΠΊΠ°ΡšΠ΅ Π½Π° Π΄ΠΎΠΊΠ΅Ρ€-слика со Python Π°Π»Π°Ρ‚ΠΊΠΈ ΠΊΠΎΠΈ Π³ΠΈ распорСдуваат Π½Π°ΡˆΠΈΡ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
  3. ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°Ρ‚Π° ΠΏΠΎ ΠΈΠΌΠ΅ Π½Π° Π³Ρ€Π°Π½ΠΊΠ°.
  4. Π’Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡ˜Π° Π½Π° Kubernetes yaml Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Kubeval.
  5. Автоматски Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Ρ‚Π΅ ја Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΎΡ‚ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ (Ρ‚Π°Π±Π΅Π»ΠΈ ΡˆΡ‚ΠΎ зависат ΠΎΠ΄ ΠΌΠ΅Π½ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΎΡ‚).
  6. ΠŸΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ Π΄ΠΎ ΠœΡƒΠ·Π΅Ρ˜ΠΎΡ‚ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ ΡˆΡ‚ΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°

Π£ΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со Ρ€Π°Π·Π»ΠΈΠΊΠΈΡ‚Π΅ ΠΌΠ΅Ρ“Ρƒ кластСритС

Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° кластСри

ИмашС Π²Ρ€Π΅ΠΌΠ΅ ΠΊΠΎΠ³Π° користСвмС Ρ„Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° кластСри ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚Π΅Ρ, ΠΊΠ°Π΄Π΅ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° Kubernetes ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π°Ρ‚ ΠΎΠ΄ Π΅Π΄Π½Π° ΠΊΡ€Π°Ρ˜Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° API. Но, сС појавија ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΠΊΠΎΠΈ Kubernetes ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Π° Π΄Π° сС создадат Π²ΠΎ ΠΊΡ€Π°Ρ˜Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Ρ„Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, ΡˆΡ‚ΠΎ Π³ΠΎ ΠΎΡ‚Π΅ΠΆΠ½ΡƒΠ²Π° ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π΅Π΄Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π·Π° ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅Ρ‡Π½ΠΈ кластСри.

Π—Π° Π΄Π° Π³ΠΎ Ρ€Π΅ΡˆΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚, ΠΏΠΎΡ‡Π½Π°Π²ΠΌΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡ˜Π½ΠΎ Π΄Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΠΌΠ΅ со кластСритС, ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π³ΠΎ поСдностави процСсот (ја користСвмС ΠΏΡ€Π²Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Ρ„Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°; ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ΡˆΡ‚ΠΎ ќС сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π°).

Π“Π΅ΠΎ-дистрибуирана ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°

ΠΠ°ΡˆΠ°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π΅ дистрибуирана Π½ΠΈΠ· 6 Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈ - 3 Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈ 3 Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ‚.


Дистрибуирано Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅

ВрСдноститС Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½Π°Ρ‚Π° ΠΊΠΎΡ€ΠΌΠΈΠ»Π°

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 -}}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° шаблон Π·Π° шлСм

Оваа Π»ΠΎΠ³ΠΈΠΊΠ° Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π° Π²ΠΎ помошСн шаблон Π·Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΏΡ€Π΅Π½Π°Ρ‚Ρ€ΡƒΠΏΡƒΠ²Π°ΡšΠ΅ Π½Π° 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

Π”Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π° Π½Π° услугата

Ова Π΅ ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ситС Ρ‡Π΅ΠΊΠΎΡ€ΠΈ ΡˆΡ‚ΠΎ Π³ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ Π½Π°ΡˆΠΈΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Ρ‚Π΅ΠΊ Π½Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅. ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΠΎΡ‚ Ρ‡Π΅ΠΊΠΎΡ€ ја распорСдува Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π²ΠΎ повСќС кластСри Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ†ΠΈ истоврСмСно.


Π§Π΅ΠΊΠΎΡ€ΠΈ Π·Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ ЏСнкинс

Π¨Ρ‚ΠΎ Π΅ со Ρ‚Π°Ρ˜Π½ΠΈΡ‚Π΅?

Π¨Ρ‚ΠΎ сС однСсува Π΄ΠΎ бСзбСдноста, Π½ΠΈΠ΅ Π³ΠΈ слСдимС ситС Ρ‚Π°Ρ˜Π½ΠΈ ΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ мСста ΠΈ Π³ΠΈ Ρ‡ΡƒΠ²Π°ΠΌΠ΅ Π²ΠΎ СдинствСн Ρ‚Ρ€Π΅Π·ΠΎΡ€ Π‘Π²ΠΎΠ΄ Π²ΠΎ ΠŸΠ°Ρ€ΠΈΡ.

ΠΠ°ΡˆΠΈΡ‚Π΅ Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΡƒΠ²Π°Π°Ρ‚ Ρ‚Π°Ρ˜Π½ΠΈ врСдности ΠΎΠ΄ 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.
  • Ако Ρ‚Π°Ρ˜Π½Π°Ρ‚Π° Π²Π°ΠΆΠΈ Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ контСкст ΠΈΠ»ΠΈ кластСр, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ спСцифичСн запис. (Π’ΡƒΠΊΠ° контСкстното кластСр 1 ΠΈΠΌΠ° своја врСдност Π·Π° Ρ‚Π°Ρ˜Π½ΠΈΠΎΡ‚ stack-app1-password).
  • Π’ΠΎ спротивно, врСдноста сС користи стандардно.
  • Π—Π° сСкоја ставка Π²ΠΎ ΠΎΠ²Π°Π° листа Π²ΠΎ Π’Π°Ρ˜Π½Π°Ρ‚Π° Π½Π° ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚ сС Π²ΠΌΠ΅Ρ‚Π½ΡƒΠ²Π° ΠΏΠ°Ρ€ ΠΊΠ»ΡƒΡ‡-врСдност. Π—Π°Ρ‚ΠΎΠ°, Ρ‚Π°Ρ˜Π½ΠΈΠΎΡ‚ шаблон Π²ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ Π΅ ΠΌΠ½ΠΎΠ³Ρƒ СдноставСн.

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Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠΌΠΈΠ½Π΅ΠΌΠ΅ ситС врСдности сСкогаш ΠΊΠΎΠ³Π° ќС распорСдимС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° која Π΅ Π΄Π΅Π» ΠΎΠ΄ ΠΎΠ²Π°Π° Π³Π΅Π½Π΅Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Ρ‚Π°Π±Π΅Π»Π°.

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

ΠΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° повСќС конфигурациски Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ

Кога Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Π΄ΠΎΠ΄Π°Π²Π° Π½ΠΎΠ²Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, Ρ‚ΠΎΡ˜ ΠΌΠΎΡ€Π° Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ: Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°, список Π½Π° Ρ‚Π°Ρ˜Π½ΠΈ, додавањС Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΊΠ°ΠΊΠΎ зависност Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ Π΅ Π²ΠΊΠ»ΡƒΡ‡Π΅Π½Π° Π²ΠΎ Π³Π΅Π½Π΅Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½.

Π”ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ Π½Π° ЏСнкинс сС ΠΏΡ€Π΅ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅Π½ΠΈ Π²ΠΎ Vault

Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄Π΅Π½ AppRole, кој Π³ΠΈ Ρ‡ΠΈΡ‚Π° ситС Ρ‚Π°Ρ˜Π½ΠΈ ΠΎΠ΄ Π’Ρ€Π΅Π·ΠΎΡ€ΠΎΡ‚.

ΠŸΡ€ΠΎΡ†Π΅ΡΠΎΡ‚ Π½Π° Π²Ρ€Π°ΡœΠ°ΡšΠ΅ Π½Π΅ Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½

Π—Π° Π΄Π° сС Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π½Π°Π·Π°Π΄, Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ кластСри, ΠΈ ΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π½ со Π³Ρ€Π΅ΡˆΠΊΠΈ. Оваа ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° ја ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΠΌΠ΅ Ρ€Π°Ρ‡Π½ΠΎ Π·Π° Π΄Π° сС осигурамС Π΄Π΅ΠΊΠ° Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ Ρ‚ΠΎΡ‡Π½ΠΈΠΎΡ‚ ID Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π°.

Π‘Π΅ Π΄Π²ΠΈΠΆΠΈΠΌΠ΅ ΠΊΠΎΠ½ GitOps

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

Π‘Π°ΠΊΠ°ΠΌΠ΅ Π΄Π° ја Π²Ρ€Π°Ρ‚ΠΈΠΌΠ΅ Ρ‚Π°Π±Π΅Π»Π°Ρ‚Π° Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΡˆΡ‚ΠΎ ја распорСдува.

Π Π°Π±ΠΎΡ‚Π½ΠΈΠΎΡ‚ Ρ‚Π΅ΠΊ ќС Π±ΠΈΠ΄Π΅ ист ΠΊΠ°ΠΊΠΎ ΠΈ Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π° Π΅Π΄Π½Π° Π³Ρ€Π°Π½ΠΊΠ° ќС сС притиснС Π΄Π° сС совлада, Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ќС сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° автоматски. Π“Π»Π°Π²Π½Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ овој пристап ΠΈ Ρ‚Π΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Ρ‚Π΅ΠΊ Π±ΠΈ Π±ΠΈΠ»Π° Ρ‚ΠΎΠ° сè ќС сС ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π° Π²ΠΎ git (самата Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΎΡ‚ Π½Π° кој Π΅ распорСдСна Π²ΠΎ Kubernetes).

Има Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ прСдности:

  • ΠœΠ½ΠΎΠ³Ρƒ појасно Π·Π° инвСститорот. ПолСсно Π΅ Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½.
  • МоТС Π΄Π° сС Π½Π°Π²Π΅Π΄Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° услугата истото мСсто ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ БСрвис.
  • Π£ΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со ΠΎΡ‚ΡΡ‚Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Π΅Π½Π΅Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ½ΠΈ. Услугата ќС ΠΈΠΌΠ° сопствСно ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Helm. Ова ќС Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‚Π΅ со ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΈΠΎΡ‚ циклус Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° (Π²Ρ€Π°ΡœΠ°ΡšΠ΅, Π½Π°Π΄Π³Ρ€Π°Π΄Π±Π°) Π½Π° најмало Π½ΠΈΠ²ΠΎ, Π·Π° Π΄Π° Π½Π΅ Π²Π»ΠΈΡ˜Π°Π΅Ρ‚Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ услуги.
  • ΠŸΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ ΠΎΠ΄ 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 Ѐлукс. ЌС Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ поставивмС сè ΠΈ со ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠΎΡ‚Π΅ΡˆΠΊΠΎΡ‚ΠΈΠΈ Π½Π°ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ (повСќС ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π°, Ρ‚Π°Ρ˜Π½ΠΈ ΠΈΡ‚Π½.). Π‘Π»Π΅Π΄Π΅Ρ‚Π΅ Π³ΠΈ вСститС.

ОвдС сС ΠΎΠ±ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ Π΄Π° Π³ΠΎ опишСмС Π½Π°ΡˆΠΈΠΎΡ‚ Π½Π°ΠΏΡ€Π΅Π΄ΠΎΠΊ Π²ΠΎ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΎΡ‚ Ρ‚Π΅ΠΊ Π½Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ Ρ‚Π΅ΠΊΠΎΡ‚ Π½Π° ΠΈΠ·ΠΌΠΈΠ½Π°Ρ‚ΠΈΡ‚Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΡˆΡ‚ΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Ρ€Π°Π·ΠΌΠΈΡΠ»ΡƒΠ²Π°ΡšΠ° Π·Π° пристапот GitOps. Π‘Γ¨ ΡƒΡˆΡ‚Π΅ Π½Π΅ смС стигналС Π΄ΠΎ Ρ†Π΅Π»Ρ‚Π° ΠΈ ќС извСстувамС Π·Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅, Π½ΠΎ сСга смС ΡƒΠ±Π΅Π΄Π΅Π½ΠΈ Π΄Π΅ΠΊΠ° ја Π½Π°ΠΏΡ€Π°Π²ΠΈΠ²ΠΌΠ΅ вистинската Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΠ³Π° Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° поСдноставимС сè ΠΈ Π΄Π° Π³ΠΎ Π΄ΠΎΠ±Π»ΠΈΠΆΠΈΠΌΠ΅ Π΄ΠΎ Π½Π°Π²ΠΈΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€