Π§Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ GitOps?

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: ПослС Π½Π΅Π΄Π°Π²Π½Π΅ΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… pull ΠΈ push Π² GitOps ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ интСрСс ΠΊ этой ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ русскоязычных ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π½Π° эту Ρ‚Π΅ΠΌΡƒ оказалось совсСм ΠΌΠ°Π»ΠΎ (Π½Π° Ρ…Π°Π±Ρ€Π΅ ΠΈΡ… попросту Π½Π΅Ρ‚). ΠŸΠΎΡΠ΅ΠΌΡƒ Ρ€Π°Π΄Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” ΠΏΡƒΡΡ‚ΡŒ ΠΈ ΡƒΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π³ΠΎΠ΄ΠΈΡ‡Π½ΠΎΠΉ давности! β€” ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Weaveworks, Π³Π»Π°Π²Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«GitOpsΒ». Π’ тСкстС поясняСтся ΡΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ отличия ΠΎΡ‚ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ….

Π“ΠΎΠ΄ Π½Π°Π·Π°Π΄ ΠΌΡ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GitOps. Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ рассказали, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π° Weaveworks запустила SaaS, Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° Kubernetes, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π΅Π΄ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ для развСртывания, управлСния ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π² срСдС cloud native.

Π‘Ρ‚Π°Ρ‚ΡŒΡ оказалась популярной. Π”Ρ€ΡƒΠ³ΠΈΠ΅ люди Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ GitOps, стали ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ инструмСнты для git push, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, сСкрСтов, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚.ΠΏ. На нашСм сайтС появилось большоС количСство ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования GitOps. Но Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… людСй всС ΠΆΠ΅ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ вопросы. Π§Π΅ΠΌ модСль отличаСтся ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ infrastructure as code ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ поставки (continuous delivery)? ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Kubernetes?

ВскорС ΠΌΡ‹ поняли, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½ΠΎΠ²ΠΎΠ΅ описаниС, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰Π΅Π΅:

  1. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ историй;
  2. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ GitOps;
  3. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ continuous delivery.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ всС эти Ρ‚Π΅ΠΌΡ‹. Π’ Π½Π΅ΠΉ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GitOps ΠΈ взгляд Π½Π° Π½Π΅Π³ΠΎ со стороны Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ CI/CD. ΠœΡ‹ прСимущСствСнно ориСнтируСмся Π½Π° Kubernetes, хотя модСль Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ.

Π—Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ: GitOps

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Алису. Она управляСт ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Family Insurance, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰Π΅ΠΉ полисы ΠΏΠΎ ΡΡ‚Ρ€Π°Ρ…ΠΎΠ²Π°Π½ΠΈΡŽ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ, Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, нСдвиТимости ΠΈ Ρ‚ΡƒΡ€ΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ страховку людям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слишком заняты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Π½ΡŽΠ°Π½ΡΠ°Ρ… ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ² ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π•Π΅ бизнСс начинался ΠΊΠ°ΠΊ сторонний ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΠ³Π΄Π° Алиса Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Π² Π±Π°Π½ΠΊΠ΅ ΠΊΠ°ΠΊ data scientist. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΎΠ½Π° поняла, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ для Π±ΠΎΠ»Π΅Π΅ эффСктивного Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ формирования страховых ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π˜Π½Π²Π΅ΡΡ‚ΠΎΡ€Ρ‹ профинансировали ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅Π΅ компания приносит Π±ΠΎΠ»Π΅Π΅ 20 ΠΌΠ»Π½ Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ² Π² Π³ΠΎΠ΄ ΠΈ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ растСт. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² Π½Π΅ΠΉ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… долТностях Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ 180 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. Π’ ΠΈΡ… числС тСхнологичСская ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая занимаСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ, обслуТиваниСм сайта, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ клиСнтской Π±Π°Π·Ρ‹. ΠšΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· 60 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ возглавляСт Π‘ΠΎΠ± β€” тСхничСский Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.

Команда Π‘ΠΎΠ±Π° Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ production-систСмы Π² ΠΎΠ±Π»Π°ΠΊΠ΅. Π˜Ρ… основныС прилоТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° GKE, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ прСимущСствами Kubernetes Π² Google Cloud. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ инструмСнты для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ.

