GitOps чист?

Шарҳ. тарҷума.: Пас аз нашри охирин мавод дар бораи усулҳои кашидан ва тела дар GitOps, мо умуман таваҷҷӯҳро ба ин модел дидем, аммо дар ин мавзӯъ нашрияҳои русӣ хеле кам буданд (дар Habré ҳеҷ чиз вуҷуд надорад). Аз ин рӯ, мо бо камоли майл ба диққати шумо тарҷумаи мақолаи дигарро пешниҳод менамоем - ҳарчанд қариб як сол пеш! - аз Weaveworks, ки сари он истилоҳи "GitOps" -ро ба вуҷуд овардааст. Матн моҳияти равиш ва фарқиятҳои асосиро аз усулҳои мавҷуда шарҳ медиҳад.

Як сол пеш мо нашр кардем шиносоӣ бо GitOps. Он вақт мо нақл карда будем, ки чӣ тавр дастаи Weaveworks як SaaS-ро комилан дар асоси Kubernetes оғоз кард ва як қатор таҷрибаҳои беҳтарини дастурамалро барои ҷобаҷогузорӣ, идоракунӣ ва мониторинг дар муҳити аслии абр таҳия кардааст.

Мақола машҳур шуд. Одамони дигар дар бораи GitOps сӯҳбат карданд ва ба нашри асбобҳои нав шурӯъ карданд тела додан, рушд, асрор, функсияҳо, муттаҳидсозии доимӣ ва ғайра. Дар сайти мо пайдо шуд шумораи зиёди нашрияҳо ва ҳолатҳои истифодаи GitOps. Аммо баъзеҳо ҳоло ҳам савол доранд. Модел аз модели анъанавӣ чӣ фарқ дорад? инфрасохтор ҳамчун рамз ва интиқоли доимӣ (фиристодаи доимӣ)? Оё Kubernetes-ро истифода бурдан лозим аст?

Мо ба зудӣ фаҳмидем, ки тавсифи нав лозим аст ва пешниҳод мекунад:

  1. Шумораи зиёди мисолҳо ва ҳикояҳо;
  2. Таърифи мушаххаси GitOps;
  3. Муқоиса бо интиқоли доимии анъанавӣ.

Дар ин мақола мо кӯшиш кардем, ки ҳамаи ин мавзӯъҳоро фаро гирем. Он муқаддимаи навшудаи GitOps ва дурнамои таҳиягар ва CI/CD-ро пешкаш мекунад. Мо пеш аз ҳама ба Кубернетес тамаркуз мекунем, гарчанде ки моделро умумӣ кардан мумкин аст.

GitOps вохӯред

Алисро тасаввур кунед. Вай суғуртаи оиларо роҳандозӣ мекунад, ки суғуртаи саломатӣ, мошин, хона ва сафарро ба одамоне пешниҳод мекунад, ки барои фаҳмидани нозукиҳои шартномаҳо хеле банд ҳастанд. Тиҷорати ӯ ҳамчун як лоиҳаи тарафӣ вақте оғоз шуд, ки Алис дар бонк ҳамчун олими маълумот кор мекард. Як рӯз вай дарк кард, ки вай метавонад алгоритмҳои пешрафтаи компютериро барои таҳлили самараноктар маълумот ва таҳияи бастаҳои суғурта истифода барад. Сармоягузорон лоиҳаро маблағгузорӣ карданд ва ҳоло ширкати ӯ дар як сол беш аз 20 миллион доллар даромад меорад ва босуръат рушд мекунад. Холо дар он 180 кас дар вазифахои гуногун кор мекунад. Ба он як гурӯҳи технологӣ дохил мешавад, ки вебсайт, пойгоҳи додаҳоро таҳия, нигоҳ медорад ва пойгоҳи муштариёнро таҳлил мекунад. Ба бригадаи 60-нафара директори техникии корхона Боб рохбарй мекунад.

Дастаи Боб системаҳои истеҳсолиро дар абр ҷойгир мекунад. Барномаҳои асосии онҳо дар GKE кор мекунанд ва аз Kubernetes дар Google Cloud истифода мебаранд. Илова бар ин, онҳо дар кори худ аз воситаҳои гуногуни маълумот ва таҳлил истифода мебаранд.

