Programovanie

Čo je to GitOps? Rozšírenie devops na Kubernetes a ďalej

Posledné desaťročie programovania zaznamenalo množstvo revolučných transformácií. Jedným z nich je zoskupenie postupov okolo devops, ktoré zosúlaďuje vývojové a prevádzkové tímy so zdieľaným pracovným procesom, a nepretržitá integrácia a nepretržité doručovanie (CI / CD), v rámci ktorých devopsové tímy poskytujú neustále prírastkové aktualizácie kódovej základne. Ďalšia transformácia priniesla súvisiaci prechod od monolitických kódových báz k cloudovým mikroslužbám bežiacim v kontajneroch spravovaných orchestračnými platformami, ako je Kubernetes.

Aplikácie založené na kontajneroch bežiace na klastrovaných systémoch alebo v cloude môžu byť zložité a ťažko zabezpečiteľné a spravovateľné, a to aj na platforme, ako je Kubernetes, ktorá organizuje veci. GitOps je rozvíjajúci sa súbor postupov, ktorého cieľom je zjednodušiť túto úlohu riadenia použitím techník zo sveta devops a CI / CD.

Kľúčom k GitOps je myšlienka infraštruktúry ako kódu, ktorá zaujíma rovnaký prístup k zabezpečovacej infraštruktúre ako devops používa na poskytovanie aplikácií. Nielen aplikácia, ale aj príslušné hostiteľské počítače a siete sú opísané v súboroch, s ktorými je možné zaobchádzať ako s akýmkoľvek iným kódom v systéme riadenia verzií, pričom automatizované procesy potom pracujú na konvergovaní skutočnej aplikácie s aplikáciou opísanou v týchto dokumentoch. súbory.

V jazyku GitOps je kód v systéme riadenia verzií jediný zdroj pravdy o tom, ako by mala aplikácia vyzerať vo výrobe

GitOps definované

Weaveworks je spoločnosť, ktorá sa najviac usilovala o popularizáciu konceptu GitOps. Trochu sa pozrieme na podrobnosti úlohy Weaveworks, ale najskôr sa pozrime na definíciu spoločnosti GitOps, ktorá je dvojaká:

  • Prevádzkový model pre Kubernetes a ďalšie cloudové natívne technológie poskytujúci sadu osvedčených postupov, ktoré zjednocujú nasadenie, správu a monitorovanie kontajnerovaných klastrov a aplikácií.
  • Cesta k vývojárskej skúsenosti so správou aplikácií; kde sa na operácie aj vývoj aplikujú end-to-end kanály CI / CD a pracovné toky Git.

Inými slovami, GitOps je špecifická sada postupov určených na správu Kubernetes a podobných platforiem, ktorá sa tiež ponúka na možné širšie uplatnenie, pretože čoraz viac vývojových obchodov prijíma postupy devops a migruje kód do cloudu. Aby sme však pochopili tajnú omáčku GitOps a problémy, ktoré rieši, je potrebné hovoriť o komponentoch, ktoré do nej vstupujú.

Definícia Gitu 

The Git in GitOps odkazuje na veľmi populárny distribuovaný systém riadenia verzií, ktorý vyvinul Linus Torvalds v roku 2005. Git je nástroj, ktorý umožňuje tímom vývojárov spolupracovať na základnom kóde aplikácie a ukladať rôzne konáre kódu, s ktorým si pohrávajú pred ich zlúčením do produkčného kódu. Kľúčovým konceptom v rámci Gitu je žiadosť o zatiahnutie, v ktorom vývojár formálne požiada o integráciu nejakého kódu, na ktorom pracoval, do inej pobočky v rámci kódovej základne.

Žiadosť o stiahnutie Git poskytuje členom tímu príležitosť spolupracovať a diskutovať pred dosiahnutím konsenzu o tom, či by sa mal do aplikácie pridať nový kód. Git ukladá aj staršie verzie kódu, čo uľahčuje návrat k poslednej dobrej verzii, ak sa niečo pokazí, a umožňuje vám rýchlo zistiť, čo sa medzi revíziami zmenilo. Git môže byť najlepšie známy ako základ GitHubu, cloudového systému riadenia verzií, ale samotný Git je softvér s otvoreným zdrojovým kódom, ktorý je možné nasadiť kdekoľvek, od interných podnikových serverov po váš počítač.

