Komplexný ekosystém Docker ponúka vývojárom množstvo možností na nasadenie aplikácií, koordináciu kontajnerov a ďalšie funkcie. Prejdeme si najdôležitejšie nástroje Docker a poskytneme vám prehľad najpopulárnejších projektov tretích strán, ktoré vyvíjajú open-source nástroje Docker.

Aké sú základné nástroje/komponenty Dockeru?

Dnes je Docker oveľa viac než len sofistikovaná platforma na správu softvérových kontajnerov. Vývojári vytvorili rad rôznorodých nástrojov Docker, aby bolo nasadzovanie aplikácií prostredníctvom distribuovanej infraštruktúry a cloudových prostredí jednoduchšie, rýchlejšie a flexibilnejšie. Okrem nástrojov na zoskupovanie a koordináciu existuje aj centrálny trh s aplikáciami a nástroj na správu cloudových zdrojov.

Docker Engine

Keď vývojári hovoria „Docker“, zvyčajne majú na mysli open-source klient-server aplikáciu, ktorátvorí základ kontajnerovej platformy. Táto aplikácia sa nazýva Docker Engine. Centrálnymi komponentmi Docker Engine sú Docker daemon, REST API a CLI (rozhranie príkazového riadku), ktoré slúži ako používateľské rozhranie.

S týmto dizajnom môžete komunikovať s Docker Engine prostredníctvom príkazov v príkazovom riadku a pohodlne spravovať obrazy Docker, súbory Docker a kontajnery Docker z terminálu.

Obrázok: Schematic representation of the Docker engine
The main components of the Docker engine: the Docker daemon, REST API and Docker CLI

Podrobný popis Docker Engine nájdete v našom tutoriáli Docker pre začiatočníkov Tutoriál Docker: inštalácia a prvé kroky.

Docker Hub

Docker Hub poskytuje používateľom cloudový registrový systém, ktorý umožňuje sťahovanie obrazov Docker, ich centrálne spravovanie a zdieľanie s ostatnými používateľmi Docker. Registrovaní používatelia môžu obrazy Docker ukladať verejne alebo v súkromných úložiskách. Na stiahnutie verejného obrazu (v terminológii Docker známe ako „pulling“ ) nie je potrebný používateľský účet. Integrovaný mechanizmus značiek umožňuje verzionovanie obrazov.

Okrem verejných repozitárov iných používateľov Dockeru existuje aj mnoho zdrojov od vývojárskeho tímu Dockeru a známych open-source projektov, ktoré možno nájsť v oficiálnych repozitároch v Docker Hub. Medzi najpopulárnejšie obrazy Dockeru patrí webový server NGINX, databáza Redis v pamäti, sada nástrojov BusyBox Unix a distribúcia Ubuntu Linux.

Obrázok: Official repositories in the Docker node
You can find more than 100,000 free images in the official Docker repositories.

Organizácie sú ďalšou dôležitou funkciou Docker Hub, ktorá umožňuje používateľom Docker vytvárať súkromné repozitáre, ktoré sú dostupné výlučne pre vybranú skupinu ľudí. Prístupové práva sa v rámci organizácie spravujú pomocou tímov a členstva v skupinách.

Docker Swarm

Docker Engine obsahuje natívnu funkciu, ktorá umožňuje používateľom spravovať hostiteľské počítače Docker v klastroch nazývaných swarms. Funkcie správy a koordinácie klastrov zabudované v Docker Engine sú založené na nástroji Swarmkit. Ak používate staršiu verziu kontajnerovej platformy, nástroj Docker je k dispozícii ako samostatná aplikácia.

Ako natívny nástroj na zoskupovanie Docker, Swarm zhromažďuje skupinu hostiteľov Docker do jedného virtuálneho hostiteľa a obsluhuje Docker REST API. Akýkoľvek nástroj Docker spojený s démonom Docker má prístup k Swarm a môže škálovať na ľubovoľný počet hostiteľov Docker. Pomocou Docker Engine CLI môžu používatelia vytvárať roje, distribuovať aplikácie v klastri a spravovať správanie roja bez potreby použitia dodatočného softvéru na koordináciu.

Docker enginy, ktoré boli zlúčené do klastrov, bežia v režime swarm. Vyberte túto možnosť, ak chcete vytvoriť nový klaster alebo pridať Docker host do existujúceho swarmu. Jednotlivé Docker hosty v klastri sa nazývajú „uzly“. Uzly klastra môžu bežať ako virtuálne hosty na rovnakom lokálnom systéme, ale častejšie sa používa cloudová architektúra, kde sú jednotlivé uzly Docker swarmu distribuované medzi rôzne systémy a infraštruktúry.

