GitOps: Kufananiza Njira Zokoka ndi Kukankhira

Zindikirani. transl.: M'dera la Kubernetes, machitidwe otchedwa GitOps akudziwika bwino, monga tawonera panokha, kuchezera KubeCon Europe 2019. Mawu awa anali aposachedwa anatulukira ndi mutu wa Weaveworks - Alexis Richardson - ndipo amatanthauza kugwiritsa ntchito zida zodziwika bwino kwa opanga (makamaka Git, motero dzina) kuti athetse mavuto ogwirira ntchito. Makamaka, tikukamba za ntchito ya Kubernetes posunga masanjidwe ake mu Git ndikungotulutsa zosintha pagulu. Matthias Jg amalankhula za njira ziwiri zotulutsira izi m'nkhaniyi.

GitOps: Kufananiza Njira Zokoka ndi Kukankhira

Chaka chatha (M'malo mwake, izi zidachitika mu Ogasiti 2017 - pafupifupi transl.) Pali njira yatsopano yotumizira mapulogalamu ku Kubernetes. Imatchedwa GitOps, ndipo zimatengera lingaliro lofunikira kuti mitundu yotumizira imatsatiridwa pamalo otetezedwa a Git repository.

Ubwino waukulu wa njirayi ndi awa::

  1. Kutumiza ndikusintha mbiri. Mkhalidwe wa gulu lonselo umasungidwa munkhokwe ya Git, ndipo kutumizidwa kumasinthidwa kokha kudzera muzochita. Kuphatikiza apo, zosintha zonse zitha kutsatiridwa pogwiritsa ntchito mbiri yakale.
  2. Rollbacks pogwiritsa ntchito malamulo odziwika a Git. Zosavuta git reset amakulolani kuti musinthe kusintha kwa deployments; maiko am'mbuyomu amapezeka nthawi zonse.
  3. Kuwongolera kokwanira. Nthawi zambiri, dongosolo la Git limakhala ndi chidziwitso chodziwika bwino, kotero makampani ambiri amasamala kwambiri kuti atetezedwe. Chifukwa chake, chitetezochi chimagwiranso ntchito pamachitidwe omwe amatumizidwa.
  4. Ndondomeko Zoyendetsera Ntchito. Machitidwe ambiri a Git mwachibadwa amathandizira ndondomeko za nthambi ndi nthambi-mwachitsanzo, zopempha zokhazokha zomwe zingasinthire masters, ndipo zosintha ziyenera kuwunikiridwa ndikuvomerezedwa ndi membala wina wa gulu. Monga momwe zilili ndi ulamuliro wofikira, ndondomeko zomwezo zimagwiranso ntchito pazosintha zotumizira.

Monga mukuwonera, pali zabwino zambiri panjira ya GitOps. M'chaka chatha, njira ziwiri zatchuka kwambiri. Imodzi ndi yokhazikika, ina ndi kukoka. Tisanawayang'ane, tiyeni tiwone kaye momwe ma Kubernetes amawonekera.

Njira Zotumizira

M'zaka zaposachedwa, njira ndi zida zosiyanasiyana zotumizira zidakhazikitsidwa ku Kubernetes:

  1. Kutengera ma tempulo aku Kubernetes/Kustomize. Iyi ndiye njira yosavuta yotumizira mapulogalamu pa Kubernetes. Wopanga mapulogalamu amapanga mafayilo oyambira a YAML ndikuwagwiritsa ntchito. Kuchotsa nthawi zonse kulembanso ma tempuleti omwewo, Kustomize idapangidwa (imasintha ma tempuleti a Kubernetes kukhala ma module). Zindikirani. transl.: Kustomize yaphatikizidwa mu kubectl ndi kutulutsidwa kwa Kubernetes 1.14.
  2. Ma chart a Helm. Ma chart a helm amakulolani kuti mupange ma templates, zotengera za init, sidecars, ndi zina zotere, zomwe zimagwiritsidwa ntchito poyika mapulogalamu ndi njira zosinthira makonda kuposa momwe amapangira ma template. Njirayi imachokera pamafayilo a YAML a template. Helm imawadzaza ndi magawo osiyanasiyana kenako imawatumiza ku Tiller, gawo lamagulu lomwe limawatumiza kumaguluwo ndikulola zosintha ndi kubweza. Chofunikira ndichakuti Helm imangoyika zomwe mukufuna m'matemplate ndikuzigwiritsa ntchito mofanana ndi momwe zimachitikira pachikhalidwe. (Werengani zambiri za momwe zonsezi zimagwirira ntchito komanso momwe mungagwiritsire ntchito m'nkhani yathu nkhani ndi Helm - pafupifupi. transl.). Pali mitundu ingapo ya ma chart okonzeka a Helm omwe ali ndi ntchito zosiyanasiyana.
  3. Zida Zina. Pali zida zina zambiri. Zomwe onse amafanana ndikuti amasintha mafayilo a template kukhala mafayilo a YAML owerengeka a Kubernetes ndiye kuwagwiritsa ntchito.

