GitOps: vēl viens modes vārds vai izrāviens automatizācijā?

GitOps: vēl viens modes vārds vai izrāviens automatizācijā?

Lielākā daļa no mums, pamanot kārtējo jaunu terminu IT blogosfērā vai konferencē, agri vai vēlu uzdod lÄ«dzÄ«gu jautājumu: ā€œKas tas ir? Vai tikai vēl viens modes vārds, "moža vārds" vai kaut kas patiesi vērts pievērst uzmanÄ«bu, izpētÄ«t un solÄ«t jaunus apvārŔņus? Tas pats notika ar mani ar terminu GitOps pirms kāda laika. Apbruņots ar daudziem esoÅ”ajiem rakstiem, kā arÄ« kolēģu zināŔanām no uzņēmuma GitLab, es mēģināju izdomāt, kas tas par zvēru un kā tā izmantoÅ”ana varētu izskatÄ«ties praksē.

Starp citu, par termina novitāti GitOps ArÄ« mÅ«su nesenajā aptaujā teikts: vairāk nekā puse aptaujāto vēl nav sākuÅ”i strādāt ar tās principiem.

Tātad infrastruktÅ«ras pārvaldÄ«bas problēma nav jauna. Daudzi mākoņpakalpojumu sniedzēji plaŔākai sabiedrÄ«bai ir bijuÅ”i pieejami jau labu desmitu gadu, un, Ŕķiet, tiem vajadzēja padarÄ«t par infrastruktÅ«ru atbildÄ«go komandu darbu vienkārÅ”u un saprotamu. Tomēr, salÄ«dzinot ar lietojumprogrammu izstrādes procesu (kur automatizācija sasniedz arvien jaunus lÄ«meņus), infrastruktÅ«ras projekti joprojām bieži ietver daudzus manuālus uzdevumus un prasa specializētas zināŔanas un zināŔanas, Ä«paÅ”i ņemot vērā mÅ«sdienu prasÄ«bas attiecÄ«bā uz kļūdu toleranci, elastÄ«bu, mērogojamÄ«bu un elastÄ«bu.

Mākoņpakalpojumi Ŕīs prasÄ«bas izpildÄ«ja ļoti veiksmÄ«gi un tieÅ”i tie deva bÅ«tisku impulsu pieejas attÄ«stÄ«bai IaC. Tas ir saprotams. Galu galā tie ļāva konfigurēt pilnÄ«gi virtuālu datu centru: nav fizisku serveru, plauktu vai tÄ«kla komponentu; visu infrastruktÅ«ru var aprakstÄ«t, izmantojot skriptus un konfigurācijas failus.

Kāda tad Ä«sti ir atŔķirÄ«ba? GitOps no IaC? TieÅ”i ar Å”o jautājumu es sāku savu izmeklÄ“Å”anu. Pēc sarunas ar kolēģiem es varēju nākt klajā ar Ŕādu salÄ«dzinājumu:

GitOps

IaC

Viss kods tiek glabāts git repozitorijā

Koda versiju noteikŔana nav obligāta

Deklaratīvais koda apraksts / Idempotence

Ir pieņemami gan deklaratīvi, gan obligāti apraksti

Izmaiņas stājas spēkā, izmantojot sapludināŔanas pieprasÄ«juma/izvilkÅ”anas pieprasÄ«juma mehānismus

VienoŔanās, apstiprināŔana un sadarbība nav obligāta

Atjauninājumu izlaiÅ”anas process ir automatizēts

AtjaunināŔanas izlaiÅ”anas process nav standartizēts (automātisks, manuāls, failu kopÄ“Å”ana, komandrindas izmantoÅ”ana utt.)

Citiem vārdiem sakot GitOps radās tieÅ”i, piemērojot principus IaC. Pirmkārt, infrastruktÅ«ru un konfigurācijas tagad varētu saglabāt tāpat kā lietojumprogrammas. Kodu ir viegli uzglabāt, viegli koplietot, salÄ«dzināt un izmantot versiju izveides iespējas. Versijas, filiāles, vēsture. Un tas viss publiski pieejamā vietā visai komandai. Tāpēc versiju kontroles sistēmu izmantoÅ”ana kļuva par pilnÄ«gi dabisku attÄ«stÄ«bu. Jo Ä«paÅ”i gits kā vispopulārākais.

No otras puses, radās iespēja automatizēt infrastruktÅ«ras pārvaldÄ«bas procesus. Tagad to var izdarÄ«t ātrāk, uzticamāk un lētāk. Turklāt CI / CD principi jau bija zināmi un populāri programmatÅ«ras izstrādātāju vidÅ«. Vajadzēja tikai nodot un pielietot jau zināmās zināŔanas un prasmes jaunā jomā. Tomēr Ŕī prakse pārsniedza infrastruktÅ«ras kā koda standarta definÄ«ciju, tāpēc arÄ« jēdziens GitOps.

