Přehled Populárních Nástrojů pro Orchestraci Kontejnerů
V dnešní době se často setkáváme s architekturou mikroslužeb, kde se aplikace balí do kontejnerů pomocí platforem jako Docker. Kontejnery nabízejí vysokou škálovatelnost a flexibilitu. Nicméně, jakmile se počet kontejnerů zvýší na stovky, správa a řízení jejich životního cyklu se stává náročným úkolem.
Orchestrace kontejnerů přichází s řešením tím, že automatizuje procesy plánování, nasazení, škálování, vyvažování zátěže a síťové propojení. Zjednodušeně řečeno, je to automatizovaná správa životního cyklu kontejnerů a služeb.
Naštěstí existuje mnoho nástrojů, které tento proces zefektivňují. Podívejme se na některé z nich:
Kubernetes
Jak jste možná tušili, Kubernetes je jedním z nejpopulárnějších řešení. Jedná se o platformu s otevřeným zdrojovým kódem, původně vyvinutou společností Google a nyní spravovanou nadací Cloud Native Computing Foundation. Kubernetes podporuje deklarativní konfiguraci a automatizaci, což usnadňuje nasazování, škálování a správu kontejnerizovaných aplikací.
Kubernetes API umožňuje komunikaci mezi uživateli, komponentami clusteru a externími systémy. Cluster Kubernetes se skládá z řídicí roviny a pracovních uzlů. Pracovní zátěž aplikace běží na jednom nebo více modulech umístěných na těchto uzlech. Řídicí rovina zajišťuje správu modulů a uzlů.
Společnosti jako Babylon, Booking.com a AppDirect Kubernetes aktivně využívají.
Klíčové vlastnosti Kubernetes:
- Zjišťování služeb a vyrovnávání zátěže
- Orchestrace úložiště
- Automatizované nasazování a rollback
- Horizontální škálování
- Správa tajemství a konfigurací
- Samoléčení
- Dávkové zpracování
- Podpora duálního zásobníku IPv4/IPv6
- Automatické balení do košů
OpenShift
OpenShift od Red Hat je kontejnerová platforma PaaS (Platform as a Service). Umožňuje automatizaci aplikací na bezpečných a škálovatelných zdrojích v hybridních cloudových prostředích. Jedná se o robustní platformu pro vytváření, nasazování a správu kontejnerových aplikací.
OpenShift je postaven na Red Hat Enterprise Linuxu a Kubernetes. Poskytuje rozsáhlé možnosti správy clusterů prostřednictvím uživatelského rozhraní a CLI. Red Hat nabízí OpenShift ve dvou dalších variantách:
- Openshift Online – nabízený jako software jako služba (SaaS)
- OpenShift Dedicated – nabízený jako spravovaná služba
Openshift Origin (Origin Community Distribution) je open-source projekt, který se využívá v OpenShift Container Platform, Openshift Online a OpenShift Dedicated.
Nomad
Nomad je flexibilní a jednoduchý orchestrátor pro nasazování a správu kontejnerových i nekontejnerových aplikací v on-prem i cloudových prostředích. Nomad má malou spotřebu zdrojů a je kompatibilní s macOS, Windows a Linux.
Vývojáři používají deklarativní infrastrukturu jako kód (IaC) pro definování způsobu nasazení aplikace. Nomad automaticky obnovuje aplikace po selhání.
Nomad orchestruje jakýkoliv typ aplikací, poskytuje podporu pro Docker, Windows, Java, VM a další.
Klíčové vlastnosti Nomad:
- Jednoduchost a spolehlivost
- Modernizace starších aplikací bez nutnosti přepisování
- Snadná federace
- Ověřená škálovatelnost
- Snadná implementace v multi-cloudu
- Nativní integrace s Terraformem, Conzulem a Vaultem
Docker Swarm
Docker Swarm používá deklarativní model. Definujete požadovaný stav služby a Docker se postará o jeho udržení. Docker Enterprise Edition integruje Kubernetes a Swarm, čímž poskytuje flexibilitu ve výběru orchestrátoru. Docker engine CLI se používá k vytvoření roje, kde se nasazují aplikační služby.
Počítače, které se připojují ke clusteru, se nazývají uzly, a správce Swarmu řídí aktivity clusteru. Docker Swarm se skládá z manažerských uzlů (které přidělují úkoly) a pracovních uzlů (které úkoly provádějí).
Klíčové vlastnosti Docker Swarm:
- Správa clusteru integrovaná s Docker Engine
- Decentralizovaný design
- Model deklarativní služby
- Škálovatelnost
- Dosažení požadovaného stavu
- Síť s více hostiteli
- Zjišťování služeb
- Vyvažování zátěže
- Zabezpečení ve výchozím stavu
- Průběžné aktualizace
Docker Compose
Docker Compose slouží k definování a spouštění multi-kontejnerových aplikací. Popisuje skupiny služeb, které spolupracují, sdílejí softwarové závislosti a jsou organizovány a škálovány společně. Konfigurace služeb se provádí pomocí YAML souboru (docker-compose.yml).
Ukázka konfiguračního souboru:
version: '3' volumes: app_data: services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0 ports: - 9200:9200 - 9300:9300 volumes: - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data kibana: depends_on: - elasticsearch image: docker.elastic.co/kibana/kibana:6.8.0 ports: - 5601:5601 volumes: - ./kibana.yml:/usr/share/kibana/config/kibana.yml app: depends_on: - elasticsearch image: asadali08527/app:latest ports: - 8080:8080 volumes: - app_data:/var/lib/app/
Docker Compose umožňuje rozdělit aplikaci do nezávisle spuštěných služeb, které komunikují pomocí interní sítě. Nástroj poskytuje CLI pro správu celého životního cyklu aplikací. Tradičně se používal pro vývojové a testovací prostředí, ale nyní se zaměřuje i na produkční funkce.
Klíčové vlastnosti Docker Compose:
- Více izolovaných prostředí na jednom hostiteli
- Zachování dat svazků při vytváření kontejnerů
- Znovu-vytvoření pouze kontejnerů, které se změnily
- Proměnné a přesun konfigurace mezi prostředími
MiniKube
Minikube umožňuje spouštět Kubernetes lokálně. S Minikube lze testovat aplikace v rámci jedno-uzlového clusteru na osobním počítači. Má integrovanou podporu pro Kubernetes Dashboard.
Minikube spouští nejnovější stabilní verzi Kubernetes a podporuje funkce jako vyrovnávání zátěže, multi-cluster, trvalé svazky, NodePorts, ConfigMaps, tajemství, runtime kontejneru (Docker, CRI-O a containerd), a CNI (Container Network Interface).
Marathon
Marathon je orchestrátor pro Apache Mesos, který dokáže organizovat jak aplikace, tak i rámce.
Apache Mesos je správce clusteru s otevřeným zdrojovým kódem, který umožňuje spouštět kontejnerizované i nekontejnerizované úlohy. Hlavní komponenty clusteru Mesos jsou uzly Mesos Agent, Mesos Master, ZooKeeper, a rámce (které koordinují s masterem pro plánování úloh). Uživatelé komunikují s rámcem Marathon a plánují úlohy.
Plánovač Marathon používá ZooKeeper pro vyhledání aktuálního master serveru. Marathon a Mesos mají záložní master pro zajištění vysoké dostupnosti. Klienti komunikují s Marathonem pomocí REST API.
Klíčové vlastnosti Marathon:
- Vysoká dostupnost
- Podpora stavových aplikací
- Uživatelské rozhraní
- Omezení
- Zjišťování služeb a vyrovnávání zátěže
- Zdravotní kontroly
- Předplatné událostí
- Metriky
- REST API
Cloudify
Cloudify je open-source nástroj pro orchestraci, který automatizuje nasazení a správu životního cyklu kontejnerů a mikroslužeb. Podporuje vytváření clusterů na vyžádání, automatické opravy a škálování na úrovni infrastruktury. Cloudify lze integrovat s Dockerem a správci kontejnerů založených na Dockeru, včetně Docker Swarm, Docker Compose, Kubernetes a Apache Mesos.
Cloudify umožňuje vytvářet, opravovat, škálovat a rušit kontejnery. Nabízí možnost organizovat heterogenní služby napříč platformami a nasazovat aplikace pomocí CLI a Cloudify Manager.
Rancher
Rancher je open-source platforma, která využívá kontejnerovou orchestraci a umožňuje používat služby jako Kubernetes, Swarm a Mesos. Rancher poskytuje software pro správu kontejnerů, takže organizace nemusejí budovat platformy od nuly.
Rancher 2.x umožňuje správu Kubernetes clusterů běžících u různých poskytovatelů. Pro začátek je potřeba připravit Linux hostitele a spustit server pomocí Dockeru:
Příprava Linux Hostitele
Je třeba připravit Linux hostitele (např. Ubuntu 16.04 nebo 18.04) s alespoň 4 GB RAM. Na hostiteli je také potřeba nainstalovat Docker.
Spuštění Serveru
Pro instalaci a spuštění Rancheru se používá následující příkaz:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Uživatelské rozhraní Rancheru umožňuje správu velkého množství clusterů a uzlů Kubernetes.
Containership
Containership se zaměřuje na nasazení a správu multicloudové infrastruktury Kubernetes. Umožňuje provoz ve veřejném, privátním cloudu a on-premise prostředích z jediného nástroje. Poskytuje také možnost monitorování clusterů u hlavních poskytovatelů cloudu.
Containership je postaven s pomocí cloudových nativních nástrojů jako Terraform, Prometheus a Calico. Platforma nabízí intuitivní řídicí panel a výkonné REST API pro automatizaci.
Klíčové vlastnosti Containership:
- Multicloud Dashboard
- Auditní protokoly
- Podpora GPU
- Bezproblémové upgrady
- Plánovatelní master uzly
- Integrované metriky
- Logování v reálném čase
- Nasazení s nulovými prostoji
- Podpora trvalého úložiště
- Podpora soukromého registru
- Automatické škálování pracovní zátěže
- Správa klíčů SSH
AZK
AZK je orchestrátor pro vývojová prostředí, který umožňuje instalaci, konfiguraci a spouštění nástrojů pro vývoj webových aplikací. Používá soubor manifestu (Azkfile.js).
AZK používá kontejnery namísto virtuálních strojů. Kontejnery jsou efektivnější a mají nižší spotřebu zdrojů. Soubory Azkfile.js lze opakovaně používat a sdílet, což zajišťuje paritu mezi vývojovými prostředími a snižuje riziko chyb během nasazování.
GKE
GKE (Google Kubernetes Engine) je plně spravované řešení pro orchestraci kontejnerů na platformě Google Cloud. Clustery GKE jsou poháněny Kubernetes a s nimi lze komunikovat pomocí Kubernetes CLI.
GKE nabízí pokročilé funkce správy, jako je vyrovnávání zátěže, fondy uzlů, automatické škálování, automatické upgrady, automatické opravy, protokolování a monitorování pomocí operační sady Google Cloud. Google Cloud poskytuje také nástroje CI/CD, které pomáhají vytvářet a obsluhovat kontejnery aplikací. GKE je řešení pro podniky s šablonami nasazení.
AKS
AKS (Azure Kubernetes Service) je plně spravovaná služba Kubernetes od Azure, která nabízí bezserverové Kubernetes, zabezpečení a správu. AKS automaticky konfiguruje hlavní servery a uzly Kubernetes, uživatelé spravují pouze uzly agentů.
AKS je bezplatná služba, platí se pouze za uzly agentů. Clustery AKS lze vytvářet v Azure Portal nebo programově. Azure podporuje pokročilé sítě, integraci s Azure Active Directory a monitorování pomocí Azure Monitor. AKS také podporuje kontejnery Windows Server a jeho výkon lze monitorovat v Azure Monitor. AKS byl certifikován jako kompatibilní s Kubernetes.
AWS EKS
AWS EKS (Amazon Elastic Kubernetes Service) je plně spravovaná služba Kubernetes. AWS umožňuje provoz clusteru EKS pomocí AWS Fragrate, což je bezserverový výpočet pro kontejnery, kde platíte za zdroj na aplikaci.
AWS umožňuje použití funkcí jako Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups a Access Management (IAM) pro monitorování, škálování a vyrovnávání zátěže. EKS se integruje s AWS App mesh a poskytuje nativní prostředí Kubernetes. EKS provozuje nejnovější Kubernetes a je certifikován jako kompatibilní s Kubernetes.
Závěr
Tento přehled poskytuje základní informace o různých nástrojích pro orchestraci kontejnerů. Výběr nejlepšího řešení závisí na specifických požadavcích a případu použití. Důkladné seznámení s možnostmi jednotlivých nástrojů je klíčové pro úspěšnou implementaci.
Doporučujeme se seznámit také s Kubernetes Management Software.