Správa cloudu 3: Přejděte na GitOps – moderní koncept řízení a provozu aplikací a infrastruktury

GitOps – moderní řízení a provoz aplikací a infrastruktury | Encyklopedie cloudu ORBIT

V tomto článku prozkoumáme, jak koncept GitOps usnadňuje vývojářům a operations týmu spolupráci při správě a nasazování aplikací i infrastruktury. Jakých výhod mohou organizace přechodem na GitOps dosáhnout? Připravte se na zásadní zvrat ve způsobu, jakým řídíte své aplikace a infrastrukturu. Odměnou vám bude větší rychlost, spolehlivost a bezpečnost při vývoji softwaru a provozu aplikací.

Petros Georgiadis

Naši minisérii o správě cloudu jsme začali článkem jak patchovat cloudové systémy. Navázali jsme článkem o bezpečnosti v cloudu a skenování zranitelností a teď sérii zakončíme popisem end-to-end procesu, který nám celou správu cloudu spojí pěkně dohromady.

Na scénu vstupuje GitOps – moderní koncept řízení a provozu aplikací a infrastruktury, který přináší nový přístup ke správě vývoje, nasazování a monitorování. Je založen na principu Everything as Code a klade důraz na verzování, spolupráci a automatizaci prostřednictvím verzovacího systému Git.

DevOps a GitOps – jaký je v tom rozdíl?

DevOps (jemuž se podrobněji věnuje tento článek) je filozofie, která klade důraz na spolupráci mezi development a operations týmy. Jejím cílem je zbořit hradby a podpořit spoluodpovědnost za deployment, údržbu a provoz softwaru.

DevOps je způsob řízení, který kombinuje vývoj softwaru (development) s provozem a správou infrastruktury (operations). DevOps týmy se snaží odstranit bariéry mezi odděleními, podporovat automatizaci (CI/CD) a agilní metody.

GitOps je konkrétní metodologií a technikou, která spadá pod širší rámec DevOps. Zakládá se na myšlence, že celý stav infrastruktury a aplikací by měl být popsán a uložen ve verzovacím systému Git. To znamená, že všechny změny v infrastruktuře a kódu jsou zachyceny v Git repozitáři a mohou být verzovány, spravovány a monitorovány jako kód.

Zatímco DevOps se zaměřuje na širší kulturní a organizační aspekty dodávky softwaru a provozu, GitOps poskytuje specifickou implementaci a osvědčené postupy v rámci DevOps frameworku, přičemž jako klíčový nástroj pro správu infrastruktury a konfigurací aplikací využívá Git.

 

Základní pojmy konceptu GitOps

Než se ponoříme do hloubi GitOpsu, pojďme si ve zkratce vysvětlit pár základních pojmů.

1) Git

Git je distribuovaný systém správy verzí, který se používá ke sledování změn v kódu a usnadňuje spolupráci více „vývojářů“ na jednom projektu. Díky Gitu mohou vývojáři snadno sledovat historii změn, vracet se k předchozím verzím a řešit konflikty.

Klíčovým konceptem Gitu je „commit“, což je základní jednotka změn, kterou lze snadno označit a popsat. Commity jsou nahrávány do centrálního repozitáře, kde se propojí s ostatními změnami od různých vývojářů. Každý tak vidí, jaké změny provedli kolegové.

Git tedy umožňuje vývojářům efektivně spolupracovat a udržovat kvalitu kódu na vysoké úrovni.

Co je to Git | Encyklopedie cloudu ORBIT

2) Git branching

Git branching (česky větvení) je klíčovou funkcí Git, která umožňuje vývojářům pracovat na různých funkcionalitách nezávisle na sobě. Při vytváření nové branch (větve) se vytváří kopie stávajícího stavu projektu, kterou mohou vývojáři upravovat a experimentovat s ní bez vlivu na hlavní vývojovou branch (typicky nazývanou master nebo main).

Jakmile jsou změny hotové a ověřené, mohou být sloučeny zpět do hlavní branch pomocí „merge“. Git branching tedy zvyšuje produktivitu vývojářů a usnadňuje řešení konfliktů.

Git merge request | Encyklopedie cloudu ORBIT

3) Git merge request