GitOps: vēl viens modes vārds vai izrāviens automatizācijā?

Zinātkāre GitOps, protams, arī apstāklī, ka tas nav ne ar vienu pārdevēju saistīts produkts, spraudnis vai platforma. Tā vairāk ir paradigma un principu kopums, kas līdzinās citam mums pazīstamam terminam: DevOps.

Uzņēmums GitLab mēs esam izstrādājuÅ”i divas Ŕī jaunā termina definÄ«cijas: teorētisko un praktisko. Sāksim ar teorētisko:

GitOps ir metodika, kas izmanto labākos DevOps principus, ko izmanto lietojumprogrammu izstrādē, piemēram, versiju kontroli, sadarbÄ«bu, orÄ·estrÄ“Å”anu, CI/CD, un piemēro tos infrastruktÅ«ras pārvaldÄ«bas automatizācijas izaicinājumiem.

Visi procesi GitOps Strādāju izmantojot esoÅ”os rÄ«kus. Viss infrastruktÅ«ras kods tiek glabāts jau pazÄ«stamajā git repozitorijā, izmaiņas tiek veiktas tādā paŔā apstiprināŔanas procesā kā jebkurÅ” cits programmas kods, un izlaiÅ”anas process ir automatizēts, kas ļauj samazināt cilvēku kļūdas, palielināt uzticamÄ«bu un reproducējamÄ«bu.

No praktiskā viedokļa mēs aprakstām GitOps Ŕādi:

GitOps: vēl viens modes vārds vai izrāviens automatizācijā?

Mēs jau esam apsprieduÅ”i infrastruktÅ«ru kā kodu kā vienu no Ŕīs formulas galvenajām sastāvdaļām. IepazÄ«stināsim ar pārējiem dalÄ«bniekiem.

SapludināŔanas pieprasÄ«jums (alternatÄ«vais nosaukums Pull Request). Procesa izteiksmē MR ir pieprasÄ«jums piemērot koda izmaiņas un pēc tam apvienot filiāles. Bet attiecÄ«bā uz mÅ«su izmantotajiem rÄ«kiem Ŕī ir drÄ«zāk iespēja iegÅ«t pilnÄ«gu priekÅ”statu par visām veiktajām izmaiņām: ne tikai koda atŔķirÄ«bas, kas savāktas no noteikta skaita izpildes, bet arÄ« konteksts, testa rezultāti un gala sagaidāmais rezultāts. Ja mēs runājam par infrastruktÅ«ras kodu, tad mÅ«s interesē, kā tieÅ”i infrastruktÅ«ra mainÄ«sies, cik jauni resursi tiks pievienoti vai izņemti, mainÄ«ti. Vēlams kādā ērtākā un vieglāk lasāmā formātā. Mākoņu pakalpojumu sniedzējiem ir lietderÄ«gi zināt, kāda bÅ«s Å”o izmaiņu finansiālā ietekme.

Taču MR ir arÄ« sadarbÄ«bas, mijiedarbÄ«bas un saziņas lÄ«dzeklis. Vieta, kur tiek izmantota pārbaužu un lÄ«dzsvara sistēma. No vienkārÅ”iem komentāriem lÄ«dz formāliem apstiprinājumiem un apstiprinājumiem.

Nu, pēdējais komponents: CI/CD, kā mēs jau zinām, ļauj automatizēt infrastruktÅ«ras izmaiņu veikÅ”anas un testÄ“Å”anas procesu (no vienkārÅ”as sintakses pārbaudes lÄ«dz sarežģītākai statiskā koda analÄ«zei). Un arÄ« turpmākajā novirzes noteikÅ”anā: atŔķirÄ«bas starp reālo un vēlamo sistēmas stāvokli. Piemēram, nesankcionētu manuālu izmaiņu vai sistēmas kļūmes rezultātā.

Jā, termins GitOps neiepazÄ«stina mÅ«s ar neko pilnÄ«gi jaunu, neizgudro riteni no jauna, bet vienkārÅ”i pielieto jau uzkrāto pieredzi jaunā jomā. Bet Å”eit slēpjas viņa spēks.

Un, ja pēkŔņi sāk interesēties, kā tas viss izskatās praksē, tad aicinu ieskatÄ«ties mÅ«su meistarklases, kurā soli pa solim pastāstÄ«Å”u, kā lietot GitLab:

  • Ieviesiet GitOps pamatprincipus

  • Izveidojiet un veiciet izmaiņas mākoņa infrastruktÅ«rā (izmantojot Yandex Cloud piemēru)

  • Automatizējiet sistēmas novirzes no vēlamā stāvokļa noteikÅ”anu, izmantojot aktÄ«vo uzraudzÄ«bu

GitOps: vēl viens modes vārds vai izrāviens automatizācijā?https://bit.ly/34tRpwZ

Avots: www.habr.com

Pievieno komentāru