Pantchito yathu, timagwiritsa ntchito ma chart a Helm pazida zofunika (popeza ali ndi zinthu zambiri zokonzeka kale, zomwe zimapangitsa moyo kukhala wosavuta) komanso mafayilo "oyera" a Kubernetes YAML oti titumizire zomwe tikufuna.

Kokani & Kankhani

Mu imodzi mwazolemba zanga zaposachedwa zabulogu, ndidayambitsa chida Weave Flux, zomwe zimakulolani kuti mupereke ma templates kumalo osungirako a Git ndikusintha zotumizidwa pambuyo pa kudzipereka kulikonse kapena kukankhira chidebecho. Zomwe ndakumana nazo zikuwonetsa kuti chida ichi ndi chimodzi mwazinthu zazikulu zolimbikitsira njira yokoka, choncho nthawi zambiri ndimatchula. Ngati mukufuna kudziwa zambiri za momwe mungagwiritsire ntchito, apa ulalo ku nkhani.

NB! Ubwino wonse wogwiritsa ntchito GitOps umakhalabe womwewo panjira zonse ziwiri.

Kukoka potengera njira

GitOps: Kufananiza Njira Zokoka ndi Kukankhira

Njira yokoka imachokera pa mfundo yakuti zosintha zonse zimagwiritsidwa ntchito kuchokera mkati mwa masango. Pali wogwiritsa ntchito m'gululi yemwe amayang'ana nthawi zonse zosungirako za Git ndi Docker Registry. Ngati kusintha kulikonse kukuchitika kwa iwo, chikhalidwe cha masango chimasinthidwa mkati. Njirayi nthawi zambiri imawonedwa ngati yotetezeka kwambiri, chifukwa palibe kasitomala wakunja yemwe ali ndi ufulu wowongolera magulu.

Zotsatira:

  1. Palibe kasitomala wakunja yemwe ali ndi ufulu wosintha gulu; zosintha zonse zimatulutsidwa mkati.
  2. Zida zina zimakulolani kuti mulunzanitse zosintha za Helm chart ndikuzilumikiza ku gululo.
  3. Docker Registry ikhoza kufufuzidwa kuti ipeze mitundu yatsopano. Ngati chithunzi chatsopano chikupezeka, chosungira cha Git ndi kutumizidwa kumasinthidwa kukhala mtundu watsopano.
  4. Zida zokoka zitha kugawidwa m'malo osiyanasiyana okhala ndi nkhokwe zosiyanasiyana za Git ndi zilolezo. Chifukwa cha ichi, chitsanzo cha multitenant chingagwiritsidwe ntchito. Mwachitsanzo, gulu A lingagwiritse ntchito dzina la A, gulu B lingagwiritse ntchito malo a mayina B, ndipo gulu la zomangamanga lingagwiritse ntchito malo padziko lonse lapansi.
  5. Monga lamulo, zidazo ndizopepuka kwambiri.
  6. Kuphatikiza ndi zida monga woyendetsa Zinsinsi Zosindikizidwa za Bitnami, zinsinsi zitha kusungidwa zobisika munkhokwe ya Git ndikubwezeredwa mkati mwa tsango.
  7. Palibe kulumikizana ndi mapaipi a CD popeza kutumizidwa kumachitika mkati mwa gulu.

