Blog
29. 6. 2020

Kubernetes – módní vlna nebo užitečný nástroj?

IPEX přechází na Kubernetes, nejnovější trend oblasti DevOps. Je to jen módní výstřelek, nebo jde skutečně o potřebný nástroj? Společně s GeeToo jsme 17.6. pořádali webinář na toto téma, kterého se za IPEX účastnil Petr Pliska, architekt aplikací. Pro ty, kteří webinář nestihli přinášíme článek o Kubernetes a zároveň odkaz na video z webináře.

Kontejnery

Abychom mohli mluvit o Kubernetes, pojďme si nejprve říct něco o Kontejnerech. Kontejnery najdeme je v celé řadě operačních systémů, avšak mnohdy pod jiným jménem. V BSD systémech jsou to Jails, v Solarisu jsou to Zones a v Linuxu pak mluvíme o Kontejnerech. Kontejner je proces nebo skupina procesů běžící v operačním systému, stejně jako kterékoliv další aplikace. Navíc však využívají izolačních vlastností jádra operačního systému. Ve výsledku se potom kontejner může tvářit, jako by se jednalo o zcela samostatný server. My používáme slovo kontejner výhradně pro linuxové kontejnery splňující OCI standard, které vešly do povědomí zejména díky nástroji Docker.

Docker sám o sobě není žádnou novou technologií, ale zpřístupnil oblast linuxových kontejnerů, která byla dříve doménou jen vybraných specialistů, široké veřejnosti. Díky již zmíněné standardizaci v této oblasti (OCI), není již Docker tak důležitý a existuje spousta alternativních nástrojů. Za zmínku stojí Podman, lXC nebo CRI-O. Hlavní přínos provozování aplikací v kontejnerech je abstrakce aplikací od serveru. Provozování kontejneru sebou přináší jistou režii, která se značně komplikuje, pokud překročíme hranice jednoho serveru. Tento problém potom řeší tzv. orchestrační nástroje např. Kubernetes

Kubernetes

Kubernetes vzniklo jako referenční implementace interního výzkumu v Google. V  následném dokumentu z tohoto výzkumu je shrnuta 15letá zkušenost Google s provozem aplikací v kontejnerech. Kubernetes nám poskytuje všechny potřebné abstrakce pro provozování aplikací v kontejnerech na produkci. Pokud hlavní přínos kontejnerů vnímáme jako abstrakci od serverů, Kubernetes potom můžeme vnímat jako abstrakci od infrastruktury. Jasně se potom definují zodpovědnost provozních složek (Ops) a vývojových teamů (Dev), kdy Ops dodají funkční Kubernetes prostředí a Dev potom píší aplikace (ideálně dle The Twelve-Factor Application). Alternativy ke Kubernetes mohou být třeba Docker Swarm nebo Apache MESOS. Kubernetes ale vnímáme v oblasti orchestrace jako standard, a proto alternativy uvádíme jen pro doplnění.

Kontejnery, Kubernetes a my

V IPEXu používáme kontejnery v produkci od začátku roku 2015. V té době nebyl k dispozici žádný rozumný orchestrátor pro kontejnery, proto jsme si napsali vlastní orchestrátor. Aktuálně již nemá smysl věnovat úsilí rozvoji tohoto řešení, a proto připravujeme migraci do Kubernetes. Z povahy našich produktů máme ale dost specifické požadavky. Více datacenter, vlastní síťová infrastruktura apod. přináší velkou náročnost pro implementaci Kubernetes, a proto je u nás tento postup zdlouhavější.

S migrací do Kubernetes postupujeme tak, že aktuálně převádíme vývojové a testovací prostředí z vlastní orchestrace do Kubernetes clusteru, který jsme si nainstalovali sami, jelikož nemusí být v produkčním nastavení.  Tento postup jsme zvolili, protože chceme odladit celý způsob deploymentu aplikací, který bude totožný v produkčním prostředí.

Dále pracujeme na kontejnerizaci zákaznických ústředen, tento proces je ale zdlouhavý.  Spustit jakoukoliv aplikaci v kontejneru není tak složité, nicméně pro dlouhodobý provoz to již vyžaduje precizní přípravu.  Ústředen máme navíc více než 600, takže i příprava infrastruktury zabere nějaký čas.

Nicméně jsme již na dobré cestě v horizontu jednotek měsíců přenést všechny kontejnerizované aplikace do Kubernetes a máme i dlouhodobou vizi, jak postupovat u složitější aplikací, které v současnosti běží ve virtuálních strojích.

Zároveň Kubernetes používáme v IPEXu již déle než rok pro vytváření velkých testovacích infrastruktur, kde simulujeme reálný provoz callcenter s velkým počtem hovorů. Tento typ testů nám nám například pomohl zlepšit výkon a stabilitu realtime řešení panelů callcentra.

A proč vlastně Kubernetes?

Nasazení Kubernetes v IPEXu nám pomůže vyřešit několik dlouhodobých problémů, tím nejdůležitějším bude snížení závislosti Dev teamu na Ops složkách. Nyní máme v IPEXu zcela odděleno vydávání aplikací od vývoje, vývojáři sice mohou nasazovat nové verze již existujících aplikací, ale novou aplikaci nasadit nemohou. Dalším přínosem bude opuštění vlastního řešení, které již dnes nemá smysl dále rozvíjet, Kubernetes totiž řeší vše, co potřebujeme a nahrazuje to, co jsme si v minulosti museli vytvořit. Jedním z dalších důležitých přínosů je potom standardizace, Kubernetes jsou totiž de facto standardem v dané oblasti, spousta dalších nástrojů se instaluje právě do Kubernetes. Kromě toho počítáme i s tím, že využijeme i možnosti rozšířit si Kubernetes API. V IPEXu se navíc dlouhodobě snažíme o vetší spolupráci Ops a Dev (DevOps) a nasazení Kubernetes považujeme za další krok na této cestě.

 

Chcete vědět více? Podívejte se na záznam z našeho webináře na YouTube.