
LielÄkÄ daļa no mums, pamanot kÄdu jaunu terminu IT emuÄros vai konferences laikÄ, agri vai vÄlu uzdod Å”Ädu jautÄjumu: āKas tas ir? VÄl viens modi vÄrds, ābuzzwordā vai tieÅ”Äm kaut kas, kas pelnÄ«jis cieÅ”u uzmanÄ«bu, izpÄti un sola jaunus apvÄrÅ”Åus?ā TieÅ”i tÄpat man bija ar terminu GitOps pirms kÄda laika. ApbruÅojies ar daudziem jau esoÅ”ajiem rakstiem, kÄ arÄ« zinÄÅ”anÄm no kolÄÄ£iem uzÅÄmumÄ , mÄÄ£inÄju noskaidrot, kas tieÅ”i tas ir, un kÄ tÄ pielietojums var izskatÄ«ties praksÄ.
Starp citu, par termiÅa jauninÄjumu GitOps liecina arÄ« nesen veiktÄ mÅ«su aptauja: vairÄk nekÄ puse no aptaujÄtajiem vÄl nav uzsÄkuÅ”i darbu ar tÄ principiem.
TÄtad, infrastruktÅ«ras pÄrvaldÄ«bas problÄma nav jauna. Daudzi mÄkoÅu pakalpojumu sniedzÄji jau labu desmit gadu ir pieejami plaÅ”ai sabiedrÄ«bai un, Ŕķiet, vajadzÄja atvieglot infrastruktÅ«ras komandu darbu. TomÄr, salÄ«dzinot ar programmatÅ«ras izstrÄdes procesu (kur automatizÄcijas lÄ«menis sasniedz arvien jaunus apvÄrÅ”Åus), infrastruktÅ«ras projekti joprojÄm bieži ietver daudz manuÄlu uzdevumu un prasa Ä«paÅ”as zinÄÅ”anas un speciÄlistus, Ä«paÅ”i Åemot vÄrÄ mÅ«sdienu prasÄ«bas attiecÄ«bÄ uz pieejamÄ«bu, elastÄ«bu, mÄrogojamÄ«bu un elastÄ«bu.
MÄkoÅu pakalpojumi ļoti sekmÄ«gi izpildÄ«ja Ŕīs prasÄ«bas un tieÅ”i tie deva ievÄrojamu impulsu pieejas attÄ«stÄ«bai IaC. Un nav brÄ«nums. Galu galÄ tieÅ”i tie nodroÅ”inÄja iespÄju konfigurÄt pilnÄ«gi virtuÄlu datu centra apstrÄdi: nav fizisku serveru, skapju, tÄ«kla komponentu, visu infrastruktÅ«ru var aprakstÄ«t ar skriptiem un konfigurÄcijas failiem.
TÄtad, kas ir Ä«sti atŔķirÄ«ba GitOps no IaC? ŠŠ¼ŠµŠ½Š½Š¾ Ń ŃŃŠ¾Š³Š¾ Š²Š¾ŠæŃŠ¾Ńа Ń Šø Š½Š°ŃŠ°Š» ŃŠ²Š¾Šµ ŃŠ°ŃŃŠ»ŠµŠ“ование. ŠŠ¾Š¾Š±ŃŠ°Š²ŃŠøŃŃ Ń ŠŗŠ¾Š»Š»ŠµŠ³Š°Š¼Šø, Ń Š¼ŠµŠ½Ń ŠæŠ¾Š»ŃŃŠøŠ»Š¾ŃŃ Š²ŃŃŠ°Š±Š¾ŃаŃŃ ŃŠ»ŠµŠ“ŃŃŃŠµŠµ ŃŃŠ°Š²Š½ŠµŠ½ŠøŠµ:
GitOps
IaC
Viss kods tiek glabÄts git noliktavÄ
Koda versiju pÄrvaldÄ«ba nav obligÄta
Deklaratīvs koda apraksts / Idempotentība
Atļauts gan deklaratīvs, gan imperatīvs apraksts
IzmaiÅas stÄjas spÄkÄ, izmantojot Merge Request / Pull Request mehÄnismus
SaskaÅoÅ”ana, apstiprinÄÅ”ana un sadarbÄ«ba nav obligÄtas
AtjauninÄjumu izplatīŔanas process ir automatizÄts
AtjauninÄjumu izplatīŔanas process nav noteikts (automÄtisks, manuÄls, failu kopÄÅ”ana, izmantojot komandrindu utt.)
Citiem vÄrdiem sakot GitOps tas radÄs tieÅ”i pateicoties principu pielietoÅ”anai IaC. PirmkÄrt, infrastruktÅ«ru un konfigurÄcijas tagad varÄja glabÄt tieÅ”i tÄpat kÄ lietotnes. Kodu ir viegli uzglabÄt, ar to ir viegli dalÄ«ties, salÄ«dzinÄt un izmantot versiju iespÄjas. Versijas, zari, vÄsture. Un viss tas pieejamÄ vietÄ visai komandai. TÄpÄc bija loÄ£iski, ka notika pÄreja uz versiju kontroles sistÄmÄm. ÄŖpaÅ”i git, kÄ vispopulÄrÄkÄs.
No otras puses, parÄdÄ«jÄs iespÄja automatizÄt infrastruktÅ«ras pÄrvaldÄ«bas procesus. Tagad to var izdarÄ«t ÄtrÄk, droÅ”Äk un lÄtÄk. TurklÄt CI/CD principi jau bija zinÄmi un populÄri starp programmatÅ«ras izstrÄdÄtÄjiem. Bija tikai jÄpÄrnes un jÄpiemÄro jau zinÄÅ”anas un prasmes jaunÄ jomÄ. Å Ä«s prakses tomÄr izkļuva Ärpus standarta definÄ«cijas InfrastruktÅ«ra kÄ kods, tÄdÄjÄdi radot jÄdzienu GitOps.

