Nejprve (doslova) k jádru věci – CoreOS je linuxová distribuce, která vznikla forknutím Chromium OS, a jejíž první veřejně vydaná verze (v94.0.0) vyšla na konci roku 2013.
Poznámka: pro zajímavost si všimněte, jak vysoké je číslo verze – v době psaní článku je poslední (nestabilní) verze 738.1.0. Je to způsobeno progresivním vývojem, kdy dochází často k razantním změnám, a použitím sémantického verzování.
Přestože je CoreOS relativně mladý operační systém, není problém s nasazením prakticky kdekoliv – na vlastním hardwaru, zavést jej přes síť (PXE) nebo rovnou spustit v cloudu (třeba u Amazonu). Za krátkou dobu se vývojářům podařilo implementovat nespočet zajímavých funkcí a dostat systém do fáze, kdy je možné jej využívat i k nasazení kritických aplikací.
Tohle ovšem není ani zdaleka to, co uživatele ke CoreOS táhne. Jsou to tři trochu odlišné vlastnosti…
Práce s kontejnery
Můžete namítat, že kontejnery jsou s námi už pěknou řádku let a nejde o nic nového, vždyť OpenVZ přišlo už v roce 2005, jails v BSD jsou ještě déle. CoreOS ale přináší nástroj rkt (vyslovuje se jako „rock-it“), který je velmi podobný Dockeru (který CoreOS dříve využíval, ale kvůli směru, jakým se vývoj začal ubírat, jej vývojáři CoreOS opustili).
Díky tomuto nástroji můžete třeba na svém laptopu sestavit obraz s aplikací a doručit ho na neomezený počet serverů, kde ho později jednoduše spustíte. Aktualizace je stejně jednoduchá – jen nahrajete upravený obraz a spustíte. Důležitý je i fakt, že při standardní virtualizaci běží na stroji více operačních systémů, což u kontejneru není třeba. Všechny instance sdílí stejné jádro, ale jsou přesto oddělené.
Výhody jsou zřejmé – šetření prostředků, snazší nasazení a spouštění aplikací.
Sdílená konfigurace
Dalším mocným nástrojem CoreOS je etcd, z jehož názvu je účel patrný. Stejně, jako do adresáře /etc
ukládáme konfiguraci softwaru, do úložiště etcd ukládají naše aplikace svoji konfiguraci, která je sdílená napříč všemi instancemi. Pro ukládání je pak použit model klíč – hodnota.
Pokud byste museli změnit konfiguraci v kontejneru, aktualizovat obraz na všech serverech a znovu spouštět, zabralo by to dost času. Opět je snazší jen zapsat novou hodnotu do klíče a nechat instanci, aby si hodnotu získala sama – bez restartu, bez výpadku. Ušetříte tím nejen čas, ale i práci.
Sdílet lze i systém init
fleet je – jednoduše řečeno – distribuovaný systém init. Představte si, že musíte ručně spouštět služby na jednotlivých instalacích operačního systému. Díky systému fleet je v CoreOS možné spravovat služby z jednoho místa.
Samotná utilita funguje prostě tak, že na uzlech v clusteru umožní centrálně řídit systemd. Lze říct, jakou a kolikrát chcete spustit službu, fleet se postará o vše ostatní. Stavba a následné řízení clusteru je tak docela jednoduché - pokud zvládnete pracovat se systemd na svém počítači, tohle pro vás bude hračka.
Celé je to navíc zatraceně rychlé
CoreOS je sice forkem Chromium OS, ale tím vlastně dědí přední vlastnost Gentoo – rychlost. V CoreOS je jen to nejdůležitější a nic víc, což je něco, s čímž se v praxi setkáváme běžně jen u cloudových verzí distribucí, ve kterých je ale stále spoustu věcí navíc.
CoreOS je prostě jen holý základ nutný k tomu, abyste na něm spustili kontejnery, čemuž rychlost odpovídá. Sice žijeme v době, kdy běžný desktop nabootuje za pár vteřin, ale při potřebě restartovat stroj, na kterém může běžet část vaší oblíbené sociální sítě, zpravodajský server nebo cokoliv jiného, se každý zlomek sekundy, který je ušetřen, počítá.
Abych to shrnul, CoreOS se hodí především pro serverovým administrátorům, kteří chtějí ušetřit své firmě peníze a sobě práci – jestli do této kategorie patříte, určitě o CoreOS alespoň popřemýšlejte. Pokud se o tuto oblast jen zajímáte, určitě vám můžu doporučit zkusit si postavit vlastní cluster – je to zábava na celý víkend, když si s tím chcete hrát a nemůžete se odtrhnout (vlastní zkušenost).
- Oficiální web: https://coreos.com
- Dokumentace: https://coreos.com/docs/
- Obrazy: https://coreos.com/releases/