Суғуртаи оилавӣ нияти истифодаи контейнерҳоро надошт, аммо ба шавқу ҳаваси Docker гирифтор шуд. Ба зудӣ ширкат фаҳмид, ки GKE ҷойгиркунии кластерҳоро барои санҷиши хусусиятҳои нав осон ва бемаънӣ кардааст. Ҷенкинс барои CI ва Quay барои ташкили феҳристи контейнерҳо илова карда шуданд, скриптҳо барои Ҷенкинс навишта шуданд, ки контейнерҳо ва конфигуратсияҳои навро ба GKE тела доданд.

Аз байн чанд вакт гузашт. Алис ва Боб аз иҷрои равиши интихобкардаи худ ва таъсири он ба тиҷорат ноумед шуданд. Ба кор андохтани контейнерхо хосилнокии мехнатро он кадар бехтар на-кард, ки коллектив умед дошт. Баъзан ҷойгиркунӣ вайрон мешуд ва маълум набуд, ки оё тағироти код гунаҳкор аст ё не. Инчунин пайгирӣ кардани тағироти конфигуратсия душвор буд. Аксар вақт эҷод кардани кластери нав ва интиқол додани барномаҳо ба он зарур буд, зеро ин роҳи осонтарини бартараф кардани бесарусомоние, ки система ба амал омадааст, буд. Алис метарсид, ки вазъ ҳангоми таҳияи барнома бадтар мешавад (илова бар ин, як лоиҳаи нав дар асоси омӯзиши мошинсозӣ пиво мекард). Боб аксари корҳоро автоматӣ карда буд ва намефаҳмид, ки чаро қубур то ҳол ноустувор аст, миқёсаш хуб набуд ва давра ба давра дахолати дастиро талаб мекунад?

Сипас онҳо дар бораи GitOps омӯхтанд. Ин карор махз он чизест, ки ба онхо барои дилпурона пеш рафтан лозим буд.

Алис ва Боб дар тӯли солҳо дар бораи Git, DevOps ва инфрасохтор ҳамчун ҷараёни кории код шунидаанд. Чизи беназири GitOps дар он аст, ки он маҷмӯи таҷрибаҳои беҳтарин - ҳам қатъӣ ва ҳам меъёриро барои татбиқи ин ғояҳо дар заминаи Kubernetes меорад. Ин мавзӯъ такрор ба такрор баланд шуд, аз чумла дар Блоги Weaveworks.

Суғуртаи оила тасмим гирифт, ки GitOps-ро татбиқ кунад. Ҳоло ширкат як модели автоматии амалиёт дорад, ки бо Kubernetes ва комбайнҳо мувофиқ аст суръат бо суботзеро онҳо:

  • маълум кард, ки хосилнокии мехнат бе хеч кас девонавор ду баробар меафзояд;
  • адои скриптхоро бас кард. Ба ҷои ин, онҳо акнун метавонанд ба хусусиятҳои нав тамаркуз кунанд ва усулҳои муҳандисиро такмил диҳанд - масалан, ҷорӣ кардани канарҳо ва такмил додани санҷиш;
  • мо процесси чойгиркуниро такмил додем, то ки он хеле кам вайрон шавад;
  • имконияти барқарор кардани ҷойгиркунӣ пас аз нокомии қисман бидуни дахолати дастӣ пайдо шуд;
  • харида истифода бурда мешавадоБоварии бештар ба системаҳои интиқол. Алис ва Боб дарёфтанд, ки онҳо метавонанд дастаро ба гурӯҳҳои хидматрасонии микросервис тақсим кунанд;
  • бо саъю кушиши хар як гурух хар руз ба лоиха 30—50 тагйирот дароварда, техникаи навро санчида метавонад;
  • ҷалби таҳиягарони нав ба лоиҳа осон аст, ки имкони паҳн кардани навсозиро дар истеҳсолот бо истифода аз дархостҳои кашидан дар тӯли чанд соат доранд;
  • дар доираи SOC2 аз аудит ба осонӣ гузаранд (барои мувофиқати провайдерҳои хидматрасон ба талабот барои идоракунии бехатари додаҳо; бештар хонед, масалан, дар ин ҷо - тахминан. тарҷума.).

Чӣ рӯй дод?

