GitOps: Papiso ea Mekhoa ea ho hula le ea Push

Hlokomela. fetolela.: Sechabeng sa Kubernetes, mokhoa o bitsoang GitOps o ntse o tsebahala, joalo ka ha re bone, ho etela KubeCon Europe 2019. Lereo lena e ne e le la morao tjena qapa ka hlooho ea Weaveworks - Alexis Richardson - mme e bolela tšebeliso ea lisebelisoa tse tloaelehileng ho baetsi (haholo-holo Git, ka hona lebitso) ho rarolla mathata a ts'ebetso. Haholo-holo, re bua ka ts'ebetso ea Kubernetes ka ho boloka litlhophiso tsa eona ho Git le ho iketsetsa liphetoho ho sehlopha. Matthias Jg o bua ka mekhoa e 'meli ea phatlalatso ena sehloohong sena.

GitOps: Papiso ea Mekhoa ea ho hula le ea Push

Selemong se fetileng (ha e le hantle, sena se etsahetse ka Phato 2017 - approx. transl.) Ho na le mokhoa o mocha oa ho tsamaisa lits'ebetso ho Kubernetes. E bitsoa GitOps, 'me e ipapisitse le mohopolo oa mantlha oa hore liphetolelo tsa thomello li lateloa sebakeng se sireletsehileng sa polokelo ea Git.

Melemo e ka sehloohong ea mokhoa ona ke e latelang::

  1. Phetolelo ea ho tsamaisa le ho fetola nalane. Boemo ba sehlopha sohle bo bolokiloe sebakeng sa polokelo ea Git, 'me lisebelisoa li ntlafatsoa feela ka boitlamo. Ntle le moo, liphetoho tsohle li ka lateloa ho sebelisoa nalane ea boitlamo.
  2. Li-rollback tse sebelisang litaelo tse tloaelehileng tsa Git. E bonolo git reset e u lumella ho etsa liphetoho ho li-deployments; linaha tse fetileng li lula li le teng.
  3. Taolo ea phihlello e se e loketse. Ka tloaelo, sistimi ea Git e na le lintlha tse ngata tse hlokolosi, kahoo lik'hamphani tse ngata li ela hloko ka ho khetheha ho e sireletsa. Ka hona, ts'ireletso ena e sebetsa le lits'ebetsong tse nang le li-deployments.
  4. Maano a ho Tsamaisa. Litsamaiso tse ngata tsa Git li tšehetsa maano a lekala-ka-ka mohlala, likopo feela tsa ho hula li ka ntlafatsa master, 'me liphetoho li tlameha ho hlahlojoa le ho amoheloa ke setho se seng sa sehlopha. Joalo ka taolo ea phihlello, melaoana e ts'oanang e sebetsa ho lintlafatso tsa thomello.

Joalokaha u bona, ho na le melemo e mengata ho mokhoa oa GitOps. Selemong se fetileng, mekhoa e 'meli e fumane botumo bo khethehileng. E 'ngoe e thehiloe ho push, e' ngoe e thehiloe ho hula. Pele re li sheba, a re qaleng ka ho sheba hore na li-deployments tsa Kubernetes li shebahala joang.

Mekhoa ea ho Tsamaisa

Lilemong tsa morao tjena, mekhoa le lisebelisoa tse fapaneng tsa ho romelloa li thehiloe Kubernetes:

  1. E ipapisitse le litempele tsa tlhaho tsa Kubernetes/Kustomize. Ena ke eona tsela e bonolo ka ho fetisisa ea ho kenya lits'ebetso ho Kubernetes. Moqapi o theha lifaele tsa YAML tsa mantlha ebe oa li sebelisa. Ho tlosa ho ngola litempele tse tšoanang khafetsa, Kustomize e ile ea ntlafatsoa (e fetolela litempele tsa Kubernetes hore e be li-module). Hlokomela. fetolela.: Kustomize e kenyelelitsoe ho kubectl le Ho lokolloa ha Kubernetes 1.14.
  2. Lichate tsa Helm. Lits'oants'o tsa Helm li u lumella ho etsa lihlopha tsa litempele, li-container tsa init, li-sidecars, joalo-joalo, tse sebelisetsoang ho tsamaisa lits'ebetso tse nang le likhetho tse feto-fetohang ho feta ka mokhoa o thehiloeng ho thempleite. Mokhoa ona o ipapisitse le lifaele tsa YAML tsa template. Helm e li tlatsa ka liparamente tse fapaneng ebe e li romella ho Tiller, e leng karolo ea sehlopha e li fetisetsang sehlopheng mme e lumella lintlafatso le li-rollback. Ntho ea bohlokoa ke hore Helm ha e le hantle e kenya litekanyetso tse lakatsehang litempeleng ebe e li sebelisa ka tsela e ts'oanang le eo e etsoang ka mokhoa oa setso. (bala haholoanyane ka hore na e sebetsa joang le hore na u ka e sebelisa joang ho rona sengoloa sa Helm - hoo e ka bang. fetolela.). Ho na le mefuta e mengata e fapaneng ea lichate tsa Helm tse entsoeng esale pele tse koahelang mesebetsi e mengata.
  3. Mefuta e meng ea lisebelisoa. Ho na le lisebelisoa tse ngata tse fapaneng. Seo kaofela ba tšoanang ka sona ke hore ba fetola lifaele tsa template hore e be lifaele tsa YAML tse baloang ho Kubernetes ebe ba li sebelisa.