Tento softvér je založený na architektúre master-worker. Keď sa majú úlohy distribuovať v roji, používatelia odovzdajú službu uzlu manažéra. Manažér je potom zodpovedný za plánovanie kontajnerov v klastri a slúži ako primárne používateľské rozhranie pre prístup k zdrojom roja.

Správcovský uzol odosiela jednotlivé jednotky, známe ako úlohy, do pracovných uzlov.

  • Služby: služby sú centrálnymi štruktúrami v klastroch Docker. Služba definuje úlohu, ktorá sa má vykonať v klastri Docker. Služba sa týka skupiny kontajnerov, ktoré sú založené na rovnakom obraze. Pri vytváraní služby používateľ špecifikuje, ktorý obraz a príkazy sa majú použiť. Okrem toho služby ponúkajú možnosť škálovania aplikácií. Používatelia platformy Docker jednoducho definujú, koľko kontajnerov sa má spustiť pre danú službu.
  • Úlohy: aby bolo možné distribuovať služby v klastri, sú rozdelené na jednotlivé pracovné jednotky (úlohy) prostredníctvom riadiaceho uzla. Každá úloha obsahuje kontajner Docker, ako aj príkazy, ktoré sa v ňom vykonávajú.

Okrem správy riadenia klastrov a koordinácie kontajnerov môžu uzly správcu štandardne vykonávať aj funkcie pracovných uzlov – pokiaľ neobmedzíte úlohy týchto uzlov výlučne na správu.

Agentný program beží na každom pracovnom uzle. Ten prijíma úlohy a poskytuje príslušné správy o stave hlavného uzla týkajúce sa pokroku prenášanej úlohy. Nasledujúci graf znázorňuje schematické znázornenie Docker Swarm:

Obrázok: Schematic representation of a Docker Swarm
The manager-worker architecture of a Docker Swarm

Pri implementácii Docker Swarm sa používatelia spravidla spoliehajú na stroj Docker.

Docker Compose

Docker Compose umožňuje zlúčiť viacero kontajnerov a spustiť ich jedným príkazom. Základným prvkom Compose je centrálny kontrolný súbor založený na ocenenom jazyku YAML. Syntax tohto súboru Compose je podobná syntaxe open-source softvéru Vagrant, ktorý sa používa pri vytváraní a poskytovaní virtuálnych strojov.

V súbore docker-compose.yml môžete definovať ľubovoľný počet softvérových kontajnerov vrátane všetkých závislostí, ako aj ich vzájomných vzťahov. Takéto aplikácie s viacerými kontajnermi sa ovládajú podľa rovnakého vzoru ako jednotlivé softvérové kontajnery. Pomocou príkazudocker-compose v kombinácii s požadovaným podpríkazom môžete spravovať celý životný cyklus aplikácie.

Tento nástroj Docker možno ľahko integrovať do klastra založeného na Swarm. Takto môžete spúšťať aplikácie s viacerými kontajnermi vytvorené pomocou Compose na distribuovaných systémoch rovnako ľahko ako na jednom hostiteľovi Docker.

Ďalšou funkciou Docker Compose je integrovaný mechanizmus škálovania. S pomocou orchestračného nástroja môžete pohodlne použiť program príkazového riadku na definovanie počtu kontajnerov, ktoré chcete spustiť pre konkrétnu službu.

Aké nástroje Docker od tretích strán existujú?

Okrem vlastného vývoja spoločnosti Docker Inc. existujú rôzne softvérové nástroje a platformy od externých poskytovateľov, ktoré poskytujú rozhrania pre Docker Engine alebo boli špeciálne vyvinuté pre populárnu kontajnerovú platformu. V rámci ekosystému Docker patria medzi najpopulárnejšie open-source projekty nástroj na koordináciu Kubernetes, nástroj na správu klastrov Shipyard, riešenie na prepravu viacerých kontajnerov Panamax, platforma na kontinuálnu integráciu Drone, cloudový operačný systém OpenStack a operačný systém dátového centra D2iQ DC/OS, ktorý je založený na správcovi klastrov Mesos.

Kubernetes