GitOps ду чиз аст:

  1. Модели амалиётӣ барои Kubernetes ва абрии модарӣ. Он маҷмӯи таҷрибаҳои беҳтаринро барои ҷойгиркунӣ, идоракунӣ ва мониторинги кластерҳо ва барномаҳои контейнерӣ таъмин мекунад. Таърифи шево дар шакл як слайд аз он Луис Фасейра:
  2. Роҳи эҷоди муҳити идоракунии барномаҳо, ки ба таҳиягарон нигаронида шудааст. Мо ҷараёни кории Git-ро ҳам барои амалиёт ва ҳам барои рушд татбиқ мекунем. Лутфан қайд кунед, ки ин на танҳо дар бораи Git push, балки дар бораи ташкили тамоми маҷмӯи абзорҳои CI/CD ва UI/UX аст.

Якчанд сухан дар бораи Git

Агар шумо бо системаҳои идоракунии версия ва ҷараёни кории Git дар асоси Git ошно набошед, мо тавсия медиҳем, ки дар бораи онҳо омӯзед. Кор бо шохаҳо ва дархостҳои кашидан дар аввал метавонад ба мисли ҷодуи сиёҳ ба назар расад, аммо фоидаҳо ба саъю кӯшиш меарзанд. Ин ҷо мақолаи хуб сар кардан.

Чӣ тавр Kubernetes кор мекунад

Дар ҳикояи мо, Алис ва Боб пас аз чанд муддат бо Кубернетес кор кардан ба GitOps муроҷиат карданд. Дар ҳақиқат, GitOps бо Kubernetes зич алоқаманд аст - он як модели амалиётӣ барои инфрасохтор ва барномаҳо дар асоси Kubernetes мебошад.

Kubernetes ба корбарон чӣ медиҳад?

Инҳоянд баъзе хусусиятҳои асосӣ:

  1. Дар модели Кубернетес ҳама чизро дар шакли декларативӣ тавсиф кардан мумкин аст.
  2. Сервери API Kubernetes ин эъломияро ҳамчун вуруд қабул мекунад ва сипас пайваста кӯшиш мекунад, ки кластерро ба ҳолати дар эъломия тавсифшуда ворид кунад.
  3. Эъломияҳо барои тавсиф ва идора кардани як қатор сарбориҳои корӣ - "барномаҳо" кифояанд.
  4. Дар натиҷа, тағирот дар барнома ва кластер бо сабаби:
    • тағирот дар тасвирҳои контейнер;
    • тағйирот ба мушаххасоти декларативӣ;
    • хатогиҳо дар муҳити зист - масалан, садамаҳои контейнер.

Қобилиятҳои конвергенсияи бузурги Кубернетес

Вақте ки администратор тағироти конфигуратсияро мекунад, оркестри Kubernetes онҳоро то даме ки ҳолати он дар кластер истифода мебарад ба конфигуратсияи нав наздик намешавад. Ин модел барои ҳама манбаи Kubernetes кор мекунад ва бо таърифҳои фармоишии захираҳо (CRDs) васеъ карда мешавад. Аз ин рӯ, ҷойгиркунии Kubernetes дорои хосиятҳои олиҷаноби зерин мебошанд:

  • Автоматика: Навсозиҳои Kubernetes механизми автоматикунонии раванди татбиқи тағиротро ба таври зебо ва саривақтӣ таъмин мекунанд.
  • Конвергенсия: Kubernetes кӯшиши навсозиро то муваффақ шудан идома медиҳад.
  • Имкониятсизлик: Истифодаи такрории конвергенсия ба як натиҷа оварда мерасонад.
  • Детерминизм: Вақте ки захираҳо кофӣ мебошанд, ҳолати кластери навшуда танҳо аз ҳолати дилхоҳ вобаста аст.

Чӣ тавр GitOps кор мекунад

Мо дар бораи Kubernetes ба қадри кофӣ омӯхтем, то бифаҳмем, ки GitOps чӣ гуна кор мекунад.

Биёед ба дастаҳои микросервисҳои суғуртаи оилавӣ баргардем. Онҳо одатан чӣ кор мекунанд? Ба рӯйхат дар зер нигаред (агар ягон ашё дар он аҷиб ё ношинос ба назар расад, лутфан танқидро қатъ кунед ва бо мо бимонед). Инҳо танҳо намунаҳои ҷараёнҳои кории Ҷенкинс мебошанд. Дар вакти кор бо дигар асбобхо бисьёр процессхои дигар мавчуданд.

