Programiranje

Kaj je GitOps? Razširitev devopsa na Kubernetes in naprej

V zadnjem desetletju programiranja je prišlo do številnih revolucionarnih sprememb. Eden je nastal iz skupine praks v okolju devops, ki razvojne in operativne skupine uskladi v deljeni delovni proces ter nenehno integracijo in neprekinjeno dostavo (CI / CD), v kateri ekipe za devops nenehno posodabljajo kodno bazo. Druga preobrazba je prišla iz s tem povezane preusmeritve iz monolitnih baz kod v mikro storitve v oblaku, ki se izvajajo v vsebnikih, ki jih upravljajo platforme za orkestracijo, kot je Kubernetes.

Aplikacije na osnovi vsebnikov, ki se izvajajo v gručastih sistemih ali v oblaku, so lahko zapletene in jih je težko zagotoviti in upravljati, tudi s platformo, kot je Kubernetes, ki orkestrira stvari. GitOps je nastajajoči nabor praks, katerih namen je poenostaviti to nalogo upravljanja z uporabo tehnik iz svetov devops in CI / CD.

Ključ GitOps-a je ideja o infrastrukturi kot kodi, ki ima enak pristop k zagotavljanju infrastrukture kot devops za zagotavljanje aplikacij. Torej, v datotekah so opisane ne samo aplikacija, temveč tudi osnovni gostiteljski stroji in omrežja, ki jih je mogoče obravnavati kot katero koli drugo kodo v sistemu za nadzor različic, pri čemer avtomatizirani procesi nato delajo za konvergenco resnične aplikacije s tisto, opisano v teh datotek.

V jeziku GitOps je koda v sistemu za nadzor različic en vir resnice o tem, kako naj bo aplikacija videti v proizvodnji

Opredeljen GitOps

Weaveworks je podjetje, ki je največ naredilo za popularizacijo koncepta GitOps. V podrobnosti vloge Weaveworks se bomo nekoliko poglobili, najprej pa si oglejmo opredelitev podjetja GitOps, ki je dvojna:

  • Operativni model za Kubernetes in druge izvorne tehnologije v oblaku, ki ponuja nabor najboljših praks, ki združujejo uvajanje, upravljanje in spremljanje za grozde v kontejnerjih in aplikacije.
  • Pot do izkušnje za razvijalce za upravljanje aplikacij; kjer se cevni cevovodi CI / CD in delovni tokovi Git uporabljajo tako za operacije kot za razvoj.

Z drugimi besedami, GitOps je poseben nabor praks, namenjen upravljanju Kubernetesa in podobnih platform, ki se prav tako lahko širi, saj vse več razvojnih trgovin sprejema prakse devops in prenaša kodo v oblak. Toda, da bi razumeli skrivno omako GitOps in težave, ki jih rešuje, se moramo pogovoriti o komponentah, ki spadajo vanj.

Opredelitev Git 

The Git v GitOps se nanaša na zelo priljubljen sistem porazdeljene različice za nadzor različic, ki ga je leta 2005 razvil Linus Torvalds. Git je orodje, ki skupinam razvijalcev omogoča, da sodelujejo na programski bazi programske opreme in shranjujejo različne veje kode, s katero se poigravajo, preden jih združijo v produkcijsko kodo. Ključni koncept Gita je povleci zahtevo, v katerem razvijalec uradno zahteva, da se neka koda, na kateri so delali, vključi v drugo vejo znotraj zbirke kod.

Zahteva Git pull članom ekipe omogoča, da sodelujejo in razpravljajo, preden dosežejo soglasje o tem, ali je treba novo kodo dodati v aplikacijo. Git shranjuje tudi starejše različice kode, ki olajšajo vrnitev na zadnjo dobro različico, če gre kaj narobe, in vam omogoča, da hitro vidite, kaj se je spremenilo med različicami. Git je morda najbolj znan kot podlaga za GitHub, sistem za nadzor različic, ki ga gosti v oblaku, vendar je Git sam po sebi odprtokodna programska oprema, ki jo je mogoče uporabiti kjer koli, od notranjih poslovnih strežnikov do osebnega računalnika.

