Kontejnerizace aplikací je na rozdíl od klasické virtualizace výrazně efektivnější, především díky agilitě a výrazně hospodárnějšímu využívání systémových prostředků. Ke správě a automatizaci většího množství instancí kontejnerů či kontejnerových sítí se používají orchestrační nástroje. A právě o nejrozšířenějším orchestrátoru Kubernetetes budou následující řádky, kde vám přiblížíme jeho funkce a zabezpečení.
Softwarové kontejnery si můžete docela dobře představit stejně jako klasické „analogové“ lodní kontejnery. Ty mají standardizované parametry, díky kterým se s nimi snadno a efektivně manipuluje. A totéž platí pro kontejnerizované aplikace – lze je snadno nasazovat v řádech jednotek milisekund, a to téměř v libovolném počtu a prostředí bez nutnosti úprav vnořených aplikací. Oddělením aplikací „stěnami“ jednotlivých kontejnerů odpadají případné problémy s kompatibilitou napříč odlišnými prostředími, což je ideální pro vyhledávání a odstraňování bugů během vývoje nebo ladění aplikací. Současně je tím zajištěná separace od jiných aplikací, které se tak nemohou vzájemně negativně ovlivňovat.
Výše uvedené vlastnosti (standardizace, separace ad.) zajišťují systémy, které zprostředkovávají kontejnerovou virtualizaci. Mezi nejznámější patří systém Docker, který v současnosti využívá více než 80 % všech softwarových kontejnerů. Pokud bychom se i nadále drželi příhodné analogie s lodními kontejnery, mohli bychom si Docker (popř. jiný obdobný systém) představit jako nákladní kontejnerovou loď. Každá větší kontejnerová loď ovšem potřebuje spolehlivého kormidelníka, kterého v našem případě představuje orchestrátor kontejnerové virtualizace.
→ Tip: Přečtěte si o výhodách kontejnerizace a automatizace aplikací.
Orchestrace kontejnerizovaných aplikací
Díky odlehčenému standardizovanému formátu kontejnerů je můžete nejen v zásadě okamžitě spouštět, ale i jednoduše zastavovat, kopírovat, vertikálně škálovat a migrovat mezi prostředími. Snadno tedy vytvoříte stovky či tisíce kontejnerů sdružených do kontejnerových sítí. Abyste mohli s velkým množstvím kontejnerizovaných aplikací efektivně nakládat i vzhledem k dostupnosti aktuálních systémových prostředků, musíte zajistit jejich orchestraci. Ta seskupuje skupiny kontejnerů do provozních jednotek, tzv. podů. Pody se dále škálují orchestrací na aktuálně požadovaný stav. To zahrnuje vyrovnávání zatížení automatickým spouštěním a zastavováním kontejnerů podle dostupnosti aktuálních systémových prostředků a požadavků.
Kubernetes aneb kormidlo pevně v rukách
Mezi nejznámější a nejpoužívanější orchestrátory patří open-source systém Kubernetes. Jeho název je anglickou transkripcí starořeckého „kybernétés“, které můžeme přeložit jako právě onoho zmíněného kormidelníka (odtud tedy ikonické modré kormidlo představující logo systému). Kubernetes vyvinul původně Google a v současnosti využívá už vlastní stejnojmenný protokol (někdy označovaný jako k8s nebo k-eights) k vytváření, doručování a škálování kontejnerizovaných aplikací.
Kubernetes poskytuje následující funkcionality:
- automaticky plánuje, nasazuje a zastavuje kontejnery a spravuje jejich životní cyklus
- automaticky spravuje zjišťování služeb
- sleduje a kontroluje přidělování jednotlivých prostředků
- škáluje na základě využití prostředků
- začleňuje vyrovnávání zatížení
- umožňuje kontejnerizovaným aplikacím, aby se samy opravily automatickým restartováním nebo replikací kontejnerů
Zpátky na palubu aneb zálohování
Není divu, že se stále více společností přiklání ke kontejnerizaci a její správě právě pomocí systému Kubernetes, který se postupně stal jakýmsi moderním standardem pro orchestraci a správu kontejnerů. Měli byste si ale uvědomit, že softwarové kontejnery byly původně určené pro správu bezstavových (stateless) aplikací. Pokud kontejner nebo jeho nadřazený systém „zamrzne“ nebo je zastavený, z pohledu orchestrace se nic neděje – okamžitě se spustí nový kontejner. Jenže ten už kvůli stateless principu nebude obsahovat uživatelská data původního kontejneru. Z toho důvodu musíte všechna stavová data ukládat mimo kontejnery, nejlépe do trvalých svazků, které bez úhony přežijí „smrt“ kontejnerů.
Problém je, že se začíná pod Kubernetes objevovat stále více kontejnerizovaných aplikací, které běží „stavově“. To znamená, že do kontejnerů ukládají i uživatelská data. Abyste neriskovali jejich ztrátu, měli byste zajistit nativní zálohování a zotavení po havárii přímo v systému Kubernetes. Pozor ale na potenciálně problematické obnovení dat, které by probíhalo napříč různými verzemi Kubernetes.
Bezpečnost dat a Kubernetes
Společnost StackRox (v současnosti spadající přímo pod Red Hat) provádí pravidelně průzkum ohledně zavádění systému Kubernetes, a to mezi více než 500 experty v oblastech bezpečnosti a DevOps. 94 % respondentů uvedlo, že během posledního roku došlo v prostředí Kubernetes k bezpečnostnímu incidentu. 55 % dotazovaných potom muselo kvůli bezpečnosti dat odložit nasazení aplikací.
Správa konfigurace systému představuje pro odborníky na bezpečnost dat značnou výzvu. Z průzkumu totiž vyplynulo, že:
- 59 % respondentů se za poslední rok setkalo s bezpečnostním incidentem v prostředí Kubernetes způsobeným chybnou konfigurací.
- 31 % dotazovaných objevilo v této souvislosti závažnou zranitelnost.
- 32 % respondentů se setkala s bezpečnostním incidentem za provozu systému.
- 47 % účastníků průzkumu se obává rizik plynoucích z chybné konfigurace systému Kubernetes.
Abyste výše uvedeným problémům předešli, co nejvíce automatizujte správu konfigurace systému. Bezpečnost dat v prostředí Kubernetes vám nejlépe zajistí dedikované nástroje pro bezpečnou konfiguraci kontejnerů a systémových parametrů.
Firmy a společnosti stále častěji nasazují kontejnerizaci aplikací a Kubernetes, bohužel ale současně neinvestují do nezbytných bezpečnostních strategií a nástrojů. Neadekvátní investice do bezpečnosti dat jsou přitom u respondentů průzkumu nejčastěji zmiňovaným úskalím v souvislosti se strategiemi kontejnerizace. Neriskujte bezpečnost kritických aplikací.
Bezpečnostní problematika je o to komplikovanější, že v současnosti dochází ke zjednodušování přístupu v samotném systému Kubernetes. Jednotlivé části Kubernetes se vyvíjejí jako nezávislé moduly, vyžadují tedy skutečně komplexní pohled na problematiku bezpečnosti dat. Věnujte proto zvýšenou pozornost novým nástrojům na prosazování zásad systému. Na druhou stranu očekáváme, že, že distributoři Kubernetes začnou přidávat další bezpečnostní funkce přímo do svých řešení. To by mělo určitým způsobem zvýšit celkovou bezpečnost dat a snížit náklady na zabezpečení nasazení systému.
Kurz: vpřed!
Kubernetes se za poslední dobu v zásadě stal standardem orchestrace kontejnerizovaných aplikací. Samozřejmě neustále probíhá optimalizace a jakési dozrávání a stabilizace systému. Ten v současné době poskytuje ideální prostředí pro AI a ML – zejména škálovatelnost, optimální čerpání prostředků GPU a CPU, snadnou migraci pracovních úloh a mnoho dalšího…
V Algotechu to dobře víme, a proto vám rádi poskytneme bezpečnou cloudovou kontejnerizaci hned v několika konfiguracích. Ozvěte se nám, rádi vám poradíme s bezpečnou konfigurací Kubernetes.