Муҳим он аст, ки мо мебинем, ки ҳар як навсозӣ бо тағир додани файлҳои конфигуратсия ва анбори Git анҷом меёбад. Ин тағиротҳо дар Git боиси навсозии "оператори GitOps" мешаванд, то кластерро навсозӣ кунанд:

1. Раванди кор: "Ҷенкинс месозад - филиали усто".
Рӯйхати вазифаҳо:

  • Ҷенкинс тасвирҳои барчаспшударо ба Quay тела медиҳад;
  • Ҷенкинс конфигуратсия ва диаграммаҳои Ҳелмро ба сатили нигаҳдории асосӣ тела медиҳад;
  • Функсияи абр конфигуратсия ва диаграммаҳоро аз сатили нигаҳдории асосӣ ба анбори асосии Git нусхабардорӣ мекунад;
  • Оператори GitOps кластерро нав мекунад.

2. Ҷенкинс сохтан - филиали озод ё ислоҳ:

  • Ҷенкинс тасвирҳои номбаршударо ба Quay тела медиҳад;
  • Ҷенкинс конфигуратсия ва диаграммаҳои Ҳелмро ба сатили нигаҳдории саҳна тела медиҳад;
  • Функсияи абрӣ конфигуратсия ва диаграммаҳоро аз сатили нигаҳдории саҳнавӣ ба анбори ҷойгиркунии Git нусхабардорӣ мекунад;
  • Оператори GitOps кластерро нав мекунад.

3. Ҷенкинс месозад - филиалро таҳия ё хусусият:

  • Ҷенкинс тасвирҳои номбаршударо ба Quay тела медиҳад;
  • Ҷенкинс диаграммаҳои конфигуратсия ва Ҳелмро ба сатили нигаҳдории таҳияшуда тела медиҳад;
  • Функсияи абр конфигуратсия ва диаграммаҳоро аз сатили нигаҳдории таҳияшуда ба анбори таҳияшудаи Git нусхабардорӣ мекунад;
  • Оператори GitOps кластерро нав мекунад.

4. Илова кардани муштарии нав:

  • Менеҷер ё администратор (LCM/ops) ба Gradle занг мезанад, то дар аввал тавозуни сарбории шабака (NLBs) ҷойгир ва танзим кунад;
  • LCM/ops конфигуратсияи навро барои омода кардани ҷойгиркунӣ барои навсозиҳо иҷро мекунад;
  • Оператори GitOps кластерро нав мекунад.

Тавсифи мухтасари GitOps

  1. Ҳолати дилхоҳи тамоми системаро бо истифода аз мушаххасоти декларативӣ барои ҳар як муҳит тавсиф кунед (дар ҳикояи мо, дастаи Боб тамоми конфигуратсияи системаро дар Git муайян мекунад).
    • Анбори Git манбаи ягонаи ҳақиқат дар бораи ҳолати дилхоҳи тамоми система мебошад.
    • Ҳама тағиротҳо ба ҳолати дилхоҳ тавассути супоришҳо дар Git анҷом дода мешаванд.
    • Ҳама параметрҳои кластери дилхоҳро дар худи кластер низ мушоҳида кардан мумкин аст. Бо ин роҳ мо метавонем муайян кунем, ки оё онҳо мувофиқат мекунанд (конверсатсия, наздик шудан) ё фарқ кардан (фарқият кардан, ихтилоф кардан) холатхои дилхох ва мушохидашуда.
  2. Агар ҳолатҳои дилхоҳ ва мушоҳидашуда фарқ кунанд, пас:
    • Механизми конвергенсия вуҷуд дорад, ки дер ё зуд ҳолати ҳадаф ва мушоҳидашударо ба таври худкор ҳамоҳанг месозад. Дар дохили кластер, Кубернетес ин корро мекунад.
    • Раванд фавран бо огоҳии "тағйироти содиршуда" оғоз меёбад.
    • Пас аз чанд давраи танзимшаванда, ҳушдори "фарқ" метавонад фиристода шавад, агар иёлатҳо гуногун бошанд.
  3. Ҳамин тариқ, ҳама ӯҳдадориҳо дар Git боиси навсозиҳои тасдиқшаванда ва номутаносиб ба кластер мешаванд.
    • Бозгашт ба конвергенсия ба ҳолати қаблан дилхоҳ аст.
  4. Конвергенсия ниҳоӣ аст. Пайдоиши он бо инҳо нишон дода мешавад:
    • Дар муддати муайян ягон огоҳии фарқият вуҷуд надорад.
    • Огоҳии "муттаҳидшуда" (масалан, webhook, ҳодисаи навиштани Git).