Docker nemôže vždy prichádzať s vlastnými nástrojmi na koordináciu, ako sú Swarm a Compose. Z tohto dôvodu rôzne spoločnosti už roky investujú do vlastného vývoja s cieľom vytvoriť nástroje na mieru, ktoré uľahčujú prevádzku kontajnerovej platformy vo veľkých distribuovaných infraštruktúrach. Medzi najpopulárnejšie riešenia tohto typu patrí open-source projekt Kubernetes.

Kubernetes je správca klastrov pre aplikácie založené na kontajneroch. Cieľom Kubernetes je automatizovať aplikácie v klastri. Na tento účel nástroj na koordináciu používa ako ovládacie rozhrania REST-API, program príkazového riadku a grafické webové rozhranie. Pomocou týchto rozhraní je možné spúšťať automatizácie a vyžiadať si správy o stave. Kubernetes môžete použiť na:

  • vykonávať fotografie založené na kontajneroch v klastri,
  • inštalovať a spravovať aplikácie v distribuovaných systémoch,
  • škálovať aplikácie a
  • využívať hardvér čo najlepšie.

Na tento účel Kubernetes kombinuje kontajnery do logických častí, ktoré sa nazývajú pody. Pody predstavujú základné jednotky správcu klastra, ktoré môžu byť distribuované v klastri prostredníctvom plánovania.

Podobne ako Docker Swarm, aj Kubernetes je založený na architektúre master-worker. Klastre sa skladajú z Kubernetes master a rôznych workerov, ktoré sa tiež nazývajú Kubernetes uzly (alebo minions). Kubernetes master funguje ako centrálna riadiaca rovina v klastri a skladá sa zo štyroch základných komponentov, ktoré umožňujú priamu komunikáciu v klastri a distribúciu úloh. Kubernetes master sa skladá z API servera, konfiguračnej pamäte etcd, plánovača a správcu kontrolérov.

  • API server: všetky automatizácie v klastri Kubernetes sú iniciované pomocou REST-API prostredníctvom API servera. Ten funguje ako centrálne administratívne rozhranie v klastri.
  • etcd: open-source konfiguračnú pamäť etcd si môžete predstaviť ako pamäť klastra Kubernetes. Key Value Store, ktorý CoreOS vyvinul špeciálne pre distribuované systémy, ukladá konfiguračné údaje a sprístupňuje ich každému uzlu v klastri. Aktuálny stav klastra je možné kedykoľvek spravovať prostredníctvom etcd.
  • Plánovač: plánovač je zodpovedný za distribúciu skupín kontajnerov (podov) v klastri. Určuje požiadavky podu na zdroje a potom ich porovnáva s dostupnými zdrojmi jednotlivých uzlov v klastri.
  • Controller manager: controller manager je služba Kubernetes master a riadi orchestráciu regulovaním stavu klastra a vykonávaním rutinných úloh. Hlavnou úlohou controller manager je zabezpečiť, aby stav klastra zodpovedal definovanému cieľovému stavu.

Celkové komponenty hlavného servera Kubernetes môžu byť umiestnené na rovnakom hostiteľovi alebo distribuované na viacerých hlavných hostiteľoch v rámci klastra s vysokou dostupnosťou.

Zatiaľ čo master Kubernetes je zodpovedný za koordináciu, pody distribuované v klastri sú spúšťané na hostiteľoch, uzloch Kubernetes, ktoré sú podriadené masteru. Na to je potrebné, aby na každom uzle Kubernetes bežal kontajnerový engine. Hoci Docker je de facto štandardom, Kubernetes nemusí používať konkrétny kontajnerový engine.

Okrem kontajnerového motora uzly Kubernetes pokrývajú nasledujúce komponenty:

  • kubelet: kubelet je agent, ktorý beží na každom uzle Kubernetes a slúži na ovládanie a správu uzla. Ako centrálny kontaktný bod každého uzla je kubelet pripojený k masteru Kubernetes a zabezpečuje odovzdávanie a prijímanie informácií z riadiacej roviny.
  • kube-proxy: okrem toho na každom uzle Kubernetes beží proxy služba kube-proxy. Tá zabezpečuje, že požiadavky zvonku sú odosielané do príslušných kontajnerov a poskytuje služby používateľom aplikácií založených na kontajneroch. Kube-proxy ponúka aj základné vyvažovanie zaťaženia.

Nasledujúci graf znázorňuje schematické znázornenie architektúry hlavného uzla, na ktorej je založená orchestračná platforma Kubernetes:

Obrázok: Schematic representation of the Kubernetes architecture
The master-node architecture of the orchestration platform Kubernetes

