Pirms gada publicÄjÄm ievads GitOps. Toreiz mÄs dalÄ«jÄmies, kÄ Weaveworks komanda ieviesa SaaS, kas pilnÄ«bÄ balstÄ«ta uz Kubernetes, un izstrÄdÄja paraugprakses kopumu izvietoÅ”anai, pÄrvaldÄ«bai un uzraudzÄ«bai mÄkoÅa vietÄjÄ vidÄ.
DrÄ«z vien sapratÄm, ka nepiecieÅ”ams jauns apraksts, piedÄvÄjot:
Liels skaits piemÄru un stÄstu;
Specifiska GitOps definīcija;
SalÄ«dzinÄjums ar tradicionÄlo nepÄrtraukto piegÄdi.
Å ajÄ rakstÄ mÄs esam mÄÄ£inÄjuÅ”i aptvert visas Ŕīs tÄmas. Tas nodroÅ”ina atjauninÄtu ievadu par GitOps un izstrÄdÄtÄju un CI/CD perspektÄ«vu. MÄs galvenokÄrt koncentrÄjamies uz Kubernetes, lai gan modeli var vispÄrinÄt.
Iepazīstieties ar GitOps
IedomÄjies Alisi. ViÅa vada Ä¢imenes apdroÅ”inÄÅ”anu, kas piedÄvÄ veselÄ«bas, automaŔīnu, mÄjas un ceļojumu apdroÅ”inÄÅ”anu cilvÄkiem, kuri ir pÄrÄk aizÅemti, lai paÅ”i izdomÄtu lÄ«gumu smalkumus. ViÅas bizness sÄkÄs kÄ blakus projekts, kad Alise strÄdÄja bankÄ par datu zinÄtnieci. KÄdu dienu viÅa saprata, ka var izmantot uzlabotus datoru algoritmus, lai efektÄ«vÄk analizÄtu datus un formulÄtu apdroÅ”inÄÅ”anas paketes. Investori finansÄja projektu, un tagad viÅas uzÅÄmums ienes vairÄk nekÄ 20 miljonus dolÄru gadÄ un strauji aug. Å obrÄ«d tajÄ dažÄdos amatos strÄdÄ 180 darbinieki. Tas ietver tehnoloÄ£iju komandu, kas izstrÄdÄ, uztur vietni, datubÄzi un analizÄ klientu bÄzi. 60 cilvÄku lielu komandu vada uzÅÄmuma tehniskais direktors Bobs.
Boba komanda izvieto ražoÅ”anas sistÄmas mÄkonÄ«. ViÅu galvenÄs lietojumprogrammas darbojas GKE, izmantojot Google mÄkoÅa Kubernetes priekÅ”rocÄ«bas. TurklÄt viÅi savÄ darbÄ izmanto dažÄdus datu un analÄ«tikas rÄ«kus.
Ä¢imenes apdroÅ”inÄÅ”ana nedomÄja izmantot konteinerus, bet to aizrÄva Docker entuziasms. UzÅÄmums drÄ«z atklÄja, ka GKE atvieglo klasteru izvietoÅ”anu, lai pÄrbaudÄ«tu jaunas funkcijas. Jenkins for CI un Quay tika pievienoti, lai sakÄrtotu konteineru reÄ£istru, tika rakstÄ«ti skripti Jenkins, kas pÄrsÅ«tÄ«ja jaunus konteinerus un konfigurÄcijas uz GKE.
Ir pagÄjis kÄds laiks. Alise un Bobs bija vÄ«luÅ”ies par izvÄlÄtÄs pieejas veiktspÄju un tÄs ietekmi uz biznesu. Konteineru ievieÅ”ana neuzlaboja produktivitÄti tik ļoti, kÄ komanda bija cerÄjusi. Dažreiz izvietoÅ”ana tika pÄrtraukta, un nebija skaidrs, vai vainÄ«gas bija koda izmaiÅas. IzrÄdÄ«jÄs arÄ« grÅ«ti izsekot konfigurÄcijas izmaiÅÄm. Bieži bija nepiecieÅ”ams izveidot jaunu klasteru un pÄrvietot uz to lietojumprogrammas, jo tas bija vienkÄrÅ”Äkais veids, kÄ novÄrst sistÄmas radÄ«to nekÄrtÄ«bu. Alise baidÄ«jÄs, ka lietojumprogrammai attÄ«stoties, situÄcija pasliktinÄsies (turklÄt tika gatavots jauns projekts, kas balstÄ«ts uz maŔīnmÄcÄ«bu). Bobs bija automatizÄjis lielÄko daļu darba un nesaprata, kÄpÄc cauruļvads joprojÄm bija nestabils, nebija labi mÄrogots un periodiski bija nepiecieÅ”ama manuÄla iejaukÅ”anÄs?
Tad viÅi uzzinÄja par GitOps. Å is lÄmums izrÄdÄ«jÄs tieÅ”i tas, kas viÅiem bija nepiecieÅ”ams, lai pÄrliecinoÅ”i virzÄ«tos uz priekÅ”u.
Alise un Bobs gadiem ilgi ir dzirdÄjuÅ”i par Git, DevOps un infrastruktÅ«ru kÄ koda darbplÅ«smÄm. GitOps unikÄls ir tas, ka tajÄ ir ietverts paraugprakses kopums ā gan galÄ«gs, gan normatÄ«vs ā Å”o ideju Ä«stenoÅ”anai Kubernetes kontekstÄ. Å Ä« tÄma cÄlÄs vairÄkkÄrt, tostarp iekÅ”Ä Weaveworks emuÄrs.
Ä¢imenes apdroÅ”inÄÅ”ana nolemj ieviest GitOps. Tagad uzÅÄmumam ir automatizÄts darbÄ«bas modelis, kas ir savietojams ar Kubernetes un kombainiem Ätrums ar stabilitÄtejo viÅi:
atklÄja, ka komandas produktivitÄte dubultojÄs, nevienam nekļūstot trakam;
pÄrtrauca skriptu apkalpoÅ”anu. TÄ vietÄ viÅi tagad var koncentrÄties uz jaunÄm funkcijÄm un uzlabot inženierijas metodes, piemÄram, ievieÅ”ot kanÄrijas izlaiÅ”anu un uzlabojot testÄÅ”anu;
esam uzlabojuÅ”i izvietoÅ”anas procesu, lai tas reti sabojÄtos;
ieguva iespÄju atjaunot izvietoÅ”anu pÄc daļÄjÄm kļūmÄm bez manuÄlas iejaukÅ”anÄs;
pirkts lietotsŠ¾LielÄka uzticÄÅ”anÄs piegÄdes sistÄmÄm. Alise un Bobs atklÄja, ka viÅi var sadalÄ«t komandu mikropakalpojumu komandÄs, kas strÄdÄ paralÄli;
katru dienu ar katras grupas pÅ«lÄm var veikt 30-50 izmaiÅas projektÄ un izmÄÄ£inÄt jaunas metodes;
projektam ir viegli piesaistÄ«t jaunus izstrÄdÄtÄjus, kuriem ir iespÄja dažu stundu laikÄ ieviest atjauninÄjumus produkcijai, izmantojot pull pieprasÄ«jumus;
viegli iziet auditu SOC2 ietvaros (par pakalpojumu sniedzÄju atbilstÄ«bu droÅ”as datu pÄrvaldÄ«bas prasÄ«bÄm; lasiet vairÄk, piemÄram, Å”eit ā apm. tulk.).
Kas notika?
GitOps ir divas lietas:
DarbÄ«bas modelis Kubernetes un mÄkonim. Tas nodroÅ”ina paraugprakses kopumu konteineru klasteru un lietojumprogrammu izvietoÅ”anai, pÄrvaldÄ«bai un uzraudzÄ«bai. Eleganta definÄ«cija formÄ viens slaids no Luiss Faceira:
CeļŔ uz izstrÄdÄtÄju orientÄtas lietojumprogrammu pÄrvaldÄ«bas vides izveidi. MÄs izmantojam Git darbplÅ«smu gan operÄcijÄm, gan attÄ«stÄ«bai. LÅ«dzu, Åemiet vÄrÄ, ka tas neattiecas tikai uz Git push, bet arÄ« par visa CI/CD un UI/UX rÄ«ku komplekta organizÄÅ”anu.
Daži vÄrdi par Gitu
Ja neesat pazÄ«stams ar versiju kontroles sistÄmÄm un uz Git balstÄ«tu darbplÅ«smu, mÄs ļoti iesakÄm par tÄm uzzinÄt. Darbs ar zariem un vilkÅ”anas pieprasÄ«jumiem sÄkumÄ var Ŕķist melna maÄ£ija, taÄu ieguvumi ir pūļu vÄrti. Å eit labs raksts sÄkt.
KÄ darbojas Kubernetes
MÅ«su stÄstÄ Alise un Bobs pievÄrsÄs GitOps pÄc tam, kad kÄdu laiku strÄdÄja ar Kubernetes. PatieÅ”Äm, GitOps ir cieÅ”i saistÄ«ts ar Kubernetes ā tas ir uz Kubernetes balstÄ«tas infrastruktÅ«ras un lietojumprogrammu darbÄ«bas modelis.
Ko Kubernetes sniedz lietotÄjiem?
Å eit ir dažas galvenÄs funkcijas:
Kubernetes modelÄ« visu var aprakstÄ«t deklaratÄ«vÄ formÄ.
Kubernetes API serveris izmanto Å”o deklarÄciju kÄ ievadi un pÄc tam nepÄrtraukti mÄÄ£ina nogÄdÄt klasteru deklarÄcijÄ aprakstÄ«tajÄ stÄvoklÄ«.
DeklarÄcijas ir pietiekamas, lai aprakstÄ«tu un pÄrvaldÄ«tu dažÄdas darba slodzes ā ālietojumprogrammasā.
RezultÄtÄ izmaiÅas lietojumprogrammÄ un klasterÄ« notiek Å”Ädu iemeslu dÄļ:
Kad administrators veic konfigurÄcijas izmaiÅas, Kubernetes orÄ·estrÄtÄjs tÄs piemÄros klasterim, ja vien tÄ stÄvoklis ir netuvosies jaunajai konfigurÄcijai. Å is modelis darbojas jebkuram Kubernetes resursam un ir paplaÅ”inÄms, izmantojot pielÄgotÄs resursu definÄ«cijas (CRD). TÄpÄc Kubernetes izvietoÅ”anai ir Å”Ädas brÄ«niŔķīgas Ä«paŔības:
AutomatizÄcija: Kubernetes atjauninÄjumi nodroÅ”ina mehÄnismu, lai automatizÄtu graciozi un savlaicÄ«gu izmaiÅu piemÄroÅ”anas procesu.
KonverÄ£ence: Kubernetes turpinÄs mÄÄ£inÄt atjauninÄt, lÄ«dz tas bÅ«s veiksmÄ«gs.
Idempotence: AtkÄrtoti konverÄ£ences pielietojumi rada tÄdu paÅ”u rezultÄtu.
Determinisms: ja resursi ir pietiekami, atjauninÄtÄ klastera stÄvoklis ir atkarÄ«gs tikai no vÄlamÄ stÄvokļa.
KÄ darbojas GitOps
MÄs esam pietiekami daudz iemÄcÄ«juÅ”ies par Kubernetes, lai izskaidrotu, kÄ darbojas GitOps.
AtgriezÄ«simies pie Ä¢imenes apdroÅ”inÄÅ”anas mikropakalpojumu komandÄm. Kas viÅiem parasti ir jÄdara? Apskatiet zemÄk esoÅ”o sarakstu (ja kÄdi vienumi tajÄ Å”Ä·iet dÄ«vaini vai nepazÄ«stami, lÅ«dzu, nekritizÄjiet un palieciet kopÄ ar mums). Å ie ir tikai Jenkins balstÄ«tu darbplÅ«smu piemÄri. StrÄdÄjot ar citiem rÄ«kiem, ir daudz citu procesu.
Galvenais ir tas, ka mÄs redzam, ka katrs atjauninÄjums beidzas ar izmaiÅÄm konfigurÄcijas failos un Git krÄtuvÄs. Å Ä«s Git izmaiÅas liek "GitOps operatoram" atjauninÄt klasteru:
1. Darba process: "Dženkinsa bÅ«vÄ - meistara atzars'.
Uzdevumu saraksts:
Dženkinss nospiež atzÄ«mÄtos attÄlus uz Quay;
Dženkinss nospiež konfigurÄcijas un Helm diagrammas uz galveno krÄtuves spaini;
MÄkoÅa funkcija kopÄ konfigurÄciju un diagrammas no galvenÄs krÄtuves kausa uz galveno Git repozitoriju;
GitOps operators atjaunina klasteru.
2. Jenkins bÅ«vÄt ā laidienu vai labojumfailu filiÄle:
Dženkinss nospiež neatzÄ«mÄtus attÄlus uz Quay;
Dženkinss nospiež konfigurÄcijas un Helm diagrammas uz inscenÄÅ”anas krÄtuves spaini;
MÄkoÅa funkcija kopÄ konfigurÄciju un diagrammas no pakÄpeniskÄs krÄtuves kopas uz Git repozitoriju;
GitOps operators atjaunina klasteru.
3. Jenkins bÅ«vÄt - attÄ«stÄ«t vai iezÄ«me filiÄle:
Dženkinss nospiež neatzÄ«mÄtus attÄlus uz Quay;
Dženkinss iespiež konfigurÄcijas un Helm diagrammas izstrÄdes krÄtuves spainÄ«;
MÄkoÅa funkcija kopÄ konfigurÄciju un diagrammas no izstrÄdes krÄtuves kausa uz izstrÄdes Git repozitoriju;
GitOps operators atjaunina klasteru.
4. Jauna klienta pievienoŔana:
PÄrzinis vai administrators (LCM/ops) izsauc Gradle, lai sÄkotnÄji izvietotu un konfigurÄtu tÄ«kla slodzes balansÄtÄjus (NLB);
LCM/ops veic jaunu konfigurÄciju, lai sagatavotu izvietoÅ”anu atjauninÄjumiem;
GitOps operators atjaunina klasteru.
ÄŖss GitOps apraksts
Aprakstiet visas sistÄmas vÄlamo stÄvokli, izmantojot katras vides deklaratÄ«vas specifikÄcijas (mÅ«su stÄstÄ Boba komanda definÄ visu sistÄmas konfigurÄciju Git).
Git repozitorijs ir vienÄ«gais patiesÄ«bas avots par visas sistÄmas vÄlamo stÄvokli.
Visas izmaiÅas vÄlamajÄ stÄvoklÄ« tiek veiktas, izmantojot saistÄ«bas Git.
Visi vÄlamie klastera parametri ir novÄrojami arÄ« paÅ”Ä klasterÄ«. TÄdÄ veidÄ mÄs varam noteikt, vai tie sakrÄ«t (saplÅ«st, saplÅ«st) vai atŔķirties (atŔķirties, atŔķirties) vÄlamie un novÄrotie stÄvokļi.
Ja vÄlamie un novÄrotie stÄvokļi atŔķiras, tad:
PastÄv konverÄ£ences mehÄnisms, kas agrÄk vai vÄlÄk automÄtiski sinhronizÄ mÄrÄ·a un novÄroto stÄvokļus. Klastera iekÅ”pusÄ Kubernetes to dara.
Process sÄkas nekavÄjoties ar brÄ«dinÄjumu par veiktajÄm izmaiÅÄm.
PÄc kÄda konfigurÄjama laika perioda var nosÅ«tÄ«t "atŔķirÄ«bas" brÄ«dinÄjumu, ja stÄvokļi atŔķiras.
TÄdÄ veidÄ visas Git saistÄ«bas rada pÄrbaudÄmus un identiskus klastera atjauninÄjumus.
AtcelÅ”ana ir konverÄ£ence uz iepriekÅ” vÄlamo stÄvokli.
KonverÄ£ence ir galÄ«ga. TÄs raÅ”anos norÄda:
Noteiktu laika periodu nav brÄ«dinÄjumu par atŔķirÄ«bÄm.
VairÄkas izmaiÅas vÄlamajÄ stÄvoklÄ« saistÄ«bÄ ar PR pakalpojumÄ Git, kam seko konteinera attÄla izveide un konfigurÄcijas izmaiÅas.
Klastera stÄvokļa izmaiÅas kļūdas dÄļ, resursu konflikts, kas izraisa "sliktu uzvedÄ«bu", vai vienkÄrÅ”i nejauÅ”a novirze no sÄkotnÄjÄ stÄvokļa.
KÄds ir konverÄ£ences mehÄnisms?
Daži piemÄri:
Konteineriem un klasteriem konverÄ£ences mehÄnismu nodroÅ”ina Kubernetes.
To paÅ”u mehÄnismu var izmantot, lai pÄrvaldÄ«tu uz Kubernetes balstÄ«tas lietojumprogrammas un dizainus (piemÄram, Istio un Kubeflow).
Tiek nodroÅ”inÄts mehÄnisms operatÄ«vÄs mijiedarbÄ«bas pÄrvaldÄ«Å”anai starp Kubernetes, attÄlu krÄtuvÄm un Git GitOps operators Weave Flux, kas ir daļa Aust MÄkoni.
BÄzes maŔīnÄm konverÄ£ences mehÄnismam jÄbÅ«t deklaratÄ«vam un autonomam. No savas pieredzes mÄs to varam teikt Terraform vistuvÄk Å”ai definÄ«cijai, taÄu joprojÄm ir nepiecieÅ”ama cilvÄka kontrole. Å ajÄ ziÅÄ GitOps paplaÅ”ina infrastruktÅ«ras kÄ koda tradÄ«ciju.
GitOps apvieno Git ar lielisko Kubernetes konverÄ£ences dzinÄju, lai nodroÅ”inÄtu ekspluatÄcijas modeli.
GitOps ļauj mums teikt: AutomatizÄt un kontrolÄt var tikai tÄs sistÄmas, kuras var aprakstÄ«t un novÄrot.
GitOps ir paredzÄts visam mÄkoÅa steksam (piemÄram, Terraform utt.)
GitOps nav tikai Kubernetes. MÄs vÄlamies, lai visa sistÄma tiktu vadÄ«ta deklaratÄ«vi un izmantotu konverÄ£enci. Ar visu sistÄmu mÄs domÄjam vidi kopumu, kas strÄdÄ ar Kubernetes - piemÄram, ādev cluster 1ā, āproductionā utt. KatrÄ vidÄ ietilpst maŔīnas, klasteri, lietojumprogrammas, kÄ arÄ« saskarnes ÄrÄjiem pakalpojumiem, kas nodroÅ”ina datus, uzraudzÄ«bu. un utt.
IevÄrojiet, cik svarÄ«ga Terraform ir sÄknÄÅ”anas problÄmai Å”ajÄ gadÄ«jumÄ. Kubernetes ir kaut kur jÄizvieto, un, izmantojot Terraform, mÄs varam lietot tÄs paÅ”as GitOps darbplÅ«smas, lai izveidotu kontroles slÄni, kas ir Kubernetes un lietojumprogrammu pamatÄ. Å Ä« ir noderÄ«ga paraugprakse.
Liela uzmanÄ«ba tiek pievÄrsta GitOps koncepciju piemÄroÅ”anai slÄÅiem virs Kubernetes. Å obrÄ«d ir GitOps tipa risinÄjumi Istio, Helm, Ksonnet, OpenFaaS un Kubeflow, kÄ arÄ«, piemÄram, Pulumi, kas veido slÄni mÄkoÅu native aplikÄciju izstrÄdei.
Kubernetes CI/CD: GitOps salÄ«dzinÄÅ”ana ar citÄm pieejÄm
KÄ minÄts, GitOps ir divas lietas:
IepriekÅ” aprakstÄ«tais Kubernetes un mÄkonis native darbÄ«bas modelis.
CeļŔ uz izstrÄdÄtÄju orientÄtu lietojumprogrammu pÄrvaldÄ«bas vidi.
Daudziem GitOps galvenokÄrt ir darbplÅ«sma, kuras pamatÄ ir Git push. ViÅÅ” mums arÄ« patÄ«k. Bet tas vÄl nav viss: tagad apskatÄ«sim CI/CD cauruļvadus.
GitOps piedÄvÄ nepÄrtrauktu izvietoÅ”anas mehÄnismu, kas novÄrÅ” vajadzÄ«bu pÄc atseviŔķÄm "izvietoÅ”anas pÄrvaldÄ«bas sistÄmÄm". Kubernetes dara visu darbu jÅ«su vietÄ.
Lai atjauninÄtu lietojumprogrammu, ir jÄatjaunina Git. Å is ir darÄ«juma atjauninÄjums vÄlamajam stÄvoklim. PÄc tam "izvietoÅ”anu" klasterÄ« veic pati Kubernetes, pamatojoties uz atjauninÄto aprakstu.
Kubernetes darbÄ«bas rakstura dÄļ Å”ie atjauninÄjumi ir konverÄ£enti. Tas nodroÅ”ina nepÄrtrauktas izvietoÅ”anas mehÄnismu, kurÄ visi atjauninÄjumi ir kodolÄ«gi.
PiezÄ«me: Aust MÄkoni piedÄvÄ GitOps operatoru, kas integrÄ Git un Kubernetes un ļauj veikt CD, saskaÅojot vÄlamo un paÅ”reizÄjo klastera stÄvokli.
Bez kubectl un skriptiem
Jums vajadzÄtu izvairÄ«ties no Kubectl izmantoÅ”anas, lai atjauninÄtu savu klasteru, un Ä«paÅ”i izvairÄ«ties no skriptu izmantoÅ”anas kubectl komandu grupÄÅ”anai. TÄ vietÄ, izmantojot GitOps cauruļvadu, lietotÄjs var atjauninÄt savu Kubernetes klasteru, izmantojot Git.
Ieguvumi ietver:
Pa labi. AtjauninÄjumu grupu var lietot, apvienot un beidzot apstiprinÄt, tÄdÄjÄdi tuvinot atomu izvietoÅ”anas mÄrÄ·i. Turpretim skriptu izmantoÅ”ana negarantÄ konverÄ£enci (vairÄk par to tÄlÄk).
DroŔība. CitÄjot Kelsija Haitovere: āIerobežojiet piekļuvi savam Kubernetes klasterim tikai automatizÄcijas rÄ«kiem un administratoriem, kuri ir atbildÄ«gi par tÄ atkļūdoÅ”anu vai uzturÄÅ”anu.ā SkatÄ«t arÄ« mana publikÄcija par droŔību un atbilstÄ«bu tehniskajÄm specifikÄcijÄm, kÄ arÄ« raksts par uzlauÅ”anu Homebrew nozogot akreditÄcijas datus no neuzmanÄ«gi uzrakstÄ«ta Dženkinsa scenÄrija.
LietotÄja pieredze. Kubectl atklÄj Kubernetes objekta modeļa mehÄniku, kas ir diezgan sarežģīta. IdeÄlÄ gadÄ«jumÄ lietotÄjiem vajadzÄtu mijiedarboties ar sistÄmu augstÄkÄ abstrakcijas lÄ«menÄ«. Å eit es atkal atsaukÅ”os uz Kelsiju un iesaku noskatÄ«ties tÄds CV.
AtŔķirība starp CI un CD
GitOps uzlabo esoŔos CI/CD modeļus.
MÅ«sdienÄ«gs CI serveris ir orÄ·estrÄÅ”anas rÄ«ks. Jo Ä«paÅ”i tas ir instruments CI cauruļvadu saskaÅoÅ”anai. Tie ietver izveidi, testÄÅ”anu, sapludinÄÅ”anu ar maÄ£istrÄli utt. CI serveri automatizÄ sarežģītu daudzpakÄpju cauruļvadu pÄrvaldÄ«bu. IzplatÄ«ts kÄrdinÄjums ir skriptÄt Kubernetes atjauninÄjumu kopu un palaist to kÄ daļu no konveijera, lai veiktu izmaiÅas klasterÄ«. PatieÅ”Äm, tÄ dara daudzi eksperti. TomÄr tas nav optimÄli, un lÅ«k, kÄpÄc.
CI ir jÄizmanto, lai nosÅ«tÄ«tu atjauninÄjumus uz maÄ£istrÄli, un Kubernetes klasterim ir jÄmainÄs, pamatojoties uz Å”iem atjauninÄjumiem, lai pÄrvaldÄ«tu kompaktdisku iekÅ”Äji. MÄs to saucam pull modelis CD, atŔķirÄ«bÄ no CI push modeļa. CD ir daļa izpildlaika orÄ·estrÄÅ”ana.
KÄpÄc CI serveriem nevajadzÄtu izmantot kompaktdiskus, izmantojot tieÅ”us atjauninÄjumus pakalpojumÄ Kubernetes
Neizmantojiet CI serveri, lai organizÄtu tieÅ”us Kubernetes atjauninÄjumus kÄ CI darbu kopu. Å is ir anti-modelis, par kuru mÄs runÄjam jau stÄstÄ«ts savÄ emuÄrÄ.
Atgriezīsimies pie Alises un Boba.
Ar kÄdÄm problÄmÄm viÅi saskÄrÄs? Boba CI serveris piemÄro izmaiÅas klasterim, taÄu, ja tas Å”ajÄ procesÄ avarÄ, Bobs nezinÄs, kÄdÄ stÄvoklÄ« klasteris atrodas (vai tam vajadzÄtu bÅ«t) vai kÄ to labot. Tas pats attiecas uz panÄkumiem.
PieÅemsim, ka Boba komanda izveidoja jaunu attÄlu un pÄc tam laboja savus izvietojumus, lai izvietotu attÄlu (viss no CI konveijera).
Ja attÄls tiek veidots normÄli, bet cauruļvads neizdodas, komandai bÅ«s jÄizdomÄ:
Vai atjauninÄjums ir izlaists?
Vai mÄs uzsÄkam jaunu bÅ«vniecÄ«bu? Vai tas radÄ«s nevajadzÄ«gas blakusparÄdÄ«bas ā ar iespÄju izveidot divas viena un tÄ paÅ”a nemainÄ«ga attÄla versijas?
Vai mums vajadzÄtu gaidÄ«t nÄkamo atjauninÄjumu, pirms palaist bÅ«vÄjumu?
Kas tieÅ”i nogÄja greizi? Kuras darbÄ«bas ir jÄatkÄrto (un kuras ir droÅ”i atkÄrtot)?
Uz Git balstÄ«tas darbplÅ«smas izveide negarantÄ, ka Boba komanda nesaskarsies ar Ŕīm problÄmÄm. ViÅi joprojÄm var kļūdÄ«ties ar commit push, tagu vai kÄdu citu parametru; tomÄr Ŕī pieeja joprojÄm ir daudz tuvÄka skaidrai pieejai "visu vai neko".
RezumÄjot, lÅ«k, kÄpÄc CI serveriem nevajadzÄtu nodarboties ar CD:
AtjauninÄÅ”anas skripti ne vienmÄr ir deterministiski; Tajos ir viegli kļūdÄ«ties.
CI serveri nekonverÄ£Ä uz deklaratÄ«vo klasteru modeli.
Ir grÅ«ti garantÄt idempotenci. LietotÄjiem ir jÄsaprot sistÄmas dziÄ¼Ä semantika.
Ir grÅ«tÄk atgÅ«ties no daļÄjas neveiksmes.
PiezÄ«me par Helm: ja vÄlaties izmantot Helm, mÄs iesakÄm to apvienot ar GitOps operatoru, piemÄram, Flux-StÅ«re. Tas palÄ«dzÄs nodroÅ”inÄt konverÄ£enci. Pati Helma nav ne deterministiska, ne atomiska.
GitOps kÄ labÄkais veids, kÄ ieviest nepÄrtrauktu piegÄdi Kubernetes
Alises un Boba komanda ievieÅ” GitOps un atklÄj, ka ir kļuvis daudz vieglÄk strÄdÄt ar programmatÅ«ras produktiem, uzturÄt augstu veiktspÄju un stabilitÄti. Beigsim Å”o rakstu ar ilustrÄciju, kas parÄda, kÄ izskatÄs viÅu jaunÄ pieeja. Å emiet vÄrÄ, ka mÄs galvenokÄrt runÄjam par lietojumprogrammÄm un pakalpojumiem, taÄu GitOps var izmantot visas platformas pÄrvaldÄ«bai.
Kubernetes darbības modelis
Apskatiet tÄlÄk redzamo diagrammu. Tas parÄda Git un konteinera attÄlu repozitoriju kÄ kopÄ«gus resursus diviem organizÄtiem dzÄ«ves cikliem:
NepÄrtraukts integrÄcijas cauruļvads, kas nolasa un ieraksta failus Git un var atjauninÄt konteinera attÄlu krÄtuvi.
Runtime GitOps konveijera, kas apvieno izvietoÅ”anu ar pÄrvaldÄ«bu un novÄrojamÄ«bu. Tas lasa un raksta failus Git un var lejupielÄdÄt konteinera attÄlus.
KÄdi ir galvenie atklÄjumi?
Bažu noŔķirÅ”ana: LÅ«dzu, Åemiet vÄrÄ, ka abi konveijeri var sazinÄties, tikai atjauninot Git vai attÄlu repozitoriju. Citiem vÄrdiem sakot, starp CI un izpildlaika vidi ir ugunsmÅ«ris. MÄs to saucam par "nemainÄ«bas ugunsmÅ«ri" (nemainÄmÄ«bas ugunsmÅ«ris), jo visi repozitorija atjauninÄjumi rada jaunas versijas. PapildinformÄciju par Å”o tÄmu skatiet 72.ā87. slaidos Ŕī prezentÄcija.
Varat izmantot jebkuru CI un Git serveri: GitOps darbojas ar jebkuru komponentu. Varat turpinÄt izmantot savus iecienÄ«tÄkos CI un Git serverus, attÄlu krÄtuves un testa komplektus. GandrÄ«z visiem citiem nepÄrtrauktÄs piegÄdes rÄ«kiem tirgÅ« ir nepiecieÅ”ams savs CI/Git serveris vai attÄlu krÄtuve. Tas var kļūt par ierobežojoÅ”u faktoru mÄkoÅdatoÅ”anas native attÄ«stÄ«bÄ. Izmantojot GitOps, varat izmantot pazÄ«stamus rÄ«kus.
PasÄkumi kÄ integrÄcijas rÄ«ks: TiklÄ«dz dati pakalpojumÄ Git tiek atjauninÄti, Weave Flux (vai Weave Cloud operators) paziÅo izpildlaiku. Ikreiz, kad Kubernetes pieÅem izmaiÅu kopu, Git tiek atjauninÄts. Tas nodroÅ”ina vienkÄrÅ”u integrÄcijas modeli GitOps darbplÅ«smu organizÄÅ”anai, kÄ parÄdÄ«ts tÄlÄk.
Tas ir svarÄ«gi, jo tas piedÄvÄ darbÄ«bas modeli mÄkoÅdatoÅ”anas izstrÄdÄtÄjiem.
TradicionÄlie sistÄmu pÄrvaldÄ«bas un uzraudzÄ«bas rÄ«ki ir saistÄ«ti ar operÄciju komandÄm, kas darbojas izpildgrÄmatÄ (parasto procedÅ«ru un darbÄ«bu kopums - apm. tulk.), kas saistÄ«ts ar konkrÄtu izvietoÅ”anu.
VietÄjÄ mÄkoÅa pÄrvaldÄ«bÄ novÄrojamÄ«bas rÄ«ki ir labÄkais veids, kÄ izmÄrÄ«t izvietoÅ”anas rezultÄtus, lai izstrÄdÄtÄju komanda varÄtu Ätri reaÄ£Ät.
IedomÄjieties, ka daudzas kopas ir izkaisÄ«tas dažÄdos mÄkoÅos un daudzi pakalpojumi ar savÄm komandÄm un izvietoÅ”anas plÄniem. GitOps piedÄvÄ mÄroga invariantu modeli, lai pÄrvaldÄ«tu visu Å”o pÄrpilnÄ«bu.