GitOps: Kuenzanisa kweDhonza uye Push Nzira

Cherechedza. transl.: Munharaunda yeKubernetes, maitiro anonzi GitOps ari kuwana mukurumbira zviri pachena, sezvatakaona isu pachedu, kushanya KubeCon Europe 2019. Iri izwi raive richangobva kuitika invented nemukuru weWeaveworks - Alexis Richardson - uye zvinoreva kushandiswa kwemidziyo inozivikanwa kune vanogadzira (kunyanya Git, saka zita) kugadzirisa matambudziko ekushanda. Kunyanya, isu tiri kutaura nezve mashandiro eKubernetes nekuchengetedza zvigadziriso zvayo muGit uye otomatiki kuburitsa shanduko kune sumbu. Matthias Jg anotaura nezve nzira mbiri dzekuburitsa uku muchinyorwa chino.

GitOps: Kuenzanisa kweDhonza uye Push Nzira

Gore rapera (chaizvoizvo, zviri pamutemo izvi zvakaitika muna Nyamavhuvhu 2017 - approx. transl.) Pane nzira nyowani yekuisa zvikumbiro muKubernetes. Inonzi GitOps, uye yakavakirwa pane yakakosha pfungwa yekuti deployment versions inoteverwa munzvimbo yakachengeteka yeGit repository.

Zvakanakira nzira iyi ndezvizvi::

  1. Deployment shanduro uye kuchinja nhoroondo. Mamiriro eboka rose anochengetwa muGit repository, uye deployments inovandudzwa chete kuburikidza nekuita. Uye zvakare, shanduko dzese dzinogona kuteverwa uchishandisa iyo nhoroondo yekuzvipira.
  2. Rollbacks uchishandisa yakajairika Git mirairo. Simple git reset inokubvumira kuti ugadzirise zvakare shanduko mu deployments; nyika dzakapfuura dzinogara dziripo.
  3. Ready access control. Kazhinji, Git system ine data rakawanda rinonzwa, saka makambani mazhinji anotarisisa kuidzivirira. Naizvozvo, kudzivirira uku kunoshandawo kune mashandiro ane deployments.
  4. Mitemo yekuendesa. Mazhinji maGit masisitimu anotsigira bazi-ne-bazi marongero-semuenzaniso, zvikumbiro zvekudhonza chete zvinogona kugadzirisa tenzi, uye shanduko dzinofanirwa kuongororwa nekugamuchirwa neimwe nhengo yechikwata. Sezvakaita nekutonga kwekuwana, iwowo marongero anoshanda kune deployment updates.

Sezvauri kuona, kune akawanda mabhenefiti kune iyo GitOps nzira. Kwegore rapfuura, nzira mbiri dzakanyanya kufarirwa. Imwe ndeye push based, imwe yacho inodhonza based. Tisati tavatarisa, ngatitangei tione kuti Kubernetes deployments inotaridzika sei.

Deployment Nzira

Mumakore achangopfuura, nzira dzakasiyana-siyana uye maturusi ekutumirwa akaiswa muKubernetes:

  1. Kubva pane zvekuzvarwa Kubernetes/Kustomize matemplate. Iyi ndiyo nzira iri nyore yekuisa zvikumbiro paKubernetes. Mugadziri anogadzira iwo ekutanga YAML mafaera uye anoashandisa. Kuti ubvise kugara uchinyorazve matemplate akafanana, Kustomize yakagadziridzwa (inoshandura Kubernetes matemplate kuita mamodule). Cherechedza. transl.: Kustomize yakabatanidzwa mu kubectl ne kuburitswa kweKubernetes 1.14.
  2. Helm Charts. Helm machati anotendera iwe kuti ugadzire seti yematemplate, init midziyo, sidecars, nezvimwewo, ayo anoshandiswa kuendesa maapplication ane anochinjika magadzirirwo sarudzo pane ari template-yakavakirwa maitiro. Iyi nzira yakavakirwa pamatemplate eYAML mafaera. Helm inoazadza neakasiyana ma parameter obva aatumira kuTiller, chikamu chesumbu chinovaendesa kune cluster uye chinobvumira zvigadziriso uye kudzoreredza. Chinhu chakakosha ndechekuti Helm inongoisa hunhu hunodiwa mumatemplate uye wobva waaisa nenzira imwechete sezvainoitwa nenzira yechinyakare. (verenga zvakawanda pamusoro pekuti zvese zvinoshanda sei uye kuti ungaishandisa sei mune yedu chinyorwa naHelm - approx. transl.). Kune akawanda akasiyana-siyana akagadzirira-akagadzirwa Helm machati anovhara akawanda mabasa.
  3. Zvimwe Zvishandiso. Kune akawanda mamwe maturusi. Chavanofanana vese ndechekuti vanoshandura mamwe mafaera etemplate kuita Kubernetes-inoverengeka YAML mafaera vobva vaashandisa.