ΠœΠΈΠ½ΡƒΡΡ‹:

  1. Kuwongolera zinsinsi zotumizira kuchokera ku ma chart a Helm ndikovuta kwambiri kuposa nthawi zonse, popeza zimayamba kupangidwa mwanjira ya, titi, zinsinsi zosindikizidwa, kenako zimachotsedwa ndi wogwiritsa ntchito mkati, ndipo zitatha izi zimapezeka ku chida chokokera. Kenako mutha kuyendetsa kumasulidwa ku Helm ndi zomwe zili muzinsinsi zomwe zayikidwa kale. Njira yosavuta ndiyo kupanga chinsinsi ndi mfundo zonse za Helm zomwe zimagwiritsidwa ntchito potumiza, kuzilemba ndikuzipereka kwa Git.
  2. Mukatenga njira yokoka, mumamangiriridwa ku zida zokoka. Izi zimachepetsa kuthekera kosintha njira yotumizira mumagulu. Mwachitsanzo, Kustomize imakhala yovuta chifukwa iyenera kuthamanga ma tempuleti omaliza asanaperekedwe ku Git. Sindikunena kuti simungagwiritse ntchito zida zoimirira, koma ndizovuta kwambiri kuti muphatikizidwe munjira yanu yotumizira.

Push based njira

GitOps: Kufananiza Njira Zokoka ndi Kukankhira

Munjira yokankhira, makina akunja (makamaka mapaipi a CD) amayambitsa zotumiza ku gululo pambuyo podzipereka kumalo osungira a Git kapena ngati mapaipi am'mbuyomu a CI apambana. Mwa njira iyi, dongosololi limakhala ndi mwayi wopita kumagulu.

ΠŸΠ»ΡŽΡΡ‹:

  1. Chitetezo chimatsimikiziridwa ndi malo a Git ndikumanga mapaipi.
  2. Kutumiza ma chart a Helm ndikosavuta ndipo kumathandizira mapulagini a Helm.
  3. Zinsinsi ndizosavuta kuziwongolera chifukwa zinsinsi zitha kugwiritsidwa ntchito pamapaipi komanso zitha kusungidwa zobisika mu Git (kutengera zomwe wogwiritsa ntchito amakonda).
  4. Palibe kulumikizana ndi chida china, popeza mtundu uliwonse ungagwiritsidwe ntchito.
  5. Zosintha zamtundu wa Container zitha kuyambitsidwa ndi mapaipi omanga.

ΠœΠΈΠ½ΡƒΡΡ‹:

  1. Deta yofikira ma cluster ili mkati mwa dongosolo lomanga.
  2. Kukonzanso zotengera zotumizira kumakhala kosavuta ndi njira yokoka.
  3. Kudalira kwakukulu pamakina a CD, popeza mapaipi omwe timafunikira mwina adalembedwa koyambirira kwa Gitlab Runners, ndiyeno gululo likuganiza zosamukira ku Azure DevOps kapena Jenkins ... ndipo liyenera kusamuka kuchuluka kwa mapaipi omanga.

Zotsatira: Kankhani Kapena Kokani?

Monga momwe zimakhalira nthawi zambiri, njira iliyonse ili ndi ubwino ndi kuipa kwake. Ntchito zina zimakhala zosavuta kuzikwaniritsa ndi chimodzi komanso zovuta ndi zina. Poyamba ndinali kupanga deployments pamanja, koma nditapeza zolemba zingapo za Weave Flux, ndinaganiza zokhazikitsa njira za GitOps pama projekiti onse. Kwa ma tempuleti oyambira izi zinali zophweka, koma kenako ndinayamba kuvutika ndi ma chart a Helm. Panthawiyo, Weave Flux idangopereka mtundu wamba wa Helm Chart Operator, koma ngakhale pano ntchito zina ndizovuta kwambiri chifukwa chofuna kupanga zinsinsi pamanja ndikuzigwiritsa ntchito. Mutha kunena kuti njira yokoka ndiyotetezeka kwambiri chifukwa zidziwitso zamagulu sizipezeka kunja kwa tsango, ndikupangitsa kuti ikhale yotetezeka kwambiri kotero kuti ndiyofunika kuchitapo kanthu.

Nditaganizira pang’ono, ndinafika pozindikira kuti sizili choncho. Ngati tilankhula za zigawo zomwe zimafunikira chitetezo chokwanira, mndandandawu uphatikiza kusungirako chinsinsi, makina a CI/CD, ndi ma Git repositories. Zomwe zili mkati mwawo ndizowopsa kwambiri ndipo zimafunikira chitetezo chokwanira. Kuphatikiza apo, ngati wina alowa m'nkhokwe yanu ya Git ndikukankhira kachidindo pamenepo, atha kuyika chilichonse chomwe angafune (kaya ndikukoka kapena kukankha) ndikulowetsamo machitidwe amgululo. Chifukwa chake, zigawo zofunika kwambiri zomwe ziyenera kutetezedwa ndizosungirako za Git ndi machitidwe a CI / CD, osati zidziwitso zamagulu. Ngati muli ndi ndondomeko zokonzedwa bwino ndi zoyendetsera chitetezo cha mitundu iyi ya machitidwe, ndipo zizindikiro zamagulu zimangotengedwa mu mapaipi monga zinsinsi, chitetezo chowonjezera cha njira yokoka sichingakhale chofunikira monga momwe ankaganizira poyamba.