Mosebetsing oa rona, re lula re sebelisa lichate tsa Helm bakeng sa lisebelisoa tsa bohlokoa (kaha li na le lintho tse ngata tse seng li itokisitse, tse nolofaletsang bophelo) le lifaele tse "hloekileng" tsa Kubernetes YAML bakeng sa ho tsamaisa lits'ebetso tsa rona.

Hula & Sututsa

Ho e 'ngoe ea li-blog tsa ka tsa morao-rao, ke hlahisitse sesebelisoa Weave Flux, e u lumellang ho etsa litempele sebakeng sa polokelo ea Git le ho nchafatsa thomello kamora boitlamo bo bong le bo bong kapa ho sututsa setshelo. Phihlelo ea ka e bontša hore sesebelisoa sena ke e 'ngoe ea tse ka sehloohong ho khothalletsang mokhoa oa ho hula, kahoo hangata ke tla bua ka eona. Haeba u batla ho tseba haholoanyane ka mokhoa oa ho e sebelisa, mona link to article.

NB! Melemo eohle ea ho sebelisa GitOps e lula e tšoana bakeng sa mekhoa ka bobeli.

Hula e thehiloeng mokhoa

GitOps: Papiso ea Mekhoa ea ho hula le ea Push

Mokhoa oa ho hula o ipapisitse le taba ea hore liphetoho tsohle li sebelisoa ho tsoa ka har'a sehlopha. Ho na le opareitara kahare ho sehlopha ea lulang a lekola polokelo ea Registry ea Git le Docker. Haeba liphetoho leha e le life li ba hlahela, boemo ba sehlopha bo ntlafatsoa ka hare. Ts'ebetso ena ka kakaretso e nkuoa e sireletsehile haholo, kaha ha ho moreki oa kantle ea nang le phihlello ea litokelo tsa batsamaisi ba lihlopha.

Melemo:

  1. Ha ho moreki oa kantle ea nang le litokelo tsa ho etsa liphetoho sehlopheng; lintlafatso tsohle li hlahisoa ho tsoa kahare.
  2. Lisebelisoa tse ling li boetse li u lumella ho hokahanya lintlafatso tsa chate ea Helm le ho li hokahanya le sehlopha.
  3. Registry ea Docker e ka hlahlojoa bakeng sa mefuta e mecha. Haeba setšoantšo se secha se fumaneha, polokelo ea Git le phepelo li ntlafatsoa ho mofuta o mocha.
  4. Lisebelisoa tsa ho hula li ka ajoa libakeng tse fapaneng tsa mabitso ka libaka tse fapaneng tsa polokelo ea Git le tumello. Ka lebaka la sena, ho ka sebelisoa mohlala oa multitenant. Ka mohlala, sehlopha sa A se ka sebelisa sebaka sa mabitso A, sehlopha sa B se ka sebelisa sebaka sa mabitso B, 'me sehlopha sa litšebeletso tsa motheo se ka sebelisa sebaka sa lefats'e.
  5. E le molao, lisebelisoa li bobebe haholo.
  6. E kopantsoe le lisebelisoa tse kang opareitara Liphiri tse Tiisitsoeng tsa Bitnami, liphiri li ka bolokoa li patiloe polokelong ea Git ebe li khutlisoa ka har'a sehlopha.
  7. Ha ho na khokahano ho liphaephe tsa CD kaha li-deployments li etsahala ka har'a sehlopha.