Mubasa redu, isu tinogara tichishandisa Helm machati ezvishandiso zvakakosha (sezvo vaine zvinhu zvakawanda zvakatogadzirira, izvo zvinoita kuti hupenyu huve nyore) uye "akachena" Kubernetes YAML mafaera ekutumira edu maapplication.

Dhonza & Push

Mune imwe yezvangu zvazvino blog blog, ndakaunza chishandiso Weave Flux, iyo inokutendera kuti upe matemplate kuGit repository uye nekuvandudza kutumirwa mushure mekuita kwega kwega kana kusunda kwemudziyo. Chiitiko changu chinoratidza kuti chishandiso ichi ndechimwe chezvakakosha mukusimudzira nzira yekudhonza, saka ini ndinowanzo taura nezvayo. Kana iwe uchida kuziva zvakawanda nezve mashandisiro acho, pano link kuchinyorwa.

NB! Ese mabhenefiti ekushandisa GitOps anoramba akafanana kune ese maitiro.

Dhonza yakavakirwa nzira

GitOps: Kuenzanisa kweDhonza uye Push Nzira

Iyo yekudhonza nzira yakavakirwa pachokwadi chekuti shanduko dzese dzinoshandiswa kubva mukati mesumbu. Kune anoshanda mukati mechikwata anogara achitarisa yakabatana Git uye Docker Registry repositori. Kana chero shanduko dzikaitika kwavari, mamiriro esumbu anovandudzwa mukati. Iyi nzira inowanzoonekwa seyakachengeteka zvakanyanya, sezvo pasina mutengi wekunze anokwanisa kuwana kodzero dze cluster administrator.

Pros:

  1. Hapana mutengi wekunze ane kodzero dzekuchinja kune cluster; zvese zvinogadziridzwa zvinoburitswa kubva mukati.
  2. Mamwe maturusi zvakare anobvumidza iwe kuwiriranisa Helm chati magadzirirwo uye oabatanidza kune sumbu.
  3. Docker Registry inogona kuongororwa kuti iwane shanduro itsva. Kana mufananidzo mutsva uripo, iyo Git repository uye deployment inovandudzwa kune iyo nyowani vhezheni.
  4. Dhonza maturusi anogona kugoverwa munzvimbo dzakasiyana dzemazita ane akasiyana Git repositories uye mvumo. Nekuda kweizvi, multitenant modhi inogona kushandiswa. Semuenzaniso, timu A inogona kushandisa namespace A, timu B inogona kushandisa namespace B, uye timu yezvivakwa inogona kushandisa nzvimbo yepasirese.
  5. Sezvo mutemo, zvishandiso zvakanyanya kureruka.
  6. Yakasanganiswa nemidziyo yakadai semushandi Bitnami Yakavharwa Zvakavanzika, zvakavanzika zvinogona kuchengetwa zvakavharidzirwa muGit repository uye kudzoserwa mukati mesumbu.
  7. Iko hakuna chinongedzo kumapaipi eCD sezvo kutumirwa kunoitika mukati mesumbu.

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

  1. Kugadzirisa zvakavanzika zvekutumira kubva kuHelm machati kwakaoma kupfuura akajairwa, sezvo anotanga kugadzirwa nenzira, toti, zvakavharwa zvakavanzika, zvobva zvadhindwa nemushandisi wemukati, uye chete mushure mezvo zvinozowanikwa kune yekudhonza chishandiso. Ipapo iwe unogona kumhanyisa kuburitswa muHelm nehunhu mune zvakavanzika zvakatoiswa. Nzira iri nyore ndeyekugadzira chakavanzika ine ese Helm tsika dzinoshandiswa kuendesa, decrypt uye uzviise kuGit.
  2. Paunotora nzira yekudhonza, unosungirirwa kudhonza maturusi. Izvi zvinodzikamisa kugona kugadzirisa maitiro ekutumira muchikwata. Semuenzaniso, Kustomize inoomeswa nenyaya yekuti inofanirwa kumhanya matemplate ekupedzisira asati apihwa kuGit. Handisi kuti haugone kushandisa maturusi akamira, asi iwo akanyanya kuoma kubatanidza mukuita kwako kwekutumira.