Family Insurance Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π»Π°ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π½ΠΎ Π·Π°Ρ€Π°Π·ΠΈΠ»Π°ΡΡŒ энтузиазмом Π²ΠΎΠΊΡ€ΡƒΠ³ Docker. ВскорС спСциалисты ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ GKE позволяСт Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ кластСры для тСстирования Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π»Π΅Π³ΠΊΠΎ ΠΈ Π½Π΅ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π΅Π½Π½ΠΎ. Π‘Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Jenkins для CI ΠΈ Quay для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ рССстра ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², написаны скрипты для Jenkins, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ push’ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² GKE.

ΠŸΡ€ΠΎΡˆΠ»ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя. Алиса ΠΈ Π‘ΠΎΠ± Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ влиянии Π½Π° бизнСс. Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π½Π΅ повысило ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, насколько надСялась ΠΊΠΎΠΌΠ°Π½Π΄Π°. Иногда deployment’Ρ‹ ломались, ΠΈ Π±Ρ‹Π»ΠΎ нСясно, Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚Ρ‹ Π»ΠΈ Π² этом измСнСния ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΆΠ΅ оказалось тяТСло ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ². Часто ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ кластСр ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² Π½Π΅Π³ΠΎ прилоТСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π°ΠΊ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ всСго Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ Π±Π°Ρ€Π΄Π°ΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ систСма. Алиса боялась, Ρ‡Ρ‚ΠΎ ситуация ΡƒΡ…ΡƒΠ΄ΡˆΠΈΡ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития прилоТСния (ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π°Π·Ρ€Π΅Π²Π°Π» Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° основС машинного обучСния). Π‘ΠΎΠ± Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π», ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ нСустойчив, ΠΏΠ»ΠΎΡ…ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΈ пСриодичСски Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°?

Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΈ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ GitOps. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ оказалось ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌ Π±Ρ‹Π»ΠΎ Π½ΡƒΠΆΠ½ΠΎ для ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ двиТСния Π²ΠΏΠ΅Ρ€Π΅Π΄.

Алиса ΠΈ Π‘ΠΎΠ± ΡƒΠΆΠ΅ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Π³ΠΎΠ΄ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссах Π½Π° основС Git, DevOps ΠΈ infrastructure as code. Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ GitOps Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ привносит ряд Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ β€” ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ‡Π½Ρ‹Ρ… ΠΈ Π½ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… β€” ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих ΠΈΠ΄Π΅ΠΉ Π² контСкстС Kubernetes. Π­Ρ‚Π° Ρ‚Π΅ΠΌΠ° Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ поднималась, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π² Π±Π»ΠΎΠ³Π΅ Weaveworks.

Family Insurance Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ GitOps. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ автоматизированная модСль эксплуатации, совмСстимая с Kubernetes ΠΈ ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π°Ρ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ со ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ:

  • ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Π΄Π²ΠΎΠ΅ выросла ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½ΠΈΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ сходит с ΡƒΠΌΠ°;
  • пСрСстали ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ скрипты. ВмСсто этого Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΎΠ²Ρ‹Ρ… функциях ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°Π½Π°Ρ€Π΅Π΅Ρ‡Π½Ρ‹Π΅ Π²Ρ‹ΠΊΠ°Ρ‚Ρ‹ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ тСстированиС;
  • ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π»ΠΈ процСсс развСртывания β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ Ρ€Π΅Π΄ΠΊΠΎ ломаСтся;
  • ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ deployment’Ρ‹ послС частичных сбоСв Π±Π΅Π· Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°;
  • ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»ΠΈ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² систСмах поставки. Алиса ΠΈ Π‘ΠΎΠ± ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ микросСрвисами ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ;
  • ΠΌΠΎΠ³ΡƒΡ‚ Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎ 30-50 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь усилиями ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ;
  • Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°ΡŽΡ‚ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ обновлСния Π½Π° production с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pull request’ΠΎΠ² ΡƒΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· нСсколько часов;
  • Π»Π΅Π³ΠΊΠΎ проходят Π°ΡƒΠ΄ΠΈΡ‚ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… SOC2 (Π½Π° соотвСтствиС поставщиков услуг трСбованиям ΠΏΠΎ бСзопасному ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…; ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, здСсь β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².).

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ?