Upozorňujeme, že hoci si o Gite zvyčajne myslíme ako o nástroji programovania v počítači, je vlastne agnostické, pokiaľ ide o to, na aký obsah ho používate. Git bude s ľubovoľnou sadou textových súborov spokojne zaobchádzať ako s „bázou kódu“ a môžu ju napríklad použiť autori, ktorí chcú sledovať úpravy spoločných prác. To je dôležité, pretože veľká časť kódovej základne v jadre GitOps pozostáva skôr z deklaratívnych konfiguračných súborov ako zo spustiteľného kódu.

Na záver ešte treba povedať: Napriek tomu, že „Git“ je priamo v názve, GitOps v skutočnosti nevyžaduje použitie Gitu. GitOps môžu implementovať aj obchody, ktoré už sú investované do iného softvéru na správu verzií, ako je napríklad Subversion. Ale Git je vo svete devopsov široko používaný na implementáciu CI / CD, takže väčšina projektov GitOps skončí pomocou Gitu.

Čo je proces CI / CD?

Kompletný pohľad na CI / CD je nad rámec tohto článku - pozri vysvetlenie k tejto téme - ale musíme povedať niekoľko slov o CI / CD, pretože je to jadro fungovania GitOps. The nepretržitá integrácia polovicu CI / CD umožňujú archívy na správu verzií, ako je Git: Vývojári môžu neustále vylepšovať svoju kódovú základňu namiesto zavádzania obrovských monolitických nových verzií každých pár mesiacov alebo rokov. The nepretržité nasadenie kus je umožnený automatizovanými systémami tzv potrubia ktoré vytvárajú, testujú a nasadzujú nový kód do výroby.

Opäť stále hovoríme o kód tu a to zvyčajne vyvoláva vízie spustiteľného kódu napísané v programovacom jazyku ako C alebo Java alebo JavaScript. V GitOps je však „kód“, ktorý spravujeme, do veľkej miery tvorený konfiguračnými súbormi. Nejde len o drobný detail - je to jadro toho, čo GitOps robí. Tieto konfiguračné súbory sú, ako sme už povedali, „jediným zdrojom pravdy“ popisujúcim, ako by mal náš systém vyzerať. Oni sú deklaratívny skôr ako poučné. To znamená, že namiesto toho, aby ste povedali „spustiť desať serverov“, konfiguračný súbor jednoducho povie, „tento systém obsahuje desať serverov.“

The CI polovica rovnice GitOps umožňuje vývojárom rýchlo zaviesť vylepšenia a vylepšenia týchto konfiguračných súborov; the CD polovica sa stane, keď automatizovaní softvéroví agenti urobia maximum, aby zabezpečili, že živá verzia aplikácie zrkadlí popisy v konfiguračných súboroch - že konverguje k deklaratívnemu modelu v jazyku GitOps.

GitOps a Kubernetes

Ako sme už spomenuli, koncepty GitOps boli pôvodne vyvinuté okolo správy aplikácií Kubernetes. Čo teraz vieme o GitOps, poďme sa znovu pozrieť na diskusiu GitOps spoločnosti Weaveworks a pozrime sa, ako popisujú, ako by ste aktualizovali Kubernetes spravovaný na princípoch GitOps. Tu je zhrnutie:

  1. Vývojár požiada Git pull o novú funkciu.
  2. Kód je skontrolovaný a schválený a potom zlúčený do hlavnej kódovej základne.
  3. Zlúčenie spustí kanál CI / CD, ktorý automaticky otestuje a znova zostaví nový kód a nasadí ho do registra.
  4. Softvérový agent si všimne aktualizáciu, stiahne nový kód z registra a aktualizuje konfiguračný súbor (napísaný v YAML) v úložisku konfigurácie.
  5. Softvérový agent v klastri Kubernetes zistí, že klaster je zastaraný, na základe konfiguračného súboru, stiahne zmeny a nasadí novú funkciu.

