Programování

Co je GitOps? Rozšíření devops na Kubernetes a dále

V posledním desetiletí programování došlo k řadě revolučních transformací. Jeden vznikl na základě shluku postupů kolem devops, který spojuje vývojové a provozní týmy do sdíleného pracovního procesu, a nepřetržité integrace a nepřetržitého doručování (CI / CD), ve kterém devops týmy dodávají neustálé přírůstkové aktualizace kódové základny. Další transformace pochází ze souvisejícího přechodu z monolitických kódových bází na cloudové mikroslužby spuštěné v kontejnerech spravovaných orchestračními platformami, jako je Kubernetes.

Aplikace založené na kontejnerech spuštěné v klastrovaných systémech nebo v cloudu mohou být složité a obtížně zajišťovatelné a spravovatelné, a to i na platformě, jako je Kubernetes, která organizuje věci. GitOps je rozvíjející se sada postupů, která si klade za cíl zjednodušit tento úkol správy použitím technik ze světa devops a CI / CD.

Klíčem k GitOps je myšlenka infrastruktury jako kódu, která zaujímá stejný přístup k zajišťovací infrastruktuře jako devops používá k zajišťování aplikací. Takže nejen aplikace, ale také základní hostitelské počítače a sítě jsou popsány v souborech, s nimiž lze zacházet jako s jakýmkoli jiným kódem v systému pro správu verzí, přičemž automatizované procesy pak pracují na konvergování reálné aplikace s aplikací popsanou v těchto soubory.

V jazyce GitOps je kód v systému správy verzí jediný zdroj pravdy o tom, jak by aplikace měla vypadat ve výrobě

GitOps definováno

Weaveworks je společnost, která se nejvíce snažila popularizovat koncept GitOps. Trochu se podíváme na podrobnosti role Weaveworks, ale nejprve se podívejme na definici společnosti GitOps, která je dvojí:

  • Provozní model pro Kubernetes a další cloudové nativní technologie, poskytující sadu osvědčených postupů, které sjednocují nasazení, správu a monitorování pro kontejnerové clustery a aplikace.
  • Cesta k vývojářskému prostředí pro správu aplikací; kde se na operace a vývoj aplikují end-to-end kanály CI / CD a pracovní postupy Git.

Jinými slovy, GitOps je specifická sada postupů určených ke správě Kubernetes a podobných platforem, která se také hodí k možné širší aplikaci, protože stále více vývojových obchodů přijímá postupy devops a migruje kód do cloudu. Abychom však pochopili tajnou omáčku GitOps a problémy, které řeší, musíme si promluvit o součástech, které do ní vstupují.

Definice Git 

The Git in GitOps odkazuje na velmi populární distribuovaný systém pro správu verzí vyvinutý Linusem Torvaldsem v roce 2005. Git je nástroj, který umožňuje týmům vývojářů spolupracovat na základně kódů aplikací a ukládat různé větve kódu, s nímž si pohrávají, než je spojí do produkčního kódu. Klíčovým konceptem v rámci Gitu je vytáhnout požadavek, ve kterém vývojář formálně požádá o integraci nějakého kódu, na kterém pracoval, do jiné větve v rámci codebase.

Požadavek na vytažení Git poskytuje příležitost členům týmu spolupracovat a diskutovat před dosažením konsensu o tom, zda by měl být nový kód přidán do aplikace. Git také ukládá starší verze kódu, což usnadňuje návrat k poslední dobré verzi, pokud se něco pokazí, a umožňuje vám rychle zjistit, co se mezi revizemi změnilo. Git může být nejlépe známý jako základ GitHubu, cloudového hostovaného systému pro správu verzí, ale samotný Git je open source software, který lze nasadit kdekoli, od interních podnikových serverů po váš počítač.

Všimněte si, že i když si obvykle Git představujeme jako nástroj pro programování v počítači, je ve skutečnosti agnostické, k jakému obsahu jej používáte. Git bude šťastně zacházet s jakoukoli sadou textových souborů jako s „základnou kódu“ a může ji například použít spisovatel, který chce mít přehled o úpravách společného díla. To je důležité, protože velká část codebase v jádru GitOps se skládá spíše z deklarativních konfiguračních souborů než ze spustitelného kódu.

Ještě jedna věc, kterou musíme říci, než půjdeme dál: Navzdory tomu, že „Git“ je přímo v názvu, GitOps ve skutečnosti nevyžaduje používání Gitu. Obchody, které jsou již investovány do jiného softwaru pro správu verzí, jako je Subversion, mohou implementovat také GitOps. Ale Git je široce používán ve světě devops k implementaci CI / CD, takže většina projektů GitOps skončí pomocí Git.

Co je proces CI / CD?

Úplný pohled na CI / CD je nad rámec tohoto článku - viz vysvětlující téma na toto téma - ale je třeba říci několik slov o CI / CD, protože je jádrem fungování GitOps. The kontinuální integrace polovinu CI / CD umožňují repozitáře pro správu verzí, jako je Git: Vývojáři mohou neustále vylepšovat svou kódovou základnu, místo aby vydávali obrovské monolitické nové verze každých několik měsíců nebo let. The nepřetržité nasazení kus je umožněn automatizovanými systémy zvanými potrubí které vytvářejí, testují a nasazují nový kód do výroby.