Okrem základného projektu Kubernetes existuje aj množstvo nástrojov a rozšírení, ktoré umožňujú pridať ďalšie funkcie do orchestračnej platformy. Najpopulárnejšie sú nástroje na monitorovanie a diagnostiku chýb Prometheus, Weave Scope a sysdig, ako aj správca balíkov Helm. Existujú aj doplnky pre Apache Maven a Gradle, ako aj java API, ktoré umožňuje diaľkové ovládanie Kubernetes.

Lodenice

Shipyard je komunitné riešenie pre správu založené na Swarm, ktoré používateľom umožňuje spravovať zdroje Docker, ako sú kontajnery, obrazy, hostitelia a súkromné registre, prostredníctvom grafického používateľského rozhrania. Je dostupné ako webová aplikácia prostredníctvom prehliadača. Okrem funkcií správy klastrov, ku ktorým je možné pristupovať prostredníctvom centrálneho webového rozhrania, Shipyard ponúka aj overovanie používateľov a kontrolu prístupu na základe rolí.

Tento softvér je 100 % kompatibilný s diaľkovým rozhraním API Docker a na ukladanie údajov o používateľských účtoch, adresách a udalostiach využíva open-source databázu NoSQL RethinkDB. Softvér je založený na súbore nástrojov na správu klastrov Citadel a skladá sa z troch hlavných komponentov: radiča, rozhrania API a používateľského rozhrania.

  • Ovládač Shipyard: ovládač je základnou súčasťou nástroja na správu Shipyard. Ovládač Shipyard komunikuje s RethinkDB na ukladanie údajov a umožňuje adresovať jednotlivé hostiteľa v klastri Docker a riadiť udalosti.
  • Shipyard API: Shipyard API je založené na REST. Všetky funkcie nástroja na správu sa ovládajú prostredníctvom Shipyard API.
  • Používateľské rozhranie Shipyard (UI): Používateľské rozhranie Shipyard je aplikácia AngularJS, ktorá používateľom poskytuje grafické používateľské rozhranie na správu klastrov Docker vo webovom prehliadači. Všetky interakcie v používateľskom rozhraní prebiehajú prostredníctvom rozhrania Shipyard API.

Ďalšie informácie o projekte s otvoreným zdrojovým kódom nájdete na oficiálnej webovej stránke Shipyard.

Panamax

Vývojári open-source softvérového projektu Panamax sa zameriavajú na zjednodušenie nasadenia multi-kontajnerových aplikácií. Tento bezplatný nástroj ponúka používateľom grafické používateľské rozhranie, ktoré umožňuje pohodlný vývoj, nasadenie a distribúciu komplexných aplikácií založených na kontajneroch Docker pomocou drag-and-drop.

Panamax umožňuje ukladať komplexné aplikácie s viacerými kontajnermi ako šablóny aplikácií a distribuovať ich v klastrových architektúrach jediným kliknutím. Pomocou integrovaného obchodu s aplikáciami hostovaného na GitHub sa šablóny pre vlastné aplikácie môžu ukladať do repozitárov Git a sprístupňovať ostatným používateľom.

Základné komponenty architektúry Panamax možno rozdeliť do dvoch skupín: lokálny klient Panamax a ľubovoľný počet vzdialených cieľov nasadenia.

Lokálny klient Panamax je základnou súčasťou tohto nástroja Docker. Spúšťa sa na lokálnom systéme a umožňuje vytvárať komplexné aplikácie založené na kontajneroch. Lokálny klient sa skladá z nasledujúcich komponentov:

  • CoreOS: inštalácia lokálneho klienta Panamax vyžaduje ako hostiteľský systém distribúciu Linux CoreOS, ktorá bola špeciálne navrhnutá pre softvérové kontajnery. Klient Panamax sa potom spúšťa ako kontajner Docker v CoreOS. Okrem funkcií Docker majú používatelia prístup k rôznym funkciám CoreOS. Medzi ne patria okrem iného Fleet a Journalctl:
  • Fleet: namiesto priamej integrácie s Dockerom používa klient Panamax na koordináciu svojich kontajnerov správcu klastrov Fleet. Fleet je správca klastrov, ktorý riadi systém Linux daemon systemd v počítačových klastroch.
  • Journalctl: klient Panamax používa Journalctl na požiadanie o logové správy od správcu systému Linux systemd z denníka.
  • Inštalátor lokálneho klienta: inštalátor lokálneho klienta obsahuje všetky komponenty potrebné na inštaláciu klienta Panamax na lokálny systém.
  • Lokálny agent Panamax: centrálnou súčasťou lokálneho klienta je lokálny agent. Ten je prepojený s rôznymi ďalšími komponentmi a závislosťami prostredníctvom rozhrania Panamax API. Patria sem lokálny hostiteľ Docker, používateľské rozhranie Panamax, externé registre a vzdialené agenty cieľov nasadenia v klastri. Lokálny agent komunikuje s nasledujúcimi programovými rozhraniami v lokálnom systéme prostredníctvom rozhrania Panamax API, aby si vymieňal informácie o spustených aplikáciách:
  • Vzdialené rozhranie Docker API: Panamax vyhľadáva obrazy v lokálnom systéme prostredníctvom vzdialeného rozhrania Docker API a získava informácie o spustených kontajneroch.
  • etcd API: súbory sa prenášajú do démona CoreOS Fleet prostredníctvom etcd API.
  • systemd-journal-gatewayd.services: Panamax získava výstup denníka bežiacich služieb prostredníctvom systemd-journal-gatewayd.services.