GitOps β€” это Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ:

  1. МодСль эксплуатации для Kubernetes ΠΈ cloud native. Она прСдоставляСт Π½Π°Π±ΠΎΡ€ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ для развСртывания, управлСния ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° собранных Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ кластСров ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π­Π»Π΅Π³Π°Π½Ρ‚Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ слайда ΠΎΡ‚ Luis Faceira:
  2. ΠŸΡƒΡ‚ΡŒ ΠΊ созданию ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² окруТСния для управлСния прилоТСниями. ΠœΡ‹ примСняСм Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс Git ΠΊΠ°ΠΊ ΠΊ эксплуатации, Ρ‚Π°ΠΊ ΠΈ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ Π½Π΅ просто ΠΎ Git push, Π° ΠΎΠ± ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ всСго Π½Π°Π±ΠΎΡ€Π° инструмСнтов CI/CD ΠΈ UI/UX.

ΠŸΠ°Ρ€Π° слов ΠΎ Git

Если Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с систСмами контроля вСрсий ΠΈ основанном Π½Π° Git Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ процСссом, ΠΌΡ‹ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ…. ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ Ρ€Π°Π±ΠΎΡ‚Π° с вСтвями ΠΈ pull request’Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠ΅ΠΉ, Π½ΠΎ ΠΏΠ»ΡŽΡΡ‹ стоят Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… усилий. Π’ΠΎΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ для Π½Π°Ρ‡Π°Π»Π°.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Kubernetes

Π’ нашСй истории Алиса ΠΈ Π‘ΠΎΠ± ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ ΠΊ GitOps, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π² с Kubernetes. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, GitOps тСсно связан с Kubernetes β€” это модСль эксплуатации для инфраструктуры ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, основанных Π½Π° Kubernetes.

Π§Ρ‚ΠΎ Kubernetes Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ?

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ основныС возмоТности:

  1. Π’ ΠΌΠΎΠ΄Π΅Π»ΠΈ Kubernetes всС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.
  2. API-сСрвСр Kubernetes ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ Π²Π²ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ постоянно пытаСтся привСсти кластСр Π² состояниС, описанноС Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ.
  3. Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ достаточны для описания ΠΈ управлСния большим Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ β€” Β«ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ».
  4. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ кластСр происходит ΠΈΠ·-Π·Π°:
    • ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΠ±Ρ€Π°Π·Π°Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²;
    • ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ спСцификации;
    • ошибок Π² срСдС β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

ΠŸΡ€Π΅ΠΊΡ€Π°ΡΠ½Ρ‹Π΅ способности Kubernetes ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΠΈ

Когда администратор вносит измСнСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, оркСстратор Kubernetes Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΊ кластСру Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π΅Π³ΠΎ состояниС Π½Π΅ приблизится ΠΊ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚Π° модСль Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для любого рСсурса Kubernetes ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Custom Resource Definitions (CRDs). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ deployment’Ρ‹ Kubernetes ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ чудСсными свойствами:

  • Автоматизация: обновлСния Kubernetes ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ процСсса примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈ своСврСмСнно.
  • ΠšΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΡ: Kubernetes Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π΄ΠΎ достиТСния успСха.
  • Π˜Π΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ: ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ примСнСния ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΠΈ приводят ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ.
  • Π”Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ: ΠΏΡ€ΠΈ достаточности рСсурсов состояниС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ кластСра зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ состояния.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ GitOps

ΠœΡ‹ достаточно ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ Kubernetes, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ GitOps.

Π”Π°Π²Π°ΠΉΡ‚Π΅ вСрнСмся ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Family Insurance, связанным с микросСрвисами. Π§Π΅ΠΌ ΠΈΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ приходится Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ? ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π½ΠΈΠΆΠ΅ (Ссли ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ Π² Π½Π΅ΠΌ покаТутся странными ΠΈΠ»ΠΈ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌΠΈ β€” поТалуйста, ΠΏΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½ΠΈΡ‚Π΅ с ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠΉ ΠΈ ΠΎΡΡ‚Π°Π²Π°ΠΉΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ). Π­Ρ‚ΠΎ всСго лишь ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов Π½Π° основС Jenkins. БущСствуСт ΠΈ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ инструмСнтами.