Opět o tom stále mluvíme kód zde, a to obvykle přivolává vize spustitelného kódu napsaného v programovacím jazyce, jako je C nebo Java nebo JavaScript. Ale v GitOps je „kód“, který spravujeme, do značné míry tvořen konfiguračními soubory. Nejde jen o drobný detail - je to jádro toho, co GitOps dělá. Tyto konfigurační soubory jsou, jak jsme již řekli, „jediným zdrojem pravdy“ popisujícím, jak by měl náš systém vypadat. Oni jsou deklarativní spíše než poučné. To znamená, že namísto „spuštění deseti serverů“ konfigurační soubor jednoduše řekne „tento systém obsahuje deset serverů.“

The CI polovina rovnice GitOps umožňuje vývojářům rychle zavést vylepšení a vylepšení těchto konfiguračních souborů; the CD polovina se stane, když se automatizovaní softwaroví agenti budou snažit zajistit, aby živá verze aplikace zrcadlila popisy v konfiguračních souborech - že konverguje k deklarativnímu modelu v jazyce GitOps.

GitOps a Kubernetes

Jak jsme již zmínili, koncepty GitOps byly původně vyvinuty kolem správy aplikací Kubernetes. S tím, co nyní víme o GitOps, pojďme se znovu podívat na diskusi GitOps Weaveworks a podívejme se, jak popisují, jak byste aktualizovali Kubernetes spravovaný na principech GitOps. Zde je shrnutí:

  1. Vývojář provede požadavek Git na vyžádání nové funkce.
  2. Kód je zkontrolován a schválen a poté sloučen do hlavní databáze kódů.
  3. Sloučení spouští kanál CI / CD, který automaticky testuje a znovu sestavuje nový kód a nasazuje jej do registru.
  4. Softwarový agent si všimne aktualizace, načte nový kód z registru a aktualizuje konfigurační soubor (napsaný v YAML) v úložišti konfigurace.
  5. Softwarový agent v klastru Kubernetes zjistí, že klastr je zastaralý, na základě konfiguračního souboru, stáhne změny a nasadí novou funkci.

Weaveworks a GitOps

Kroky 4 a 5 zjevně provádějí velkou část těžkého zvedání. Softwaroví agenti, kteří magicky synchronizují „zdroj pravdy“ v úložišti Git s aplikací Kubernetes v reálném světě, jsou kouzlem, které umožňuje GitOps. Jak jsme již řekli, v podmínkách GitOps se proces vytváření živých systémů podobajících se ideálním systémům popsaným v konfiguračních souborech nazývá konvergence. (Když živý systém a ideální systém nejsou synchronizovány, je to divergence.) V ideálním případě by se konvergence dosáhlo automatizovanými procesy, existují však limity toho, co automatizace dokáže, a někdy je nutný lidský zásah.

Tento proces jsme zde popsali obecně, ale ve skutečnosti, pokud se skutečně podíváte na stránku Weaveworks, „softwaroví agenti“, které jsme zmínili, jsou součástí platformy Weave Cloud společnosti. Termín „GitOps“ vytvořil generální ředitel společnosti Weaveworks Alexis Richardson a částečně slouží k tomu, aby platforma Weaveworks přitahovala vývojáře, kteří již byli ve světě devops a CI / CD.

Weaveworks však nikdy neprohlásil monopol na GitOps, což je spíše filozofie a soubor osvědčených postupů než konkrétní produkt. Jak poznamenává blog pro CloudBees, společnost poskytující řešení CI / CD, GitOps představuje otevřený model neutrální vůči prodejcům, který byl vyvinut v reakci na spravovaná proprietární řešení Kubernetes zaváděná velkými cloudovými prodejci jako Amazon, Google a Microsoft . CloudBees nabízí vlastní řešení GitOps, stejně jako řada hráčů v tomto prostoru.

GitOps a devops

Atlassian, společnost, která vyrábí řadu nástrojů pro agilní vývojáře, má podrobný blogový příspěvek o historii a účelu GitOps, který stojí za váš čas. Podle jejich názoru GitOps představuje logické rozšíření myšlenek, které se spojily jako devops. Konkrétně GitOps je rozpracováním konceptu infrastruktury jako kódu, což je samotný nápad, který vychází z prostředí devops. GitOps, jak to vidí Atlassian, překlenul zásadní rozdíl mezi existujícími technikami devops, které se vyvinuly za účelem řešení problémů se správou systému, a specifickými potřebami distribuovaných cloudových aplikací. Díky GitOps je GitOps speciální díky automatické konvergenci nabízené různými dodavateli cloudů.

A zatímco se GitOps dnes soustředí na Kubernetes, doufáme, že jsme objasnili, jak to platí pro mnohem širší svět distribuovaných cloudových aplikací. Blogový příspěvek dodavatele zabezpečení s otevřeným zdrojem, WhiteSource, popisuje výhody GitOps:

  • Pozorovatelnost: Systémy GitOps nabízejí monitorování, protokolování, sledování a vizualizaci do složitých aplikací, aby vývojáři mohli vidět, co a kde se děje.
  • Řízení verzí a správa změn: Je zřejmé, že se jedná o klíčovou výhodu používání systému pro správu verzí, jako je Git. Chybné aktualizace lze snadno vrátit zpět.
  • Snadné přijetí: GitOps staví na schopnostech devops, které již mají mnozí vývojáři.
  • Produktivita: GitOps poskytuje zvýšení produktivity, které devops a CI / CD přinesly do jiných sfér.
  • Auditování: Díky Gitu lze každou akci vysledovat ke konkrétnímu potvrzení, což usnadňuje sledování příčiny chyb.

I když Kubernetes nepoužíváte, je velká šance, že GitOps dříve či později bude součástí vašeho pracovního postupu.