Okrem toho rozhranie Panamax API umožňuje aj interakciu s rôznymi externými rozhraniami API.

  • API registra Docker: Panamax získava tagy obrázkov z registra Docker prostredníctvom API registra Docker.
  • GitHub API: Panamax načíta šablóny z repozitára GitHub pomocou GitHub API.
  • KissMetrics API: KissMetrics API zbiera údaje o šablónach, ktoré používatelia spúšťajú.
  • Panamax UI: Panamax UI funguje ako používateľské rozhranie v lokálnom systéme a umožňuje používateľom ovládať nástroj Docker prostredníctvom grafického rozhrania. Vstupy používateľov sa priamo odosielajú lokálnemu agentovi prostredníctvom Panamax API. Panamax UI je založený na CTL Base UI Kit, knižnici komponentov používateľského rozhrania pre webové projekty od CenturyLink.

V terminológii Panamax sa každý uzol v klastri Docker bez úloh správy označuje ako vzdialený cieľ nasadenia. Ciele nasadenia pozostávajú z hostiteľa Docker, ktorý je nakonfigurovaný na nasadenie šablón Panamax s pomocou nasledujúcich komponentov:

  • Inštalátor cieľového nasadenia: inštalátor cieľového nasadenia spustí hostiteľa Docker, doplnený o vzdialeného agenta Panamax a adaptér orchestrace.
  • Vzdialený agent Panamax: ak je nainštalovaný vzdialený agent Panamax, aplikácie môžu byť distribuované cez lokálneho klienta Panamax do akéhokoľvek požadovaného koncového bodu v klastri. Vzdialený agent Panamax beží ako kontajner Docker na každom cieľovom zariadení v klastri.
  • Orchestračný adaptér Panamax: v orchestračnom adaptéri je programová logika poskytovaná pre každý orchestračný nástroj dostupný pre Panamax v nezávislej vrstve adaptéra. Vďaka tomu majú používatelia možnosť vždy zvoliť presnú orchestračnú technológiu, ktorú podporuje ich cieľové prostredie. Predkonfigurované adaptéry zahŕňajú Kubernetes a Fleet:
  • Adaptér Panamax Kubernetes: v kombinácii so vzdialeným agentom Panamax umožňuje adaptér Panamax Kubernetes distribúciu šablón Panamax v klastroch Kubernetes.
  • Adaptér Panamax Fleet: v kombinácii s diaľkovým agentom Panamax umožňuje adaptér Panamax Fleet distribúciu šablón Panamax v klastroch kontrolovaných pomocou správcu klastrov Fleet.

Nasledujúci graf znázorňuje vzájomné pôsobenie jednotlivých komponentov Panamax v klastri Docker:

Obrázok: Schematic representation of the software architecture for the Panamax container management tool
The software architecture of the Panamax container management tool

Nástroj na správu kontajnerov Panamax založený na CoreOS poskytuje používateľom prostredníctvom grafického používateľského rozhrania celý rad štandardných technológií na koordináciu kontajnerov, ako aj možnosť pohodlne spravovať komplexné aplikácie s viacerými kontajnermi v klastrových architektúrach pomocou akéhokoľvek systému (napr. vlastného notebooku).

Vďaka verejnému úložisku šablón Panamax majú používatelia Panamax prístup k verejnej knižnici šablón s rôznymi zdrojmi prostredníctvom GitHub.

Dron