Weaveworks a GitOps

Kroky 4 a 5 zjavne vedú veľkú časť ťažkého zdvíhania. Softvéroví agenti, ktorí magicky synchronizujú „zdroj pravdy“ v úložisku Git s aplikáciou Kubernetes v reálnom svete, sú kúzlom, ktoré umožňuje GitOps. Ako sme už povedali, v podmienkach GitOps sa proces vytvárania živých systémov podobných ideálnym systémom opísaným v konfiguračných súboroch nazýva konvergencia. (Keď živý systém a ideálny systém nie sú synchronizované, je to tak divergencia.) V ideálnom prípade by sa konvergencia dosiahla automatizovanými procesmi, existujú však limity toho, čo automatizácia dokáže, a niekedy je potrebný ľudský zásah.

Tento proces sme tu opísali všeobecne, ale ak sa skutočne pozriete na stránku Weaveworks, spomenutí „softvéroví agenti“ sú súčasťou platformy Weave Cloud spoločnosti. Pojem „GitOps“ vymyslel výkonný riaditeľ spoločnosti Weaveworks Alexis Richardson a čiastočne slúži na to, aby platforma Weaveworks priťahovala vývojárov, ktorí už boli ponorení do sveta devops a CI / CD.

Weaveworks si ale nikdy nevyžiadal monopol na GitOps, čo je skôr filozofia a súbor najlepších postupov ako konkrétny produkt. Ako poznamenáva blog pre spoločnosť CloudBees, ktorá poskytuje riešenia CI / CD, GitOps predstavuje otvorený model neutrálny voči predajcovi, ktorý bol vyvinutý v reakcii na spravované proprietárne riešenia Kubernetes, ktoré zavádzajú veľkí cloudoví dodávatelia ako Amazon, Google a Microsoft. . CloudBees ponúka svoje vlastné riešenia GitOps, rovnako ako množstvo hráčov v tomto priestore.

GitOps a devops

Spoločnosť Atlassian, ktorá vyrába množstvo nástrojov pre agilných vývojárov, má podrobný blogový príspevok o histórii a účele GitOps, ktorý stojí za váš čas. Podľa ich názoru GitOps predstavuje logické rozšírenie myšlienok, ktoré sa spojili ako devops. GitOps je konkrétne rozpracovanie konceptu infraštruktúry ako kódu, čo je sama myšlienka, ktorá vyšla z prostredia devops. GitOps, ako to vidí Atlassian, preklenul rozhodujúci rozdiel medzi existujúcimi technikami devops, ktoré sa vyvinuli na riešenie problémov správy systému, a špecifickými potrebami distribuovaných cloudových aplikácií. Špeciálna je GitOps automatizovaná konvergencia ponúkaná rôznymi dodávateľmi cloudu.

A hoci sa GitOps dnes zameriava na Kubernetes, dúfame, že sme objasnili, ako sa to týka oveľa širšieho sveta distribuovaných cloudových aplikácií. Príspevok na blogu dodávateľa zabezpečenia s otvoreným zdrojom WhiteSource popisuje výhody GitOps:

  • Pozorovateľnosť: Systémy GitOps ponúkajú monitorovanie, protokolovanie, sledovanie a vizualizáciu do zložitých aplikácií, aby vývojári videli, čo a kde sa zlomí.
  • Kontrola verzií a správa zmien: Je zrejmé, že toto je kľúčová výhoda používania systému riadenia verzií ako Git. Chybné aktualizácie je možné ľahko vrátiť späť.
  • Ľahká adopcia: GitOps stavia na schopnostiach devops, ktoré už majú mnohí vývojári.
  • Produktivita: GitOps poskytuje zvyšovanie produktivity, ktoré programy devops a CI / CD priniesli do iných sfér.
  • Auditovanie: Vďaka Gitu možno každú akciu vysledovať až po konkrétne potvrdenie, vďaka čomu je ľahké zistiť príčinu chýb.

Aj keď Kubernetes nepoužívate, je veľká šanca, že GitOps bude skôr či neskôr súčasťou vášho pracovného toku.

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