Минусы:

  1. Ho laola liphiri tsa ho romelloa ho tloha lichate tsa Helm ho thata ho feta tse tloaelehileng, kaha pele li tlameha ho hlahisoa ka mokhoa oa, ho re, liphiri tse tiisitsoeng, ebe li hlakoloa ke opareitara ea ka hare, 'me feela ka mor'a moo li fumaneha ho sesebelisoa sa ho hula. Ebe o ka tsamaisa tokollo ho Helm ka boleng ba liphiri tse seng li kentsoe. Mokhoa o bonolo ka ho fetisisa ke ho theha lekunutu ka litekanyetso tsohle tsa Helm tse sebelisoang ho romelloa, ho li hlakola le ho li kenya ho Git.
  2. Ha u nka mokhoa oa ho hula, u tlameletsoe ho lithulusi tsa ho hula. Sena se fokotsa bokhoni ba ho hlophisa mokhoa oa ho tsamaisa ka mokhoa o ikhethileng ka har'a sehlopha. Mohlala, Kustomize e rarahane ke taba ea hore e tlameha ho sebetsa pele litempele tsa ho qetela li etsoa ho Git. Ha ke re u ke ke ua sebelisa lisebelisoa tse ikemetseng, empa li thata haholo ho li kenyelletsa ts'ebetsong ea hau ea ho tsamaisa.

Mokhoa o thehiloeng ho push

GitOps: Papiso ea Mekhoa ea ho hula le ea Push

Mothating oa ho sutumelletsa, sistimi e kantle (haholo-holo liphaephe tsa CD) e qala lipehelo ho sehlopha ka mor'a boitlamo ba polokelo ea Git kapa haeba phaephe ea pele ea CI e atlehile. Ka mokhoa ona, sistimi e na le phihlello ea sehlopha.

Плюсы:

  1. Tšireletso e khethoa ke polokelo ea Git le ho haha ​​​​peipi.
  2. Ho tsamaisa lichate tsa Helm ho bonolo ebile ho ts'ehetsa li-plugins tsa Helm.
  3. Liphiri li bonolo ho li laola hobane liphiri li ka sebelisoa liphaepheng 'me li ka bolokoa li ngotsoe ka mokhoa o patiloeng ho Git (ho itšetlehile ka khetho ea mosebedisi).
  4. Ha ho na khokahano ho sesebelisoa se itseng, kaha mofuta ofe kapa ofe o ka sebelisoa.
  5. Lintlafatso tsa mofuta oa Container li ka qalisoa ke lipeipi tsa kaho.

Минусы:

  1. Lintlha tsa phihlello ea sehlopha li ka har'a sistimi ea kaho.
  2. Ho nchafatsa lijana tsa ho romelloa ho ntse ho le bonolo ka mokhoa oa ho hula.
  3. Ho itšetleha haholo ka tsamaiso ea CD, kaha liphaephe tseo re li hlokang li ka 'na tsa ngoloa qalong bakeng sa Gitlab Runners, ebe sehlopha se etsa qeto ea ho fallela Azure DevOps kapa Jenkins ... 'me se tla tlameha ho falla palo e kholo ea liphaephe tsa kaho.

Liphetho: Sututsa kapa Hula?

Joalokaha ho tloaelehile, mokhoa o mong le o mong o na le melemo le mathata a oona. Mesebetsi e meng e bonolo ho e etsa ka e 'ngoe 'me e thata le e mong. Qalong ke ne ke etsa li-deployments ka letsoho, empa ka mor'a hore ke fumane lihlooho tse 'maloa mabapi le Weave Flux, ke ile ka etsa qeto ea ho kenya ts'ebetsong mekhoa ea GitOps bakeng sa merero eohle. Bakeng sa litempele tsa mantlha sena se ne se le bonolo, empa joale ke ile ka qala ho kena mathateng ka lichate tsa Helm. Ka nako eo, Weave Flux e ne e fana feela ka mofuta oa rudimentary oa Helm Chart Operator, empa le hona joale mesebetsi e meng e thata haholo ka lebaka la tlhoko ea ho theha liphiri le ho li sebelisa. U ka pheha khang ea hore mokhoa oa ho hula o sireletsehile haholo hobane lintlha tsa sehlopha ha li fumanehe ka ntle ho sehlopha, ho etsa hore e sireletsehe haholo hoo e lokelang ho etsoa boiteko bo eketsehileng.

Ka mor’a ho nahana, ke ile ka fihlela qeto e sa lebelloang ea hore ha ho joalo. Haeba re bua ka likarolo tse hlokang tšireletso e phahameng, lenane lena le tla kenyelletsa polokelo ea lekunutu, litsamaiso tsa CI/CD, le polokelo ea Git. Boitsebiso bo ka hare ho bona bo kotsing haholo 'me bo hloka tšireletso e phahameng. Ho feta moo, haeba motho e mong a kena polokelong ea hau ea Git 'me a khona ho sutumetsa khoutu moo, a ka sebelisa eng kapa eng eo a e batlang (ebang ke ho hula kapa ho sutumetsa)' me a kenella lits'ebetsong tsa sehlopha. Kahoo, likarolo tsa bohlokoa ka ho fetisisa tse hlokang ho sireletsoa ke polokelo ea Git le litsamaiso tsa CI/CD, eseng lintlha tsa sehlopha. Haeba u na le maano a hlophisitsoeng hantle le litsamaiso tsa ts'ireletso bakeng sa mefuta ena ea litsamaiso, 'me lintlha tsa lihlopha li ntšoa feela liphaepheng e le liphiri, tšireletso e eketsehileng ea mokhoa oa ho hula e ka' na ea se ke ea e-ba ea bohlokoa joalokaha ho ne ho nahanoa qalong.