Push based approach

GitOps: Kuenzanisa kweDhonza uye Push Nzira

Munzira yekusundidzira, yekunze system (kunyanya maCD mapaipi) inotangisa deployments kune cluster mushure mekuzvipira kune Git repository kana kana yapfuura CI pombi yakabudirira. Nenzira iyi, iyo system inokwanisa kuwana cluster.

ΠŸΠ»ΡŽΡΡ‹:

  1. Chengetedzo inotemerwa neGit repository uye kuvaka pombi.
  2. Kuendesa Helm machati kuri nyore uye kunotsigira Helm plugins.
  3. Zvakavanzika zviri nyore kubata nekuti zvakavanzika zvinogona kushandiswa mumapaipi uye zvakare zvinogona kuchengetwa zvakavharirwa muGit (zvichienderana nezvido zvemushandisi).
  4. Iko hakuna kubatana kune chimwe chishandiso, sezvo chero mhando inogona kushandiswa.
  5. Container vhezheni inogadziridza inogona kutangwa nepombi yekuvaka.

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

  1. Iyo cluster yekuwana data iri mukati mekuvaka system.
  2. Kuvandudza midziyo yekuendesa kuchiri nyore nemaitiro ekudhonza.
  3. Kunyanya kuvimba neCD system, sezvo mapaipi atinoda angave akanyorerwa Gitlab Runners, uye ipapo timu inosarudza kuenda kuAzure DevOps kana Jenkins ... uye ichafanirwa kutamisa nhamba huru yekuvaka mapaipi.

Mhinduro: Sunda kana Dhonza?

Sezvinowanzoitika, imwe neimwe nzira ine zvayakanakira nezvayakaipira. Mamwe mabasa ari nyore kuita nerimwe uye zvakanyanya kuoma nerimwe. Pakutanga ndaiita deployments nemaoko, asi mushure mekunge ndawana zvinyorwa zvishoma nezve Weave Flux, ndakafunga kuita GitOps maitiro emapurojekiti ese. Kune ekutanga matemplate izvi zvaive nyore, asi ipapo ndakatanga kumhanya mumatambudziko nemachati eHelm. Panguva iyoyo, Weave Flux yaingopa rudimentary vhezheni yeHelm Chart Operator, asi kunyangwe iye zvino mamwe mabasa akaomarara nekuda kwekuda kugadzira zvakavanzika uye kuzvishandisa. Iwe unogona kupokana kuti nzira yekudhonza yakachengeteka zvakanyanya nekuti zviratidziro zvecluster hazviwanikwe kunze kwesumbu, zvichiita kuti ive yakachengeteka zvakanyanya zvekuti inokodzera kuwedzera.

Pashure pokunge ndafunga, ndakasvika pamhedziso yaisatarisirwa kuti izvi handizvo. Kana tikataura nezvezvinhu zvinoda kuchengetedzwa kwakanyanya, runyorwa urwu ruchasanganisira kuchengetedza zvakavanzika, CI/CD masisitimu, uye Git repositori. Ruzivo rwuri mukati mavo rwakanyanya kutambudzika uye runoda kuchengetedzwa kwakanyanya. Pamusoro pezvo, kana mumwe munhu akapinda mune yako Git repository uye anogona kusundira kodhi ipapo, vanogona kuendesa chero chavanoda (kungave kudhonza kana kusunda) uye kupinza masisitimu emasumbu. Nekudaro, izvo zvakanyanya kukosha izvo zvinoda kuchengetedzwa ndeye Git repository uye CI/CD masisitimu, kwete iwo masumbu ezvitupa. Kana iwe uine yakanyatso gadziridzwa marongero uye kuchengetedzwa kwemaitiro emhando idzi masisitimu, uye zvitupa zvemasumbu zvinongoburitswa mumapaipi sezvakavanzika, iyo yakawedzerwa chengetedzo yekudhonza nzira inogona kusakosha sezvaifungwa pakutanga.