Тафовут чист?

Боз такрор мекунем: ҳама хосиятҳои кластери дилхоҳ бояд дар худи кластер мушоҳида карда шаванд.

Баъзе мисолҳои ихтилофот:

  • Тағйир додани файли конфигуратсия аз сабаби якҷоя кардани филиалҳо дар Git.
  • Тағйирот дар файли конфигуратсия бо сабаби ӯҳдадории Git аз ҷониби муштарии GUI.
  • Тағироти сершумор ба ҳолати дилхоҳ аз сабаби PR дар Git ва пас аз сохтани тасвири контейнер ва тағироти конфигуратсия.
  • Тағйирёбии ҳолати кластер аз сабаби хатогӣ, ихтилофи захираҳо, ки ба "рафтори бад" оварда мерасонад ё инҳирофи тасодуфӣ аз ҳолати аввала.

Механизми конвергенсия чист?

Якчанд мисол:

  • Барои контейнерҳо ва кластерҳо механизми конвергенсия аз ҷониби Kubernetes таъмин карда мешавад.
  • Ҳамин механизмро барои идоракунии барномаҳо ва тарроҳии Kubernetes (ба монанди Istio ва Kubeflow) истифода бурдан мумкин аст.
  • Механизми идоракунии ҳамкории оперативӣ байни Кубернетес, анбори тасвирҳо ва Git пешниҳод мекунад Оператори GitOps Weave Flux, ки қисми он аст Абри бофтан.
  • Барои мошинҳои асосӣ, механизми конвергенсия бояд декларативӣ ва мустақил бошад. Аз тачрибаи худамон гуфта метавонем Терафром ба ин таъриф наздиктар аст, аммо ба ҳар ҳол назорати инсониро талаб мекунад. Ба ин маъно, GitOps анъанаи инфрасохторро ҳамчун Кодекс васеъ мекунад.

GitOps Git-ро бо муҳаррики конвергенсияи аълои Kubernetes муттаҳид мекунад, то модели истисморро таъмин кунад.

GitOps ба мо имкон медиҳад, ки бигӯем: Танҳо он системаҳоеро, ки тавсиф ва мушоҳида кардан мумкин аст, автоматӣ ва идора кардан мумкин аст.

GitOps барои тамоми стеки аслии абр пешбинӣ шудааст (масалан, Terraform ва ғайра).

GitOps танҳо Kubernetes нест. Мо мехоҳем, ки тамоми система ба таври декларативӣ идора карда шавад ва конвергенсия истифода шавад. Мафҳуми тамоми система мо маҷмӯи муҳитҳоеро дар назар дорем, ки бо Kubernetes кор мекунанд - масалан, "dev cluster 1", "production" ва ғайра. Ҳар як муҳити атроф мошинҳо, кластерҳо, барномаҳо, инчунин интерфейсҳои хидматрасонии беруна, ки маълумот, мониторингро таъмин мекунанд, дар бар мегирад. ва гайра.

Аҳамият диҳед, ки Terraform дар ин ҳолат барои мушкилоти боркунӣ чӣ қадар муҳим аст. Kubernetes бояд дар ҷое ҷойгир карда шавад ва бо истифода аз Terraform маънои онро дорад, ки мо метавонем ҳамон ҷараёнҳои кории GitOps-ро истифода барем, то қабати идоракуниро, ки Kubernetes ва барномаҳоро пуштибонӣ мекунад, истифода барем. Ин як таҷрибаи беҳтарини муфид аст.

Таваҷҷӯҳ ба татбиқи мафҳумҳои GitOps ба қабатҳои болои Kubernetes вуҷуд дорад. Дар айни замон, қарорҳои навъи GitOps барои Istio, Helm, Ksonnet, OpenFaaS ва Kubeflow мавҷуданд, инчунин, масалан, барои Pulumi, ки як қабатро барои таҳияи замимаҳо барои абрии маҳаллӣ эҷод мекунанд.

Kubernetes CI/CD: муқоисаи GitOps бо равишҳои дигар