Drone je štíhla platforma pre kontinuálnu integráciu s minimálnymi požiadavkami. S týmto nástrojom Docker môžete automaticky načítať svoju najnovšiu verziu z repozitára Git, ako je GitHub, a otestovať ju v izolovaných kontajneroch Docker. Môžete spustiť akúkoľvek sadu testov a odosielať správy a stavové hlásenia prostredníctvom e-mailu. Pre každý softvérový test sa vytvorí nový kontajner na základe obrazov z verejného registra Docker. To znamená, že akýkoľvek verejne dostupný obraz Docker môže byť použitý ako prostredie na testovanie kódu.

Drone je integrovaný v Docker a podporovaný rôznymi programovacími jazykmi, ako sú PHP, Node.js, Ruby, Go a Python. Platforma kontajnerov je jedinou skutočnou závislosťou. S Drone môžete vytvoriť svoju vlastnú platformu pre nepretržitú integráciu na akomkoľvek systéme, na ktorom je možné nainštalovať Docker. Drone podporuje rôzne repozitáre na kontrolu verzií a návod na štandardnú inštaláciu s integráciou GitHub nájdete na webovej stránke open source projektu pod readme.drone.io.

Správa platformy pre kontinuálnu integráciu prebieha prostredníctvom webového rozhrania. Tu môžete načítať softvérové zostavenia z akéhokoľvek repozitára Git, zlúčiť ich do aplikácií a spustiť výsledok v preddefinovanom testovacom prostredí. Na tento účel je definovaný súbor .drone.yml, ktorý špecifikuje, ako vytvoriť a spustiť aplikáciu pre každý softvérový test.

Používatelia dronov majú k dispozícii open-source riešenie CI, ktoré kombinuje silné stránky alternatívnych produktov, ako sú Travis a Jenkins, do užívateľsky prívetivej aplikácie.

OpenStack

Pokiaľ ide o budovanie a prevádzku open-source cloudových štruktúr, open-source cloudový operačný systém OpenStack je softvérovým riešením voľby.

S OpenStack môžete spravovať počítačové, úložné a sieťové zdroje z centrálneho riadiaceho panela a sprístupniť ich koncovým používateľom prostredníctvom webového rozhrania.

Operačný systém cloudu je založený na modulárnej architektúre, ktorá sa skladá z viacerých komponentov:

  • Zun (kontajnerová služba): Zun je kontajnerová služba OpenStack, ktorá umožňuje jednoduché nasadenie a správu kontajnerových aplikácií v cloude OpenStack. Účelom Zun je umožniť používateľom spravovať kontajnery prostredníctvom REST API bez nutnosti spravovať servery alebo klastre. Na prevádzku Zun budete potrebovať tri ďalšie služby OpenStack, a to Keystone, Neutorn a kryr-libnetwork. Funkčnosť Zun je možné rozšíriť aj prostredníctvom ďalších služieb OpenStack, ako sú Cinder a Glance.
  • Neutron (sieťová komponenta): Neutron (formálne Quantum) je prenosná, škálovateľná systémová komponenta podporovaná rozhraním API, ktorá sa používa na riadenie siete. Modul poskytuje rozhranie pre komplexné sieťové topológie a podporuje rôzne doplnky, prostredníctvom ktorých je možné integrovať rozšírené sieťové funkcie.
  • kuryr-libnetwork (ovládač Docker): kuryr-libnetwork je ovládač, ktorý funguje ako rozhranie medzi Dockerom a Neutronom.
  • Cinder (blokové úložisko): Cinder je prezývka komponentu v architektúre OpenStack, ktorý poskytuje trvalé blokové úložisko pre prevádzku virtuálnych strojov. Modul poskytuje virtuálne úložisko prostredníctvom samoobslužného API. Vďaka tomu môžu koncoví používatelia využívať úložné zdroje bez toho, aby vedeli, ktoré zariadenie úložisko poskytuje.
  • Keystone (identifikačná služba): Keystone poskytuje používateľom OpenStack centrálnu identifikačnú službu. Modul funguje ako systém overovania a oprávnení medzi jednotlivými komponentmi OpenStack. Prístup k projektom v cloude je regulovaný nájomcami. Každý nájomca predstavuje používateľa a je možné definovať niekoľko prístupov používateľov s rôznymi právami.
  • Glance (služba obrazov): s modulom Glance poskytuje OpenStack službu, ktorá umožňuje ukladať a vyvolávať obrazy virtuálnych strojov.

Viac informácií o komponentách a službách OpenStack nájdete v našom článku o OpenStack.