Π“Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ заканчиваСтся внСсСниСм ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Git. Π­Ρ‚ΠΈ измСнСния Π² Git приводят ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Β«ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ GitOpsΒ» обновляСт кластСр:

1. Π Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс: Β«Π‘Π±ΠΎΡ€ΠΊΠ° Jenkins β€” Π²Π΅Ρ‚ΠΊΠ° masterΒ».
Бписок Π·Π°Π΄Π°Ρ‡:

  • Jenkins push’ΠΈΡ‚ Ρ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ Π² Quay;
  • Jenkins push’ΠΈΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΈ Helm-Ρ‡Π°Ρ€Ρ‚Ρ‹ Π² Π±Π°ΠΊΠ΅Ρ‚ master-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°;
  • ΠžΠ±Π»Π°Ρ‡Π½Π°Ρ функция ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΈ Ρ‡Π°Ρ€Ρ‚Ρ‹ ΠΈΠ· Π±Π°ΠΊΠ΅Ρ‚Π° master-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π² Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ master;
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ GitOps обновляСт кластСр.

2. Π‘Π±ΠΎΡ€ΠΊΠ° Jenkins β€” Π²Π΅Ρ‚ΠΊΠ° release ΠΈΠ»ΠΈ hotfix:

  • Jenkins push’ΠΈΡ‚ Π½Π΅Ρ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ Π² Quay;
  • Jenkins push’ΠΈΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΈ Helm-Ρ‡Π°Ρ€Ρ‚Ρ‹ Π² Π±Π°ΠΊΠ΅Ρ‚ staging-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°;
  • ΠžΠ±Π»Π°Ρ‡Π½Π°Ρ функция ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΈ Ρ‡Π°Ρ€Ρ‚Ρ‹ ΠΈΠ· Π±Π°ΠΊΠ΅Ρ‚Π° staging-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π² Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ staging;
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ GitOps обновляСт кластСр.

3. Π‘Π±ΠΎΡ€ΠΊΠ° Jenkins β€” Π²Π΅Ρ‚ΠΊΠ° develop ΠΈΠ»ΠΈ feature:

  • Jenkins push’ΠΈΡ‚ Π½Π΅Ρ‚Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ Π² Quay;
  • Jenkins push’ΠΈΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΈ Helm-Ρ‡Π°Ρ€Ρ‚Ρ‹ Π² Π±Π°ΠΊΠ΅Ρ‚ develop-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°;
  • ΠžΠ±Π»Π°Ρ‡Π½Π°Ρ функция ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΈ Ρ‡Π°Ρ€Ρ‚Ρ‹ ΠΈΠ· Π±Π°ΠΊΠ΅Ρ‚Π° develop-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π² Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ develop;
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ GitOps обновляСт кластСр.

4. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°:

  • ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΈΠ»ΠΈ администратор (LCM/ops) Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Gradle для ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ развСртывания ΠΈ настройки сСтСвых балансировщиков Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (NLB);
  • LCM/ops ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ deployment’Π° ΠΊ обновлСниям;
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ GitOps обновляСт кластСр.

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС GitOps

  1. ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ состояниС всСй систСмы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ спСцификации для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ окруТСния (Π² нашСй истории ΠΊΠΎΠΌΠ°Π½Π΄Π° Π‘ΠΎΠ±Π° опрСдСляСт всю ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ систСмы Π² Git).
    • Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ являСтся СдинствСнным источником истины Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ состояния всСй систСмы.
    • ВсС измСнСния Π² ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ состояниС ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Git.
    • ВсС ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ кластСра Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹ Π² самом кластСрС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ (ΠΊΠΎΠ½Π²Π΅Ρ€Π³ΠΈΡ€ΡƒΡŽΡ‚, converge) ΠΈΠ»ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ (Π΄ΠΈΠ²Π΅Ρ€Π³ΠΈΡ€ΡƒΡŽΡ‚, diverge) ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΠΈ наблюдаСмоС состояния.
  2. Если ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΠΈ наблюдаСмоС состояния ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, Ρ‚ΠΎ:
    • БущСствуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ автоматичСски синхронизируСт Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ ΠΈ наблюдаСмоС состояния. Π’Π½ΡƒΡ‚Ρ€ΠΈ кластСра этим занимаСтся Kubernetes.
    • ΠŸΡ€ΠΎΡ†Π΅ΡΡ запускаСтся Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Β«change committedΒ».
    • Π§Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ настраиваСмый ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ послано ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ Β«diffΒ», Ссли состояния ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ.
  3. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Git Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ провСряСмыС ΠΈ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹Π΅ обновлСния Π² кластСрС.
    • ΠžΡ‚ΠΊΠ°Ρ‚ β€” это конвСргСнция ΠΊ Ρ€Π°Π½Π΅Π΅ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ.
  4. ΠšΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΡ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°. О Π΅Π΅ наступлСнии ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΡŽΡ‚:
    • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ Β«diffΒ» Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
    • ΠžΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ Β«convergedΒ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, webhook, событиС Git writeback).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ дивСргСнция?

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π·: всС ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Π΅ свойства кластСра Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹ Π² самом кластСрС.

НСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π΄ΠΈΠ²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΠΈ:

  • ИзмСнСниС Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ·-Π·Π° слияния Π²Π΅Ρ‚ΠΎΠΊ Π² Git.
  • ИзмСнСниС Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ·-Π·Π° ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² Git, сдСланного GUI-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ.
  • ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ измСнСния Π² ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΌ состоянии ΠΈΠ·-Π·Π° PR Π² Git с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ сборкой ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ измСнСниями ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°.
  • ИзмСнСниС состояния кластСра ΠΈΠ·-Π·Π° ошибки, ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° рСсурсов, приводящСго ΠΊ Β«ΠΏΠ»ΠΎΡ…ΠΎΠΌΡƒ повСдСнию», ΠΈΠ»ΠΈ просто случайного отклонСния ΠΎΡ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния.

Π§Ρ‚ΠΎ прСдставляСт собой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΠΈ?

НСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

  • Для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ кластСров ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΠΈ прСдоставляСт Kubernetes.
  • Π’ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для управлСния прилоТСниями ΠΈ конструкциями Π½Π° основС Kubernetes (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Istio ΠΈ Kubeflow).
  • ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для управлСния Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ взаимодСйствиСм ΠΌΠ΅ΠΆΠ΄Ρƒ Kubernetes, рСпозиториями ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΈ Git’ΠΎΠΌ прСдоставляСт GitOps-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Weave Flux, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Weave Cloud.
  • Для Π±Π°Π·ΠΎΠ²Ρ‹Ρ… машин ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΌ. По своСму ΠΎΠΏΡ‹Ρ‚Ρƒ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Terraform Π±Π»ΠΈΠΆΠ΅ всСго ΠΊ этому ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ, ΠΎΠ΄Π½Π°ΠΊΠΎ всС ΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ контроля со стороны Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Π’ этом смыслС GitOps Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ Infrastructure as Code.

GitOps ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Git с прСкрасным ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΠΈ Kubernetes, прСдлагая модСль для эксплуатации.

GitOps позволяСт Π½Π°ΠΌ Π·Π°ΡΠ²ΠΈΡ‚ΡŒ: Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŽ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ.

GitOps ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для всСго cloud native-стСка (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Terraform ΠΈ Ρ‚.ΠΏ.)

GitOps β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Kubernetes. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вся систСма ΡƒΠΏΡ€Π°Π²Π»ΡΠ»Π°ΡΡŒ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΈ использовала ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΡŽ. Под всСй систСмой ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ срСд, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Kubernetes β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«dev cluster 1Β», Β«productionΒ» ΠΈ Ρ‚. ΠΏ. Π’ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ срСду входят ΠΌΠ°ΡˆΠΈΠ½Ρ‹, кластСры, прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ интСрфСйсы для Π²Π½Π΅ΡˆΠ½ΠΈΡ… сСрвисов, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Π΅, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Ρ‚. ΠΏ.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, насколько Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Terraform Π²Π°ΠΆΠ΅Π½ для ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ bootstrapping’Π°. Kubernetes Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π³Π΄Π΅-Ρ‚ΠΎ Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚, ΠΈ использованиС Terraform ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ самыС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ процСссы GitOps для создания ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ слоя, Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ Π² основС Kubernetes ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ полСзная Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ GitOps ΠΊ слоям Π½Π°Π΄ Kubernetes. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ GitOps-Ρ‚ΠΈΠΏΠ° для Istio, Helm, Ksonnet, OpenFaaS ΠΈ Kubeflow, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Pulumi, Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ слой для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ cloud native.