Upoštevajte, da čeprav Git običajno mislimo kot orodje za računalniško programiranje, je dejansko agnostično glede vsebine, za katero ga uporabljate. Git bo vse nabore besedilnih datotek z veseljem obravnaval kot vašo "kodno bazo" in ga lahko na primer uporabljajo pisci, ki želijo spremljati urejanja skupnega dela. To je pomembno, ker večino kodne baze v jedru GitOps sestavljajo deklarativne konfiguracijske datoteke in ne izvedljiva koda.

Še zadnja stvar, ki jo moramo povedati, preden nadaljujemo: Kljub temu, da je v imenu »Git«, GitOps dejansko ne zahteva uporabe Gita. Trgovine, ki so že vložene v drugo programsko opremo za nadzor različic, na primer Subversion, lahko izvajajo tudi GitOps. Toda Git se v svetu devops pogosto uporablja za izvajanje CI / CD, zato bo večina projektov GitOps na koncu uporabljala Git.

Kaj je postopek CI / CD?

Popoln pogled na CI / CD presega obseg tega članka - glejte razlago o tej temi - vendar moramo povedati nekaj besed o CI / CD, ker je bistvo tega, kako deluje GitOps. The stalna integracija polovico CI / CD omogočajo repozitoriji za nadzor različic, kot je Git: Razvijalci lahko nenehno izboljšujejo svojo kodno bazo, namesto da bi vsakih nekaj mesecev ali let uvajali ogromne, monolitne nove različice. The neprekinjeno uvajanje kos omogočajo avtomatizirani sistemi, imenovani cevovodi ki gradijo, preizkušajo in uvedejo novo kodo v proizvodnjo.

Spet se še naprej pogovarjava Koda tukaj, ki običajno prikliče vizije izvršljive kode, napisane v programskem jeziku, kot sta C ali Java ali JavaScript. Toda v GitOpsu »kodo«, ki jo upravljamo, v veliki meri sestavljajo konfiguracijske datoteke. To ni le manjša podrobnost - to je v središču tega, kar počne GitOps. Kot smo že omenili, so te konfiguracijske datoteke "en vir resnice", ki opisuje, kako bi moral biti videti naš sistem. So izjavo in ne poučno. To pomeni, da namesto da bi rekli "zaženi deset strežnikov", bo v konfiguracijski datoteki preprosto rečeno, "ta sistem vključuje deset strežnikov."

The CI polovica enačbe GitOps razvijalcem omogoča hitro uvajanje popravkov in izboljšav teh konfiguracijskih datotek; CD polovica se zgodi, ko se avtomatizirani programski agenti po svojih najboljših močeh prepričajo, da različica aplikacije v živo zrcali opise v konfiguracijskih datotekah - konvergira na deklarativni model, v jeziku GitOps.

GitOps in Kubernetes

Kot smo že omenili, so bili koncepti GitOps prvotno razviti okoli upravljanja aplikacij Kubernetes. S tem, kar zdaj vemo o GitOpsu, ponovno poglejmo razpravo Weaveworks o GitOpsu in si oglejmo, kako opisujejo, kako bi posodabljali Kubernetes, upravljan po načelih GitOps. Tu je povzetek:

  1. Razvijalec poda zahtevo Git pull za novo funkcijo.
  2. Koda se pregleda in odobri, nato se združi v glavno zbirko kod.
  3. Združevanje sproži cevovod CI / CD, ki samodejno preizkusi in znova zgradi novo kodo ter jo namesti v register.
  4. Programski agent opazi posodobitev, potegne novo kodo iz registra in posodobi konfiguracijsko datoteko (napisano v YAML) v repozitoriju konfiguracije.
  5. Programski agent v gruči Kubernetes na podlagi konfiguracijske datoteke zazna, da je gruča zastarela, potegne spremembe in uporabi novo funkcijo.