Chifukwa chake, ngati njira yokoka imakhala yovutirapo kwambiri ndipo sikupereka phindu lachitetezo, kodi sizomveka kugwiritsa ntchito njira yokankhira yokha? Koma wina angatsutse kuti mu njira yokankhira mumamangirizidwa kwambiri ku dongosolo la CD ndipo, mwinamwake, ndi bwino kuti musachite izi kuti zikhale zosavuta kuti muzitha kusamuka m'tsogolomu.

Malingaliro anga (monga nthawi zonse), muyenera kugwiritsa ntchito zomwe zili zoyenera kwambiri pazochitika zinazake kapena kuphatikiza. Payekha, ndimagwiritsa ntchito njira zonse ziwiri: Weave Flux kwa deployments kukoka-based deployments makamaka monga ntchito zathu, ndi kukankha njira ndi Helm ndi mapulagini, zomwe zimapangitsa kukhala kosavuta kugwiritsa Helm matchati ku tsango ndi kukulolani kulenga zinsinsi mopanda malire. Ndikuganiza kuti sipadzakhalanso yankho limodzi loyenera pazochitika zonse, chifukwa nthawi zonse pamakhala ma nuances ambiri ndipo zimadalira ntchito yeniyeni. Zomwe zikunenedwa, ndikupangira GitOps - zimapangitsa moyo kukhala wosavuta komanso kumapangitsa chitetezo.

Ndikukhulupirira kuti zomwe ndakumana nazo pamutuwu zikuthandizani kusankha njira yomwe ili yoyenera kwambiri pamtundu wanu wotumizira, ndipo ndingasangalale kumva malingaliro anu.

PS Note kuchokera kwa womasulira

Choyipa cha mtundu wokoka ndikuti ndizovuta kuyika mawonekedwe owonetsedwa mu Git, koma palibe cholakwika kuti mapaipi a CD mumtundu wokoka amakhala padera ndi kutulutsa ndipo amakhala payipi yagulu. Ikani mosalekeza. Chifukwa chake, kuyesetsa kochulukirapo kudzafunika kuti atengere udindo wawo kuchokera kuzinthu zonse zotumizidwa ndikupereka mwayi wopeza zipika / mawonekedwe, makamaka potengera dongosolo la CD.

M'lingaliro ili, chitsanzo chokankhira chimatilola kuti tipereke zitsimikizo zina za kutulutsidwa, chifukwa moyo wa payipi ukhoza kukhala wofanana ndi moyo wa kutulutsa.

Tidayesa mitundu yonseyi ndipo tidafika pamalingaliro ofanana ndi omwe adalemba nkhaniyi:

  1. Mtundu wokoka ndiwoyenera kuti tikonze zosintha zamakina pamagulu ambiri (onani. nkhani yokhudza addon-operator).
  2. Mtundu wokankhira wozikidwa pa GitLab CI ndiwoyenera kutulutsa mapulogalamu pogwiritsa ntchito ma chart a Helm. Pa nthawi yomweyi, kutulutsidwa kwa kutumizidwa mkati mwa mapaipi kumayang'aniridwa pogwiritsa ntchito chida werf. Mwa njira, mu gawo la polojekiti yathuyi, tidamva "GitOps" nthawi zonse tikamakambirana za zovuta zamainjiniya a DevOps pamalo athu a KubeCon Europe'19.

PPS kuchokera kwa womasulira

Werenganinso pa blog yathu:

Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu. Lowani muakauntichonde.

Kodi mukugwiritsa ntchito GitOps?

  • Inde, kokerani njira

  • Inde, kankhani

  • Inde, kukoka + kukankha

  • Inde, chinachake

  • No

Ogwiritsa 30 adavota. Ogwiritsa ntchito 10 adakana.

Source: www.habr.com

Kuwonjezera ndemanga