Тавре ки гуфта шуд, GitOps ду чиз аст:

  1. Модели амалиётӣ барои Kubernetes ва абрии дар боло тавсифшуда.
  2. Роҳ ба муҳити идоракунии барномаҳое, ки ба таҳиягарон нигаронида шудааст.

Барои бисёриҳо, GitOps пеш аз ҳама ҷараёни корест, ки ба фишорҳои Git асос ёфтааст. Мо ҳам ӯро дӯст медорем. Аммо ин ҳама нест: биёед ҳоло ба қубурҳои CI/CD назар кунем.

GitOps барои Kubernetes густариши муттасил (CD) имкон медиҳад

GitOps як механизми пайвастаи ҷойгиркуниро пешниҳод мекунад, ки эҳтиёҷоти алоҳидаи "системаҳои идоракунии густаришро" аз байн мебарад. Кубернетес ҳама корро барои шумо мекунад.

  • Навсозии барнома навсозӣ дар Git-ро талаб мекунад. Ин як навсозии муомилот ба ҳолати дилхоҳ аст. Пас аз он "ҷойгиркунӣ" дар дохили кластер аз ҷониби худи Кубернетес дар асоси тавсифи навшуда анҷом дода мешавад.
  • Аз сабаби хусусияти кор кардани Кубернетес, ин навсозиҳо конвергент мебошанд. Ин механизми густариши доимиро таъмин мекунад, ки дар он ҳама навсозиҳо атомӣ мебошанд.
  • Эзоҳ: Абри бофтан оператори GitOps-ро пешниҳод мекунад, ки Git ва Kubernetes-ро муттаҳид мекунад ва имкон медиҳад, ки CD тавассути мувофиқ кардани ҳолати дилхоҳ ва кунунии кластер иҷро карда шавад.

Бе kubectl ва скриптҳо

Шумо бояд аз истифодаи Kubectl барои навсозии кластери худ худдорӣ кунед ва махсусан аз истифодаи скриптҳо барои гурӯҳбандии фармонҳои kubectl худдорӣ кунед. Ба ҷои ин, бо лӯлаи GitOps, корбар метавонад кластери Kubernetes-и худро тавассути Git навсозӣ кунад.

Манфиатҳо дар бар мегиранд:

  1. Дуруст. Як гурӯҳи навсозиҳо метавонанд татбиқ карда шаванд, муттаҳид карда шаванд ва ниҳоят тасдиқ карда шаванд, ки моро ба ҳадафи ҷойгиркунии атом наздиктар мекунанд. Баръакс, истифодаи скриптҳо ҳеҷ гуна кафолати конвергенсияро таъмин намекунад (бештар дар бораи ин дар зер).
  2. Амният. Иқтибос овардан Келси Хайтоуэр: "Дастрасӣ ба кластери Kubernetes-и худро ба абзорҳои автоматизатсия ва маъмуроне, ки барои ислоҳ ё нигоҳдории он масъуланд, маҳдуд кунед." инчунин нигаред нашри ман дар бораи бехатарй ва риояи шартхои техникй, инчунин мақола дар бораи ҳакерӣ Homebrew бо дуздидани эътимоднома аз скрипти беэҳтиётона навишташудаи Ҷенкинс.
  3. Таҷрибаи корбар. Kubectl механикаи модели объекти Кубернетесро, ки хеле мураккабанд, фош мекунад. Идеалӣ, корбарон бояд бо система дар сатҳи баландтари абстраксия муошират кунанд. Дар ин ҷо ман боз ба Келси муроҷиат мекунам ва тамошо карданро тавсия медиҳам чунин резюме.

Тафовут байни CI ва CD

GitOps моделҳои мавҷудаи CI/CD-ро такмил медиҳад.

Сервери муосири CI воситаи оркестр мебошад. Махсусан, он асбобест барои ташкили қубурҳои CI. Ба инҳо сохтан, озмоиш кардан, якҷояшавӣ ба тана ва ғайра дохил мешаванд. Серверҳои CI идоракунии қубурҳои мураккаби чандқадамро автоматӣ мекунанд. Васвасаи маъмул ин аст, ки скрипт маҷмӯи навсозиҳои Kubernetes ва иҷро кардани он ҳамчун як қисми лӯла барои ворид кардани тағирот ба кластер. Дар ҳақиқат, ин корест, ки бисёр коршиносон кор мекунанд. Бо вуҷуди ин, ин беҳтарин нест ва ин аст, ки чаро.