Kubernetes CI/CD: сравнСниС GitOps с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ

Как Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, GitOps β€” это Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ:

  1. МодСль эксплуатации для Kubernetes ΠΈ cloud native, описанная Π²Ρ‹ΡˆΠ΅.
  2. ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² срСды для управлСния прилоТСниями.

Для ΠΌΠ½ΠΎΠ³ΠΈΡ… GitOps β€” это ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс Π½Π° основС Git push’Π΅ΠΉ. Нам ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ нравится. Но это Π½Π΅ всС: Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° CI/CD-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹.

GitOps обСспСчиваСт Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ (CD) ΠΏΠΎΠ΄ Kubernetes

GitOps ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ развСртывания, ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… «систСмах управлСния развСртываниями». Π’ΡΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π·Π° вас выполняСт Kubernetes.

  • ОбновлСниС прилоТСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ обновлСния Π² Git’Π΅. Π­Ρ‚ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ состояния. Β«Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅Β» Π·Π°Ρ‚Π΅ΠΌ осущСствляСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра самим Kubernetes Π½Π° основС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ описания.
  • Из-Π·Π° спСцифики Ρ€Π°Π±ΠΎΡ‚Ρ‹ Kubernetes эти обновлСния ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ‚Π½Ρ‹. Π’Π°ΠΊ обСспСчиваСтся ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ развСртывания, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всС обновлСния Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹.
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Weave Cloud ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ GitOps-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Git ΠΈ Kubernetes ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ CD ΠΏΡƒΡ‚Π΅ΠΌ согласования ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния кластСра.

Π‘Π΅Π· kubectl ΠΈ скриптов

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования Kubectl для обновлСния кластСра, Π° Π² особСнности β€” скриптов для группирования ΠΊΠΎΠΌΠ°Π½Π΄ kubectl. ВмСсто этого, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GitOps-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ свой кластСр Kubernetes Ρ‡Π΅Ρ€Π΅Π· Git.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя:

  1. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π“Ρ€ΡƒΠΏΠΏΡƒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΊΠΎΠ½Π²Π΅Ρ€Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°Π΅Ρ‚ нас ΠΊ Ρ†Π΅Π»ΠΈ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠ³ΠΎ развСртывания. Напротив, использованиС скриптов Π½Π΅ Π΄Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ†ΠΈΠΈ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Π½ΠΈΠΆΠ΅).
  2. Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Цитируя Kelsey Hightower: Β«ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ доступ ΠΊ кластСру Kubernetes инструмСнтам Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ администраторам, Π² обязанности ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π΅Π³ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ работоспособности». Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ мою ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΎ бСзопасности ΠΈ соотвСтствии тСхничСским условиям, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ Π²Π·Π»ΠΎΠΌΠ΅ Homebrew ΠΏΡƒΡ‚Π΅ΠΌ хищСния ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π½Π΅Π±Ρ€Π΅ΠΆΠ½ΠΎ составлСнного Jenkins-скрипта.
  3. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΎΠΏΡ‹Ρ‚. Kubectl ΠΎΠ±Π½Π°ΠΆΠ°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Kubernetes, которая вСсьма слоТна. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с систСмой Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅ абстракции. Π—Π΄Π΅ΡΡŒ я снова сошлюсь Π½Π° Kelsey ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅Π·ΡŽΠΌΠ΅.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ CI ΠΈ CD

GitOps ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ CI/CD-ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ CI-сСрвСр прСдставляСт собой инструмСнт для оркСстрации. Π’ частности, это инструмСнт для оркСстрации CI-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ². Они Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя build, test, merge to trunk ΠΈ Ρ‚. Π΄. CI-сСрвСры Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ слоТными ΠΌΠ½ΠΎΠ³ΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌΠΈ. РаспространСнный соблазн состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт для Π½Π°Π±ΠΎΡ€Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Kubernetes ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² качСствС элСмСнта ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° для push’Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² кластСр. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ спСциалисты. Однако это Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ, ΠΈ Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