Weaveworks in GitOps

Jasno je, da koraka 4 in 5 tu opravita večji del dvigovanja. Programski agenti, ki čarobno sinhronizirajo "vir resnice" v skladišču Git z resnično aplikacijo Kubernetes, so čarobnost, ki omogoča GitOps. Kot smo že povedali, se v smislu GitOps imenuje postopek izdelave sistemov v živo, bolj podobnih idealnim sistemom, opisanim v konfiguracijskih datotekah. konvergenca. (Ko sistem v živo in idealen sistem nista sinhronizirana, to je divergenca.) V idealnem primeru bi konvergenco dosegli z avtomatiziranimi procesi, vendar obstajajo omejitve glede tega, kar lahko naredi avtomatizacija, in včasih je potreben človekov poseg.

Postopek smo tukaj opisali v splošnem smislu, v resnici pa, če dejansko poiščete stran Weaveworks, so "programski agenti", ki smo jih omenili, del platforme podjetja Weave Cloud. Izraz "GitOps" je skoval izvršni direktor Weaveworks Alexis Richardson, delno pa služi temu, da je platforma Weaveworks privlačna za razvijalce, ki so že potopljeni v svetove devops in CI / CD.

Toda Weaveworks ni nikoli zahteval monopola na GitOps, kar je bolj filozofija in nabor najboljših praks kot določen izdelek. Kot zapisuje blog za CloudBees, podjetje, ki ponuja rešitve CI / CD, GitOps predstavlja odprt, nevtralen dobavitelj model, ki je bil razvit kot odziv na upravljane lastniške rešitve Kubernetes, ki so jih uvedli veliki prodajalci oblakov, kot so Amazon, Google in Microsoft . CloudBees ponuja svoje rešitve GitOps, tako kot številni igralci v tem prostoru.

GitOps in devops

Atlassian, podjetje, ki izdeluje številna orodja za gibčne razvijalce, ima poglobljeno objavo v blogu o zgodovini in namenu GitOps, ki je vredna vašega časa. Po njihovem mnenju GitOps predstavlja logično razširitev idej, ki so se združile kot devops. Natančneje, GitOps je izdelava koncepta infrastrukture kot kode, kar je ideja, ki je nastala iz okolja devops. Kot je Atlassian videl, je GitOps premostil ključno vrzel med obstoječimi tehnikami devops, ki so se razvile za reševanje problemov sistemskega upravljanja, in posebnimi potrebami porazdeljenih aplikacij za gostovanje v oblaku. Zaradi avtomatizirane konvergence, ki jo ponujajo različni ponudniki oblakov, je GitOps poseben.

In čeprav se GitOps še danes osredotoča na Kubernetes, upamo, da smo jasno pojasnili, kako to velja za veliko širši svet distribuiranih aplikacij v oblaku. Objava v spletnem dnevniku odprtokodnega prodajalca varnosti WhiteSource opisuje prednosti GitOps:

  • Opazljivost: Sistemi GitOps ponujajo spremljanje, beleženje, sledenje in vizualizacijo zapletenih aplikacij, tako da lahko razvijalci vidijo, kaj se dogaja in kje.
  • Nadzor različic in upravljanje sprememb: Očitno je to ključna prednost uporabe sistema za nadzor različic, kot je Git. Poškodovane posodobitve je mogoče enostavno povrniti.
  • Enostavno posvojitev: GitOps temelji na veščinah devops, ki jih že imajo mnogi razvijalci.
  • Produktivnost: GitOps zagotavlja večjo produktivnost, ki so jo devops in CI / CD prinesli na druga področja.
  • Revizija: Zahvaljujoč Gitu lahko vsako dejanje izsledimo do določenega prevzema, kar olajša iskanje vzrokov napak.

Tudi če ne uporabljate Kubernetesa, je velika verjetnost, da bo GitOps slej ko prej del vašega delovnega procesa.

$config[zx-auto] not found$config[zx-overlay] not found