CI бояд барои пахш кардани навсозиҳо ба тана истифода шавад ва кластери Kubernetes бояд худро дар асоси ин навсозиҳо барои идоракунии дохили CD тағир диҳад. Мо онро даъват мекунем модели кашидани CD, бар хилофи модели push CI. CD қисми аст оркестри вақти корӣ.

Чаро серверҳои CI набояд тавассути навсозиҳои мустақим дар Кубернетес CD кор кунанд

Барои ташкили навсозиҳои мустақим ба Kubernetes ҳамчун маҷмӯи ҷойҳои CI сервери CI-ро истифода набаред. Ин намунаи зиддитеррористӣ аст, ки мо дар бораи он гап мезанем аллакай гуфта шудааст дар блоги ман.

Биёед ба Алис ва Боб баргардем.

Онҳо бо чӣ мушкилот дучор шуданд? Сервери CI-и Боб тағиротро ба кластер татбиқ мекунад, аммо агар он дар ин раванд ба садама дучор шавад, Боб намедонад, ки кластер дар кадом ҳолат аст (ё бояд бошад) ё чӣ гуна ислоҳ кардани онро. Дар сурати муваффақ шудан низ ҳамин тавр аст.

Фарз мекунем, ки дастаи Боб симои нав сохтааст ва сипас ҷойгиркунии худро барои ҷойгиркунии тасвир часпондааст (ҳама аз лӯлаи CI).

Агар тасвир ба таври муқаррарӣ сохта шавад, аммо қубур ноком шавад, гурӯҳ бояд фаҳмад:

  • Оё навсозӣ паҳн шудааст?
  • Оё мо сохтмони навро ба кор меандозем? Оё ин ба оқибатҳои нолозим оварда мерасонад - бо имкони доштани ду сохтори як тасвири тағирнопазир?
  • Оё пеш аз ба кор андохтани сохтмон мо бояд навсозии навбатиро интизор шавем?
  • Аслан чӣ хато кард? Кадом қадамҳоро такрор кардан лозим аст (ва кадом қадамҳоро такрор кардан бехатар аст)?

Ташкили ҷараёни кории дар Git асосёфта кафолат намедиҳад, ки дастаи Боб ба ин мушкилот дучор нахоҳанд шуд. Онҳо ба ҳар ҳол метавонанд бо пахши commit, тег ё ягон параметри дигар хато кунанд; аммо ин равиш ба равиши равшани ҳама ё ҳеҷ чиз хеле наздиктар аст.

Барои ҷамъбаст, ин аст, ки чаро серверҳои CI набояд бо CD кор кунанд:

  • Скриптҳои навсозӣ на ҳамеша муайянкунандаанд; Дар онҳо хато кардан осон аст.
  • Серверҳои CI ба модели кластери декларативӣ муттаҳид намешаванд.
  • Кафолати беэътиноӣ душвор аст. Истифодабарандагон бояд семантикаи амиқи системаро дарк кунанд.
  • Аз шикасти қисман барқарор шудан душвортар аст.

Эзоҳ дар бораи Helm: Агар шумо хоҳед, ки Helm-ро истифода баред, мо тавсия медиҳем, ки онро бо оператори GitOps якҷоя кунед, масалан Флюс-Хелм. Ин ба таъмини конвергенсия мусоидат мекунад. Худи Хелм на детерминистй ва на атомист.

GitOps ҳамчун роҳи беҳтарини татбиқи таҳвили муттасил барои Kubernetes

Дастаи Алис ва Боб GitOps-ро татбиқ мекунад ва мефаҳмад, ки кор бо маҳсулоти нармафзор, нигоҳ доштани маҳсулнокӣ ва устувории баланд хеле осонтар шудааст. Биёед ин мақоларо бо тасвире анҷом диҳем, ки равиши нави онҳо чӣ гуна аст. Дар хотир доред, ки мо асосан дар бораи барномаҳо ва хидматҳо гап мезанем, аммо GitOps метавонад барои идоракунии тамоми платформа истифода шавад.

Модели амалиётӣ барои Kubernetes