Merge request (také nazývaný pull request) je proces, který umožňuje vývojářům navrhnout a diskutovat o změnách provedených v jejich větvích kódu a následně je začlenit do hlavní vývojové větve.

Podáním merge requestu se týmu a vedoucímu projektu umožní posoudit navrhované změny, provést revizi kódu, případně o změnách diskutovat ještě před sloučením do hlavní větve.

Git merge request | Encyklopedie cloudu ORBIT

4) Infra as Code (IaC)

Infrastructure as Code (IaC) je přístup k řízení a správy infrastruktury pomocí kódu. Namísto manuálního nastavování a konfigurace infrastruktury se IaC opírá o skripty a konfigurační soubory, které popisují požadovaný stav. Tento kód může být uložen ve verzovacím systému, jako je Git, a snadno sdílen a spravován týmem.

Díky IaC (o němž píšeme podrobněji zde) je možné infrastrukturu rychle a konzistentně nasazovat, škálovat a obnovovat. Automatizovaná povaha IaC minimalizuje riziko lidských chyb, což vede k efektivnější správě a vyšší spolehlivosti celého IT prostředí.

Infrastructure as Code | Encyklopedie cloudu ORBIT

5) CI/CD pipeline

Continuous Integration/Continues Delivery (CI/CD) pipeline je sada kroků a nástrojů operujících nad verzovacím systémem git, se kterou můžeme ze zdrojových kódů aplikace a IaC skriptů automaticky vytvořit běžící systém. Díky CI/CD pipeline je celý proces nasazení plně automatizovaný, rychlý, spolehlivý a opakovatelný (více o deployment pipelinách v tomto článku).

Když těchto pět principů vhodně sloučíme do GitOps procesu, získáme spolehlivost, konzistenci a jednoduchost při nasazování a rozšiřování našeho IT systému.

GitOps v detailu

GitOps je operační paradigma, které kombinuje sílu Gitu s principy IaC a automatizace. Přináší deklarativní přístup k řízení a udržování infrastruktury a aplikací po celý jejich životní cyklus.

V rámci pracovního postupu GitOps je požadovaný stav systému (včetně konfigurace infrastruktury, kódu aplikace a konfigurace nasazení) definován a uložen jako kód v repozitáři Git. Tento kód slouží jako jediný zdroj pravdy.

Základní myšlenkou GitOps je použít Git jako hlavní prostředek pro řízení a propagaci změn v systému. S Gitem jako řídící vrstvou jsou všechny změny prováděny prostřednictvím commitů a merge requestů. Tento přístup zajišťuje, že všechny změny jsou auditovatelné, verzované a podléhají revizím kódu.

GitOps využívá principy CI/CD pro automatizované nasazování změn. Když jsou změny potvrzeny v Gitu, CI/CD pipeline automaticky sestaví, otestuje a nasadí aktualizovanou konfiguraci. Tento automatizovaný proces zajišťuje konzistenci a spolehlivost a snižuje manuální úlohy náchylné k chybám.

Jednou z hlavních výhod GitOps je Gitem řízený a auditovatelný change management process. Kompletní historie změn (včetně toho, kdo je provedl a kdy) je uložena v Gitu, což umožňuje snadnou sledovatelnost a případné vrácení změn zpět, pokud by to bylo nutné.

GitOps a cloud

A jak vůbec souvisí GitOps s patchováním cloudových systémů, popřípadě s bezpečností v cloudu a skenováním zranitelností, které jsem zmiňoval v úvodu článku? Hlavní je být schopný nasazovat změny, např. security patche, bez velké námahy a přitom se 100% kvalitou. Přesně to nám zajistí výše popsané GitOps postupy.

Pokud se tedy rozhodnete pro koncept GitOps, přinese vám efektivitu, spolehlivost a bezpečnost do procesu správy infrastruktury a aplikací. Pomůže vašim týmům lépe spolupracovat, zvýší rychlost nasazování změn a zajistí konzistenci a spolehlivost IT systémů. A to není málo.

O autorovi
Petros Georgiadis
Petros Georgiadis

Cloud Consultant & Architect | LinkedIn

Petros rozviřuje stojaté vody v oblasti správy IT infrastruktury. Jeho cílem je ukázat, že osvojení a implementace principů DevOps a automatizace usnadňují správu IT. 

Technické znalosti: AWS, Infrastructure as a Code, DevOps