Kahoo, haeba mokhoa oa ho hula o sebetsa haholo 'me o sa fane ka molemo oa tšireletso, na hase ho utloahalang ho sebelisa mokhoa oa ho sutumetsa feela? Empa motho e mong a ka 'na a pheha khang ea hore ka mokhoa oa ho sutumetsa o tlameletsoe haholo tsamaisong ea CD mme, mohlomong, ho molemo hore u se ke ua etsa sena e le hore ho ka ba bonolo ho phethahatsa ho falla nakong e tlang.

Ka maikutlo a ka (joalo ka kamehla), o lokela ho sebelisa se loketseng ka ho fetisisa nyeoeng e itseng kapa ho kopanya. Ka bonna, ke sebelisa mekhoa e 'meli: Weave Flux bakeng sa li-deployments tse thehiloeng ho hula tseo boholo ba tsona li kenyelletsang litšebeletso tsa rona, le mokhoa oa ho sutumetsa ka Helm le li-plugins, tse etsang hore ho be bonolo ho sebelisa lichate tsa Helm ho sehlopha le ho u lumella ho etsa liphiri ka mokhoa o tsitsitseng. Ke nahana hore ha ho mohla ho tla ba le tharollo e le 'ngoe e loketseng linyeoe tsohle, hobane kamehla ho na le li-nuances tse ngata' me li itšetlehile ka kopo e khethehileng. Ha ho buuoa joalo, ke khothaletsa GitOps haholo - e nolofatsa bophelo le ho ntlafatsa ts'ireletso.

Ke tšepa hore phihlelo ea ka sehloohong sena e tla u thusa ho etsa qeto ea hore na ke mokhoa ofe o loketseng mofuta oa hau oa ho romelloa, 'me nka thabela ho utloa maikutlo a hau.

PS Note ho tsoa ho mofetoleli

Taba e nyahamisang ea mohlala oa ho hula ke hore ho thata ho beha lipontšo tse hlahisitsoeng ho Git, empa ha ho letho le lebe hore pipeline ea CD e ka har'a mofuta oa hula e phela ka thoko ho phallo mme ha e le hantle e fetoha phaephe ea sehlopha. Etsa kopo e sa khaotseng. Ka hona, ho tla hlokahala boiteko bo eketsehileng ba ho bokella boemo ba bona ho tsoa hohle ho sebelisoa 'me ka tsela e itseng ba fane ka phihlelo ea li-log / boemo, haholo-holo mabapi le tsamaiso ea CD.

Ka kutloisiso ena, mohlala oa push o re lumella ho fana ka bonyane litiiso tse itseng tsa ho qala, hobane bophelo bohle ba pipeline bo ka etsoa bo lekana le bophelo bohle ba ho phatlalatsoa.

Re lekile mehlala ka bobeli mme ra fihlela liqeto tse tšoanang le tsa mongoli oa sengoloa:

  1. Mohlala oa ho hula o loketse hore re hlophise lintlafatso tsa likarolo tsa sistimi ho palo e kholo ea lihlopha (bona. sengoloa se buang ka addon-operator).
  2. Moetso oa push o thehiloeng ho GitLab CI o loketse hantle bakeng sa ho tsamaisa lits'ebetso o sebelisa lichate tsa Helm. Ka nako e ts'oanang, ho phatlalatsoa ha li-deployments ka har'a lipeipi ho hlahlojoa ho sebelisoa sesebelisoa werf. Ka tsela, moelelong oa morero ona oa rona, re utloile "GitOps" e sa khaotseng ha re buisana ka mathata a hatellang a baenjiniere ba DevOps sebakeng sa rona sa KubeCon Europe'19.

PPS ho tsoa ho mofetoleli

Bala hape ho blog ea rona:

Ke basebelisi ba ngolisitsoeng feela ba ka kenyang letsoho phuputsong. kenaka kopo.

Na u sebelisa GitOps?

  • E, hula katamelo

  • E, sututsa

  • E, hula + sututsa

  • E, ntho e 'ngoe hape

  • No

Basebelisi ba 30 ba ile ba khetha. Basebelisi ba 10 ba ile ba hana.

Source: www.habr.com

Eketsa ka tlhaloso