Ба диаграммаи зерин нигаред. Он Git ва анбори тасвири контейнериро ҳамчун захираҳои муштарак барои ду давраи ҳаёти ташкилшуда пешниҳод мекунад:

  • Як лӯлаи муттаҳидсозии пайваста, ки файлҳоро дар Git мехонад ва менависад ва метавонад анбори тасвирҳои контейнериро навсозӣ кунад.
  • Як лӯлаи Runtime GitOps, ки густаришро бо идоракунӣ ва мушоҳидавӣ муттаҳид мекунад. Он файлҳоро дар Git мехонад ва менависад ва метавонад тасвирҳои контейнерро зеркашӣ кунад.

Бозёфтҳои асосӣ кадомҳоянд?

  1. Ҷудо кардани нигарониҳо: Лутфан қайд кунед, ки ҳарду қубурҳо метавонанд танҳо тавассути навсозии Git ё анбори тасвир муошират кунанд. Ба ибораи дигар, дар байни CI ва муҳити корӣ девори девор мавҷуд аст. Мо онро "сипари бетағйирнопазирӣ" меномем. (сипари бетағйирнопазирӣ), зеро ҳама навсозиҳои анбор версияҳои нав эҷод мекунанд. Барои маълумоти бештар дар бораи ин мавзӯъ, ба слайдҳои 72-87 муроҷиат кунед ин презентатсия.
  2. Шумо метавонед ҳама гуна сервери CI ва Git-ро истифода баред: GitOps бо ҳама ҷузъҳо кор мекунад. Шумо метавонед истифода бурдани серверҳои дӯстдоштаи CI ва Git, анбори тасвирҳо ва сюитҳои санҷиширо идома диҳед. Қариб ҳамаи воситаҳои дигари таҳвили доимӣ дар бозор сервери CI/Git ё анбори тасвири худро талаб мекунанд. Ин метавонад як омили маҳдудкунанда дар рушди абрии модарӣ гардад. Бо GitOps, шумо метавонед асбобҳои шиносро истифода баред.
  3. Ҳодисаҳо ҳамчун воситаи ҳамгироӣ: Ҳамин ки маълумот дар Git нав карда мешавад, Weave Flux (ё оператори Weave Cloud) вақти корро огоҳ мекунад. Ҳар вақте ки Kubernetes маҷмӯи тағиротро қабул мекунад, Git нав карда мешавад. Ин як модели оддии ҳамгироиро барои ташкили ҷараёнҳои корӣ барои GitOps, тавре ки дар зер нишон дода шудааст, таъмин мекунад.

хулоса

GitOps кафолатҳои қавии навсозии ҳама гуна асбоби муосири CI/CD-ро таъмин мекунад:

  • автоматизатсия;
  • конвергенсия;
  • номутаносибӣ;
  • детерминизм.

Ин муҳим аст, зеро он барои таҳиягарони абрии маҳаллӣ модели амалиётӣ пешниҳод мекунад.

  • Воситаҳои анъанавӣ барои идоракунӣ ва мониторинги системаҳо бо гурӯҳҳои амалиётӣ, ки дар доираи runbook кор мекунанд, алоқаманданд (маҷмӯи расмиёти муқаррарӣ ва амалиёт - тақрибан тарҷума.), ба ҷойгиркунии мушаххас вобаста аст.
  • Дар идоракунии абрии маҳаллӣ, абзорҳои мушоҳидавӣ беҳтарин роҳи чен кардани натиҷаҳои ҷойгиркунӣ мебошанд, то гурӯҳи таҳиякунанда зуд вокуниш нишон диҳад.

Тасаввур кунед, ки кластерҳои зиёде дар абрҳои гуногун ва хидматҳои зиёде бо дастаҳои худ ва нақшаҳои ҷойгиркунӣ пароканда шудаанд. GitOps модели миқёси инвариантиро барои идоракунии ҳамаи ин фаровонӣ пешниҳод мекунад.

PS аз тарҷумон

Инчунин дар блоги мо хонед:

Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд. даромад, Лутфан.

Оё шумо пеш аз пайдо шудани ин ду тарҷума дар Habré дар бораи GitOps медонистед?

  • Бале, ман ҳама чизро медонистам

  • Фақат рӯякӣ

  • нест

35 корбар овоз доданд. 10 корбар худдорӣ карданд.

Манбаъ: will.com

Илова Эзоҳ