Interese GitOps, protams, arÄ« tajÄ, ka tas nav produkts, spraudnis vai platforma, kas saistÄ«ta ar kÄdu noteiktu piegÄdÄtÄju. Tas drÄ«zÄk ir paradigma un principu kopums, lÄ«dzÄ«gi kÄ cits mums zinÄms termins: DevOps.
UzÅÄmumÄ MÄs izstrÄdÄjÄm divas Ŕī jaunÄ termina definÄ«cijas: teorÄtisko un praktisko. SÄksim ar teorÄtisko:
GitOps ā tÄ ir metodoloÄ£ija, kas izmanto modernÄkos DevOps principus, kas tiek izmantoti lietotÅu izstrÄdÄ, piemÄram, versiju kontroli, sadarbÄ«bu, saskaÅoÅ”anu, CI/CD, un piemÄro tos infrastruktÅ«ras pÄrvaldÄ«bas automatizÄÅ”anas uzdevumiem.
Visi procesi GitOps darbojas, izmantojot jau esoÅ”os rÄ«kus. Visi infrastruktÅ«ras kodi tiek uzglabÄti jau pazÄ«stamajÄ git repozitorijÄ, izmaiÅas iziet to paÅ”u saskaÅoÅ”anas procesu kÄ jebkurÅ” cits programmatÅ«ras kods, un izvietoÅ”anas process ir automatizÄts, kas ļauj minimizÄt cilvÄka faktora kļūdas, uzlabot uzticamÄ«bu un reproducÄjamÄ«bu.
SavukÄrt praktiskÄ perspektÄ«vÄ mÄs aprakstÄm GitOps Å”eit:

InfrastruktÅ«ra kÄ kods, ko mÄs jau apspriedÄm, ir viens no Ŕīs formulas galvenajiem komponentiem. ApskatÄ«sim pÄrÄjos dalÄ«bniekus.
ApvienoÅ”anas pieprasÄ«jums (alternatÄ«vais nosaukums Pull Request). MR procesÄ tas ir pieprasÄ«jums veikt izmaiÅas kodÄ un turpmÄkais zaru apvienoÅ”ana. Bet attiecÄ«bÄ uz rÄ«kiem, ko izmantojam, tas drÄ«zÄk ir iespÄja iegÅ«t pilnÄ«gu pÄrskatu par visÄm veiktajÄm izmaiÅÄm: ne tikai code diff, kas sastÄv no noteikta skaita komisijÄm, bet arÄ« kontekstu, testu rezultÄtus, gala sagaidÄmo rezultÄtu. Ja runÄjam par infrastruktÅ«ras kodu, tad mÅ«s interesÄ, kÄ tieÅ”i mainÄ«sies infrastruktÅ«ra, cik jaunu resursu tiks pievienots vai noÅemts, mainÄ«ts. VÄlams kaut kÄdÄ ÄrtÄkÄ un vieglÄk lasÄmÄ formÄtÄ. GadÄ«jumÄ ar mÄkoÅa pakalpojumu sniedzÄjiem nebÅ«tu slikti uzzinÄt, kÄdas finansiÄlas sekas radÄ«s Ŕī izmaiÅa.
Bet MR ir arÄ« sadarbÄ«bas, mijiedarbÄ«bas, komunikÄcijas lÄ«dzeklis. TÄ ir vieta, kur darbojas lÄ«dzsvara un pretbalsta sistÄma. No vienkÄrÅ”iem komentÄriem lÄ«dz formÄliem apstiprinÄjumiem un apstiprinÄjumiem.
Un pÄdÄjÄ sastÄvdaļa: CI/CD, kÄ jau zinÄm, nodroÅ”ina iespÄju automatizÄt infrastruktÅ«ras izmaiÅu ievieÅ”anas procesu, testÄÅ”anu (no vienkÄrÅ”as sintakses pÄrbaudes lÄ«dz sarežģītÄkai statiskajai analÄ«zei). TÄpat arÄ« turpmÄkÄ noviržu noteikÅ”ana: atŔķirÄ«bas starp reÄlo un vÄlamo sistÄmas stÄvokli. PiemÄram, neautorizÄtu roku izmaiÅu rezultÄtÄ vai sistÄmas atteikÅ”anÄs rezultÄtÄ.
JÄ, termins GitOps neiepazÄ«stina mÅ«s ne ar ko pilnÄ«gi jaunu, neizgatavo velosipÄdu no jauna, bet vienkÄrÅ”i pielieto jau iekrÄtÄs zinÄÅ”anas jaunÄ jomÄ. Bet tieÅ”i tajÄ ir tÄ spÄks.
Un ja jums pÄkÅ”Åi kļūs interesanti, kÄ tas viss izskatÄs praksÄ, tad aicinu apskatÄ«t mÅ«su , kurÄ soli pa solim stÄstu, kÄ, izmantojot GitLab:
RealizÄt galvenos GitOps principus
Izveidot un veikt izmaiÅas mÄkoÅu infrastruktÅ«rÄ (balstoties uz Yandex Cloud piemÄru)
AutomatizÄt sistÄmas noviržu atklÄÅ”anu no vÄlamÄ stÄvokļa, izmantojot aktÄ«vo monitoringu
https://bit.ly/34tRpwZ
Avots: habr.com