Okrem vyššie uvedených komponentov je možné architektúru OpenStack rozšíriť pomocou rôznych modulov. Informácie o rôznych voliteľných moduloch nájdete na webovej stránke OpenStack.

D2iQ DC/OS

DC/OS (Distributed Cloud Operating System) je open-source softvér pre prevádzku distribuovaných systémov vyvinutý spoločnosťou D2iQ Inc. (predtým Mesosphere). Projekt je založený na open-source cluster manažéri Apache Mesos a je operačným systémom pre dátové centrá. Zdrojový kód je používateľom k dispozícii pod licenciou Apache verzie 2 v repozitároch DC/OS na GitHub. Podniková verzia softvéru je k dispozícii aj na d2iq.com. Rozsiahla dokumentácia projektu je k dispozícii na dcos.io.

DC/OS si môžete predstaviť ako distribúciu Mesos, ktorá vám poskytuje všetky funkcie správcu klastra (prostredníctvom centrálneho používateľského rozhrania) a výrazne rozširuje možnosti Mesos.

DC/OS využíva distribuované jadro systému platformy Mesos. To umožňuje zoskupiť zdroje celého dátového centra a spravovať ich vo forme agregovaného systému ako jeden logický server. Týmto spôsobom môžete ovládať celé klastre fyzických alebo virtuálnych strojov s rovnakou ľahkosťou, ako keby ste ovládali jeden počítač.

Tento softvér zjednodušuje inštaláciu a správu distribuovaných aplikácií a automatizuje úlohy, ako je správa zdrojov, plánovanie a komunikácia medzi procesmi. Správa klastra založeného na D2iQ DC/OS, ako aj jeho zahrnutých službách, prebieha prostredníctvom centrálneho programu príkazového riadku (CLI) alebo webového rozhrania (GUI).

DC/OS izoluje zdroje klastra a poskytuje zdieľané služby, ako je vyhľadávanie služieb alebo správa balíkov. Základné komponenty softvéru bežia v chránenej oblasti – jadre jadra. Patrí sem hlavný program a agent platformy Mesos, ktoré sú zodpovedné za alokáciu zdrojov, izoláciu procesov a bezpečnostné funkcie.

  • Mesos master: Mesos master je hlavný proces, ktorý beží na hlavnom uzle. Účelom Mesos master je riadiť správu zdrojov a koordinovať úlohy (abstraktné pracovné jednotky), ktoré sa vykonávajú na uzle agenta. Na tento účel Mesos master distribuuje zdroje registrovaným službám DC/OS a prijíma správy o zdrojoch od agentov Mesos.
  • Mesos agents: Mesos agents sú procesy, ktoré bežia na agent účtoch a sú zodpovedné za vykonávanie úloh distribuovaných masterom. Mesos agents dodávajú pravidelné správy o dostupných zdrojoch v klastri Mesos master. Tieto správy sú odosielané Mesos masterom do plánovača (t. j. Marathon, Chronos alebo Cassandra). Ten rozhoduje, ktorá úloha sa má spustiť na ktorom uzle. Úlohy sa potom vykonávajú v kontajneri izolovaným spôsobom.

Všetky ostatné komponenty systému, ako aj aplikácie spúšťané agentmi Mesos prostredníctvom vykonávacieho modulu, bežia v užívateľskom priestore. Základnými komponentmi štandardnej inštalácie DC/OS sú admin router, Mesos DNS, distribuovaný DNS proxy, vyvažovač zaťaženia Minuteman, plánovač Marathon, Apache ZooKeeper a Exhibitor.

  • Admin router: admin router je špeciálne nakonfigurovaný webový server založený na NGINX, ktorý poskytuje služby DC/OS, ako aj centrálne overovanie a proxy funkcie.
  • Mesos DNS: systémová komponenta Mesos DNS poskytuje funkcie vyhľadávania služieb, ktoré umožňujú jednotlivým službám a aplikáciám v klastri identifikovať sa navzájom prostredníctvom centrálneho systému doménových mien (DNS).
  • Distribuovaný DNS proxy: distribuovaný DNS proxy je interný DNS dispečer.
  • Minuteman: systémová komponenta Minuteman funguje ako interný vyrovnávač zaťaženia, ktorý pracuje na transportnej vrstve (vrstva 4) referenčného modelu OSI.
  • DC/OS Marathon: Marathon je centrálnou súčasťou platformy Mesos, ktorá funguje v D2iQ DC/OS ako systém init (podobný systemd). Marathon spúšťa a dohliada na služby a aplikácie DC/OS v prostrediach klastrov. Okrem toho tento softvér poskytuje funkcie vysokej dostupnosti, vyhľadávanie služieb, vyrovnávanie zaťaženia, kontroly stavu a grafické webové rozhranie.
  • Apache ZooKeeper: Apache ZooKeeper je softvérová komponenta s otvoreným zdrojovým kódom, ktorá poskytuje koordinačné funkcie pre prevádzku a kontrolu aplikácií v distribuovaných systémoch. ZooKeeper sa používa v D2iQ DC/OS na koordináciu všetkých nainštalovaných systémových služieb.
  • Exhibitor: Exhibitor je systémová komponenta, ktorá sa automaticky inštaluje a konfiguruje so ZooKeeperom na každom hlavnom uzle. Exhibitor tiež poskytuje grafické používateľské rozhranie pre používateľov ZooKeeperu.