Saka, kana nzira yekudhonza iri kushanda nesimba uye isingape rubatsiro rwekuchengetedza, hazvina musoro here kushandisa nzira yekusundidzira chete? Asi mumwe munhu angapikisa kuti mukusundira nzira iwe wakasungirirwa zvakanyanya kuCD system uye, zvichida, zviri nani kusaita izvi kuitira kuti zvive nyore kuita kutama mune ramangwana.

Mune maonero angu (senguva dzose), iwe unofanirwa kushandisa iyo inonyanya kukodzera kune imwe nyaya kana kusanganisa. Ini pachangu, ini ndinoshandisa nzira mbiri: Weave Flux yekudhonza-based deployments iyo inonyanya kusanganisira yedu masevhisi, uye yekusundidzira nzira neHelm uye plugins, izvo zvinoita kuti zvive nyore kushandisa Helm machati kune sumbu uye inobvumidza iwe kugadzira zvakavanzika zvisina musono. Ini ndinofunga hakungambove nemhinduro imwe chete yakakodzera kune ese kesi, nekuti panogara paine akawanda nuances uye anoenderana neiyo chaiyo application. Izvo zviri kutaurwa, ini ndinokurudzira GitOps - inoita kuti hupenyu huve nyore uye inovandudza chengetedzo.

Ndinovimba ruzivo rwangu pamusoro penyaya iyi ruchakubatsira iwe kusarudza kuti ndeipi nzira yakanyatsokodzera kune yako mhando yekutumirwa, uye ndingafara kunzwa maonero ako.

PS Note kubva kumushanduri

Iyo yakaderera yeiyo modhi yekudhonza ndeyekuti zvakawoma kuisa rendered manifests muGit, asi hapana pazasi kuti pombi yeCD iri mudhizaini modhi inogara yakaparadzana kubva pakuburitswa uye inove chikamu chepombi. Continuous Shandisa. Naizvozvo, kutowedzera kuedza kunozodiwa kuunganidza chimiro chavo kubva kune zvese zvinotumirwa uye neimwe nzira kupa mukana kune matanda / chimiro, pamwe nekutarisa kune CD system.

Mupfungwa iyi, iyo yekusundidzira modhi inotitendera kuti tipe zvishoma zvivimbiso zvekuburitsa, nekuti hupenyu hwepombi hunogona kuitwa hwakaenzana nehupenyu hwekuburitswa.

Takaedza ese mamodheru tikasvika pamhedziso imwechete semunyori wechinyorwa:

  1. Iyo yekudhonza modhi yakakodzera kuti isu tironge zvidzoreso zvezvinhu zvesystem pane yakakura masumbu (ona. chinyorwa nezve addon-operator).
  2. Iyo yekusundidzira modhi yakavakirwa paGitLab CI inonyatso kukodzera kuburitsa maapplication uchishandisa Helm machati. Panguva imwecheteyo, kuburitswa kwekuiswa mukati mepombi kunotariswa uchishandisa chishandiso werf. Nenzira, mumamiriro ezvinhu epurojekiti yedu iyi, takanzwa nguva dzose "GitOps" patakataura nezvematambudziko eDevOps mainjiniya panzvimbo yedu kuKubeCon Europe'19.

PPS kubva kumushanduri

Verenga zvakare pablog yedu:

Vashandisi vakanyoresa chete ndivo vanogona kutora chikamu muongororo. Nyorera mu, Munogamuchirwa.

Uri kushandisa GitOps?

  • Hongu, dhonza kusvika

  • Hongu, kusunda

  • Hongu, dhonza + kusunda

  • Hongu, chimwe chinhu

  • kwete

30 vashandisi vakavhota. 10 vashandisi vakaramba.

Source: www.habr.com

Voeg