CI Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для внСсСния ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π² trunk, Π° кластСр Kubernetes Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΌΠ΅Π½ΡΡ‚ΡŒ сСбя Π½Π° основС этих ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ CD Β«Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Β». ΠœΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ это pull-модСлью для CD, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ CI push-ΠΌΠΎΠ΄Π΅Π»ΠΈ. CD являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ runtime-оркСстрации.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ CI-сСрвСры Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ CD Ρ‡Π΅Ρ€Π΅Π· прямыС обновлСния Π² Kubernetes

НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ CI-сСрвСр для оркСстрации прямых ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π² Kubernetes Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€Π° CI-Π·Π°Π΄Π°Π½ΠΈΠΉ. Π­Ρ‚ΠΎ Π°Π½Ρ‚ΠΈ-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΡƒΠΆΠ΅ рассказывали Π² своСм Π±Π»ΠΎΠ³Π΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ вСрнСмся ΠΊ АлисС ΠΈ Π‘ΠΎΠ±Ρƒ.

Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΎΠ½ΠΈ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ? CI-сСрвСр Π‘ΠΎΠ±Π° примСняСт измСнСния ΠΊ кластСру, Π½ΠΎ Ссли Π² процСссС ΠΎΠ½ ΡƒΠΏΠ°Π΄Π΅Ρ‚, Π‘ΠΎΠ± Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ состоянии находится (ΠΈΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ) кластСр ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. Π’ΠΎ ΠΆΠ΅ самоС справСдливо ΠΈ Π² случаС успСха.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π‘ΠΎΠ±Π° собрала Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠΏΠ°Ρ‚Ρ‡ΠΈΠ»Π° свои deployment’Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π· (всС это ΠΈΠ· CI-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°).

Если ΠΎΠ±Ρ€Π°Π· собСрСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΡƒΠΏΠ°Π΄Π΅Ρ‚, ΠΊΠΎΠΌΠ°Π½Π΄Π΅ придСтся Π²Ρ‹ΡΡΠ½ΡΡ‚ΡŒ:

  • Π Π°Π·Π²Π΅Ρ€Π½ΡƒΠ»ΠΎΡΡŒ Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅?
  • ЗапускаСм Π»ΠΈ ΠΌΡ‹ Π½ΠΎΠ²ΡƒΡŽ сборку? ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ Π»ΠΈ это ΠΊ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ эффСктам β€” с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π²Π΅ сборки ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°?
  • Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ Π½Π°ΠΌ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ обновлСния, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сборку?
  • Π§Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ? КакиС шаги Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ (ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… бСзопасно ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ)?

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ основанного Π½Π° Git’Π΅ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π‘ΠΎΠ±Π° Π½Π΅ столкнСтся с этими ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ. Они ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ с push’Π΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, с Ρ‚Π΅Π³ΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ; ΠΎΠ΄Π½Π°ΠΊΠΎ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ всС ΠΆΠ΅ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΊ явному всС-ΠΈΠ»ΠΈ-Π½ΠΈΡ‡Π΅Π³ΠΎ.

ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠ²Π°Ρ, Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ CI-сСрвСры Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ CD:

  • Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ обновлСния Π½Π΅ всСгда Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹; Π² Π½ΠΈΡ… Π»Π΅Π³ΠΊΠΎ Π½Π°Π΄Π΅Π»Π°Ρ‚ΡŒ ошибок.
  • CI-сСрвСры Π½Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Π³ΠΈΡ€ΡƒΡŽΡ‚ ΠΊ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ кластСра.
  • Π‘Π»ΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ сСмантикС систСмы.
  • Π‘Π»ΠΎΠΆΠ½Π΅Π΅ провСсти восстановлСниС послС частичного сбоя.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ Helm’e: Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Helm, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с GitOps-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Flux-Helm. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅Ρ€Π³Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ. Π‘Π°ΠΌ ΠΏΠΎ сСбС Helm Π½Π΅ являСтся Π½ΠΈ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ΠΌ, Π½ΠΈ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Ρ‹ΠΌ.

GitOps ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Continuous Delivery для Kubernetes