Na zdrojoch klastra, ktoré sú agregované prostredníctvom DC/OS, je možné súčasne vykonávať rôznorodé pracovné úlohy. To napríklad umožňuje paralelnú prevádzku operačného systému klastra veľkých dátových systémov, mikroslužieb alebo kontajnerových platforiem, ako sú Hadoop, Spark a Docker.

V rámci D2iQ Universe je k dispozícii verejný katalóg aplikácií pre DC/OS. Vďaka nemu môžete inštalovať aplikácie ako Spark, Cassandra, Chronos, Jenkins alebo Kafka jednoduchým kliknutím na grafické používateľské rozhranie.

Aké nástroje Docker existujú pre zabezpečenie?

Hoci zapuzdrené procesy bežiace v kontajneroch zdieľajú rovnaké jadro, Docker používa viacero techník na ich vzájomnú izoláciu. Na tento účel sa zvyčajne používajú základné funkcie jadra Linuxu, ako sú Cgroups a Namespaces.

Kontajnery však stále neposkytujú rovnaký stupeň izolácie, aký je možné dosiahnuť pomocou virtuálnych strojov. Napriek použitiu izolačných techník je možné prostredníctvom kontajnerov dosiahnuť dôležité základné subsystémy, ako sú Cgroups, ako aj rozhrania jadra v adresároch /sys a /proc.

Vývojový tím Dockeru uznal, že tieto bezpečnostné obavy sú prekážkou pre zavedenie kontajnerovej technológie do produkčných systémov. Okrem základných izolačných techník jadra Linuxu podporujú novšie verzie Docker Engine aj frameworky AppArmor, SELinux a Seccomp, ktoré fungujú ako druh firewallu pre základné zdroje.

  • AppArmor: s AppArmor sú regulované prístupové práva kontajnerov k súborovým systémom.
  • SELinux: SELinux poskytuje komplexný regulačný systém, v ktorom je možné implementovať kontrolu prístupu k základným zdrojom.
  • Seccomp: Seccomp (Secure Computing Mode) dohliada na vyvolávanie systémových volaní.

Okrem týchto nástrojov Docker používa aj funkcie systému Linux na obmedzenie oprávnení root, s ktorými Docker Engine spúšťa kontajnery.

Existujú aj ďalšie bezpečnostné obavy týkajúce sa zraniteľnosti softvéru v rámci komponentov aplikácií, ktoré sú distribuované prostredníctvom registra Docker. Keďže v podstate ktokoľvek môže vytvárať obrazy Docker a sprístupňovať ich komunite v Docker Hub, pri sťahovaní obrazu existuje riziko zavlečenia škodlivého kódu do vášho systému. Pred nasadením aplikácie by sa používatelia Docker mali uistiť, že všetok kód poskytovaný v obraze na spustenie kontajnerov pochádza z dôveryhodného zdroja.

Docker ponúka overovací program, ktorý môžu poskytovatelia softvéru využiť na kontrolu a overenie svojich Docker obrazov. Cieľom tohto overovacieho programu je uľahčiť vývojárom budovanie softvérových dodávateľských reťazcov, ktoré sú bezpečné pre ich projekty. Okrem zvýšenia bezpečnosti pre používateľov má program za cieľ ponúknuť vývojárom softvéru spôsob, ako odlíšiť svoje projekty od množstva iných dostupných zdrojov. Overené obrazy sú označené odznakom Overený vydavateľ a okrem iných výhod majú vyššie hodnotenie vo výsledkoch vyhľadávania Docker Hub.

Prejsť na hlavné menu