Команда Алисы ΠΈ Π‘ΠΎΠ±Π° внСдряСт GitOps ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ стало Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡΠΌΠΈ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ, ΠΊΠ°ΠΊ выглядит ΠΈΡ… Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π² основном Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ прилоТСниях ΠΈ сСрвисах, ΠΎΠ΄Π½Π°ΠΊΠΎ GitOps ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для управлСния всСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ.

МодСль эксплуатации для Kubernetes

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ. Она прСдставляСт Git ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰ΠΈΠ΅ рСсурсы для Π΄Π²ΡƒΡ… оркСстрированных ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ²:

  • Пайплайна Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считываСт ΠΈ записываСт Ρ„Π°ΠΉΠ»Ρ‹ Π² Git ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ².
  • Пайплайна Runtime GitOps, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΉ с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚ΡŒΡŽ. Он считываСт ΠΈ записываСт Ρ„Π°ΠΉΠ»Ρ‹ Π² Git ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

ΠšΠ°ΠΊΠΎΠ²Ρ‹ основныС Π²Ρ‹Π²ΠΎΠ΄Ρ‹?

  1. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ обновляя Git ΠΈΠ»ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΎΠ±Ρ€Π°Π·ΠΎΠ². Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, сущСствуСт сСтСвой экран ΠΌΠ΅ΠΆΠ΄Ρƒ CI ΠΈ runtime-срСдой. ΠœΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ «брандмауэром нСизмСняСмости» (immutability firewall), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС обновлСния Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ вСрсии. Для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ слайдам 72-87 этой ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.
  2. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой CI- ΠΈ Git-сСрвСр: GitOps Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свои Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅ CI- ΠΈ Git-сСрвСры, Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΈ Π½Π°Π±ΠΎΡ€Ρ‹ тСстов. ΠŸΠΎΡ‡Ρ‚ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты для Continuous Delivery Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ собствСнного CI-/Git-сСрвСра ΠΈΠ»ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΎΠ±Ρ€Π°Π·ΠΎΠ². Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ cloud native. Π’ случаС GitOps Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ инструмСнты.
  3. Бобытия ΠΊΠ°ΠΊ инструмСнт ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ: Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π² Git ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ, Weave Flux (ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Weave Cloud) ΠΈΠ·Π²Π΅Ρ‰Π°Π΅Ρ‚ ΠΎΠ± этом runtime. Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Kubernetes ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Git обновляСтся. Π­Ρ‚ΠΎ обСспСчиваСт ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ модСль ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов для GitOps, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

GitOps прСдоставляСт вСсомыС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ обновлСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π»ΡŽΠ±ΠΎΠΌΡƒ соврСмСнному инструмСнту CI/CD:

  • автоматизация;
  • конвСргСнция;
  • ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ;
  • Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ.

Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ модСль эксплуатации для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² области cloud native.

  • Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ инструмСнты для управлСния ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° систСм связаны с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ эксплуатации, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… runbook’Π° (Π½Π°Π±ΠΎΡ€Π° Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².), привязанного ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ deployment’Ρƒ.
  • Π’ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ cloud native-систСмами инструмСнтарий для наблюдСния являСтся Π»ΡƒΡ‡ΡˆΠΈΠΌ способом ΠΎΡ†Π΅Π½ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² смогла ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ….

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ мноТСство кластСров, разбросанных ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Π»Π°ΠΊΠ°ΠΌ ΠΈ мноТСство сСрвисов со своими собствСнными ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΈ ΠΏΠ»Π°Π½Π°ΠΌΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ. GitOps ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½ΠΎ-ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΡƒΡŽ модСль для управлСния всСм этим ΠΈΠ·ΠΎΠ±ΠΈΠ»ΠΈΠ΅ΠΌ.

P.S. ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Волько зарСгистрированныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² опросС. Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅, поТалуйста.

Π’Ρ‹ Π·Π½Π°Π»ΠΈ ΠΏΡ€ΠΎ GitOps Π΄ΠΎ появлСния этих Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ² Π½Π° Ρ…Π°Π±Ρ€Π΅?

  • Π”Π°, всё Π·Π½Π°Π»(Π°)

  • Π›ΠΈΡˆΡŒ повСрхностно

  • НСт

ΠŸΡ€ΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 35 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ΠΎΠ·Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈΡΡŒ 10 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