2023-04-27 12:55 Doba čtení: 25 min

Ansible vs. Kubernetes: Pochopení rozdílů –

Pohled na automatizaci IT: Srovnání Ansible a Kubernetes

Debata o automatizaci IT operací se neobejde bez zmínky o dvou klíčových nástrojích: Ansible a Kubernetes. Ačkoli každý z nich má svůj specifický účel, oba zásadně přispěly k transformaci vývojového cyklu softwaru. Pojďme se na ně podívat blíže.

Co je to Ansible?

Ansible, původně myšlenka Michaela DeHaase, se aktuálně řadí mezi stovku nejoblíbenějších projektů na platformě GitHub. Jeho popularita plyne z jeho jednoduchosti a snadného používání. Dnes je Ansible považován za etalon v oblasti automatizace IT procesů.

Tento nástroj se rozvíjí v prostředí open-source komunity a neustále se zdokonaluje, nabízeje tak efektivní řešení pro operátory, správce a vedoucí pracovníky v nejrůznějších technických prostředích.

Ansible se stal nepostradatelným nástrojem pro významné organizace, jako jsou například Twitter, eBay, Verizon, NASA, ILM, Rackspace a Electronic Arts. V roce 2015 byl tento úspěšný projekt převzat společností Red Hat.

Díky Ansible je správa konfigurací, nasazování aplikací a automatizace úkolů výrazně jednodušší. V moderním digitálním prostředí ho odborníci z oblasti DevOps často využívají pro implementaci přístupu "infrastruktura jako kód" (IaC), který umožňuje bezproblémové dodávání softwaru.

Zde je přehled, jak lze Ansible využít:

  • Správa konfigurace: Ansible umožňuje snadno definovat požadované konfigurace pro servery, síťová zařízení a další infrastrukturní komponenty. Navíc dokáže automatizovaně a konzistentně aplikovat tyto konfigurace na mnoho systémů, čímž zajišťuje jednotnou strukturu a shodu s předpisy.
  • Nasazování aplikací: S Ansible je nasazení aplikací hračkou. Automatizuje celý proces napříč různými prostředími – od vývoje přes testování až po produkční nasazení. Úkoly jako instalace softwaru, konfigurace databází a síťová nastavení se vyřizují pomocí několika málo příkazů.
  • Automatizace úkolů: Sbohem manuálním a opakujícím se úkolům! Ansible dává IT týmům možnost automatizovat širokou škálu úloh, jako je aktualizace systémů, správa záloh, vytváření uživatelských účtů a restartování služeb. Tím se uvolní ruce, a tým se může zaměřit na strategické iniciativy.
  • Zajištění infrastruktury: Dynamické zřizování a konfigurace zdrojů, jako jsou virtuální stroje, cloudové instance a síťová zařízení, může být náročné. Ale i zde Ansible přichází na pomoc a dokáže efektivně škálovat infrastrukturu podle aktuální potřeby.
  • Orchestrace: Ansible exceluje ve správě složitých nasazení, které zahrnují více systémů. Dokáže orchestrovat komplexní pracovní postupy a řídit úkoly, jako je nasazení vícevrstvých aplikací a implementace aktualizací v distribuovaném prostředí. Dokáže tak koordinovaně spravovat i síťová zařízení.

Výhody Ansible

  • Snadné učení a použití: Díky použití YAML pro psaní playbooků, je jejich tvorba poměrně jednoduchá. To umožňuje i začátečníkům i zkušeným odborníkům snadno s Ansible pracovat. Přímá a intuitivní syntaxe urychluje osvojení a zefektivňuje pracovní postupy.
  • Napsáno v Pythonu: Ansible se zaměřuje na jednoduchost. Je napsán v Pythonu, jednom z nejpoužívanějších a nejdůležitějších programovacích jazyků.
  • Architektura bez agentů: Ansible je bez agentů. Může spravovat vzdálené hostitele přes SSH, aniž by na nich vyžadoval instalaci dalšího softwaru. Pomocí playbooků a rolí Ansible snadno definuje ideální infrastrukturu a automatizuje proces jejího dosažení.
  • Vylepšené zabezpečení: S využitím SSH Ansible klade důraz na bezpečnost komunikace mezi systémy. Chrání tak aplikace a infrastrukturu před potenciálními hrozbami.
  • Integrace se systémy správy autentizace: Ansible se integruje se systémy správy autentizace jako LDAP a Kerberos, což zajišťuje řádnou kontrolu přístupu a vyšší úroveň zabezpečení.
  • Spolehlivost: IT infrastruktury vyžadují stabilitu a spolehlivost. Ansible je známý svým vysokým výkonem a spolehlivostí.

Ansible je také velmi uživatelsky přívětivý. Správa místní i cloudové infrastruktury je s Ansible, jak by řekl Sherlock Holmes, „elementární“.

Jak Ansible funguje?

Než se podíváme na fungování Ansible, pojďme si projít jeho hlavní komponenty:

Moduly: Pokud by Ansible byl pokrm, moduly by byly jeho klíčovými ingrediencemi. Jedná se o předem připravené programy, které zvládají prakticky cokoliv – od aplikací a balíčků až po soubory na vzdálených systémech. Ansible implementuje definované instrukce na vzdálených systémech a zároveň dodává moduly z řídicího počítače.

Playbooky spouští příslušný modul, a jakmile je úkol dokončen, modul se vyřadí z cyklu. Ansible má více než 750 (a stále přibývají) vestavěných modulů, což usnadňuje automatizaci díky svým hrám a úkolům!

Playbooky: Playbooky jsou uživatelsky orientované manuály, které ke zjednodušení automatizace využívají formát YAML. Tyto manuály řídí pracovní postupy a provádějí úlohy systematickým způsobem. Playbooky mohou provádět postupné procesy, definovat prostředí a spravovat různé fáze úkolu.

Pluginy: Pluginy Ansible rozšiřují vestavěné i uživatelské funkce. Systém díky nim dokáže provádět protokolování, zobrazování událostí, ukládání do mezipaměti a další funkce. Pluginy se spouští před samotnými moduly na uzlech.

Inventory: Inventory Ansible obsahují seznamy hostitelů s jejich IP adresami, servery a databázemi. Pro správu se využívá SSH pro systémy UNIX, Linux a síťová zařízení a WinRM pro systémy Windows.

Mezi další komponenty Ansible patří API, Cloud, Host, Networking a CMD (Configuration Management Database).

Jak Ansible funguje jako kouzlo?

Nejprve má Ansible soubor inventáře se seznamem hostitelů nebo počítačů. Uživatelé mohou tento soubor libovolně měnit a přidávat servery, které chtějí spravovat.

Dalším krokem je vytvoření playbooků, které definují ideální infrastrukturu na spravovaných uzlech. Nyní, když Ansible běží na řídicím uzlu, který pomáhá spouštět úlohy na vzdáleném systému, naváže s ním spojení SSH. To umožňuje bezpečnou komunikaci mezi uzly.

Poté se odešlou a spustí moduly pro provádění úloh definovaných v playbookách a systémy se uvedou do požadovaného stavu.

Po dokončení úkolu Ansible moduly ze spravovaných uzlů odstraní, aby nedocházelo ke zbytkovým modulům. A nakonec poskytuje zprávy o stavu implementace úloh, což uživatelům umožňuje sledovat průběh a výsledky automatizačních úloh. Ansible může být spouštěn i pravidelně a může tak udržovat a vylepšovat systém v čase.

Co je Kubernetes?

Joe Beda, Brendan Burns a Craig McLuckie jsou tvůrci Kubernetes. Jako inženýři společnosti Google vytvořili tento nástroj, který je dnes klíčový pro správu kontejnerových aplikací.

Původně byl Kubernetes vyvinut společností Google pro správu vlastních kontejnerových aplikací v produkčním prostředí. Poprvé byl jako open-source projekt vydán v roce 2014.

V roce 2015 Google daroval Kubernetes organizaci Cloud Native Computing Foundation (CNCF), která je nezávislá na dodavatelích, aby se podpořil vývoj cloudových technologií.

Od té doby se Kubernetes stal jedním z vlajkových projektů CNCF s širokým přijetím a etabloval se jako lídr v orchestraci kontejnerů.

Podle společnosti Gartner bude do roku 2025 přibližně 85 % organizací používat Kubernetes. A proč by neměli? Jeho robustní ekosystém doplňků, nástrojů a služeb z něj dělá univerzální platformu pro správu kontejnerových aplikací.

Kubernetes prošel řadou důležitých aktualizací, které s každým vydáním přinášejí nové funkce, vylepšení a opravy chyb. Neustále se vyvíjí a zlepšuje díky vášnivé komunitě, která za ním stojí!

Výhody Kubernetes

  • Škálovatelnost: Umožňuje snadno škálovat aplikace podle aktuální poptávky.
  • Přenositelnost: Aplikace lze nasazovat a spravovat konzistentně v různých prostředích.
  • Flexibilita: Podporuje různé runtime a formáty kontejnerů.
  • Automatizace: Automatizuje nasazování, škálování, monitorování a opravu kontejnerů.
  • Odolnost: Nabízí vestavěnou odolnost proti chybám a schopnost samoléčení.
  • Podpora DevOps: Podporuje spolupráci mezi vývojáři a provozními týmy.
  • Rozšiřitelnost: Má přizpůsobitelnou a rozšiřitelnou architekturu pro integraci s dalšími nástroji.
  • Komunita a ekosystém: Disponuje velkou komunitou a ekosystémem pro vylepšené schopnosti.

Jak Kubernetes funguje?

Kubernetes je platforma pro orchestraci kontejnerů, proto první krok zahrnuje zabalení aplikace do kontejnerů s využitím nástrojů jako Docker. Tyto kontejnery jsou soběstačné, obsahují veškerý potřebný software a závislosti pro bezproblémový provoz v různých prostředích.

Dále se pomocí YAML nebo JSON definuje stav aplikací, včetně obrázků kontejnerů, požadavků na zdroje, zásad škálování, sítí a konfigurací úložiště. Tyto instrukční soubory se nazývají manifesty.

V Kubernetes je cluster jako tým počítačů, nazývaných uzly, které spolupracují na spouštění vašich aplikací. Představte si uzly jako hráče fotbalového týmu. Každý hráč může provozovat několik kontejnerů, které jsou jako vybavení hráčů nebo vybavení potřebné ke hře.

Komponenty Kubernetes

Nejmenší stavební blok v Kubernetes se nazývá Pod. Je to takový malý domov pro jeden nebo více kontejnerů. Pody jsou jako šatny hráčů, kde se scházejí a sdílejí síťové a úložné zdroje. Každý pod má své jedinečné jméno a adresu, což usnadňuje jeho identifikaci a komunikaci s ním.

Nasazení (Deployment) jsou jako trenéři, kteří řídí tým. Určují Kubernetes, kolik hráčů (neboli replik) od každého Podu by mělo být spuštěno. Podobně jako trenér spravuje hráče na hřišti, Deployment řídí vytváření, škálování a mazání podů, aby bylo zajištěno, že vaše aplikace je vždy ve stavu, ve kterém má být.

Služby jsou jako rozhodčí, kteří pomáhají hráčům komunikovat mezi sebou. Poskytují stabilní adresu, podobnou telefonnímu číslu, pomocí které mají ostatní přístup k vaší aplikaci. Služby vybírají správné moduly na základě štítků, jako je pozice hráče, a rovnoměrně mezi ně rozdělují provoz, aby měl každý možnost hrát.

Pro zpracování důležitých informací, jako jsou hesla nebo klíče API, nabízí Kubernetes ConfigMaps a tajemství. Jsou jako zámky, kde lze tyto citlivé údaje bezpečně uložit a následně je používat v modulech a nasazeních pro přístup ke zdrojům bez toho, aby byly odhaleny jako prostý text.

A konečně, Kubernetes API server je jako horká linka trenéra týmu. Poskytuje snadný způsob, jak řídit stav týmu pomocí RESTful API, se kterým můžete komunikovat pomocí kubectl nebo jiných nástrojů Kubernetes. Je to jako mít přímou linku do kanceláře trenéra, kde můžete zadávat instrukce nebo získávat aktuální informace o výkonu týmu.

Srovnání funkcí: Ansible vs. Kubernetes

Funkce Ansible Kubernetes
Typ Nástroj pro správu konfigurace a automatizaci Platforma pro orchestraci kontejnerů
Účel Automatizace IT úloh, jako je správa konfigurace, nasazování aplikací a zajištění systémů Automatizace nasazování, škálování a správy kontejnerových aplikací
Architektura Bez agentů, používá SSH nebo WinRM pro komunikaci s cílovými systémy Kontejnerizovaná, používá architekturu hlavního uzlu in
Konfigurace Napsáno v YAML Napsáno v YAML nebo JSON, deklarativní jazyk
Škálovatelnost Podporuje malé i velké infrastruktury Navrženo pro rozsáhlá nasazení
Vysoká dostupnost Založeno na technologii Pull, kde jsou kontejnery stahovány z registru kontejnerů do cílových uzlů Poskytuje vestavěné funkce vysoké dostupnosti s automatickým přeplánováním kontejnerů a převzetím selhání uzlů
Sítě Poskytuje základní síťové funkce Poskytuje pokročilé síťové funkce, jako je zjišťování služeb, vyrovnávání zátěže a směrování založené na DNS
Nasazení Push, kde se změny konfigurace přenášejí do cílových systémů Používá TLS pro komunikaci, poskytuje vestavěnou izolaci kontejnerů a RBAC pro kontrolu přístupu
Průběžné aktualizace Podporuje průběžné aktualizace s minimálními prostoji Podporuje průběžné aktualizace s nulovými prostoji
Kontrola stavu Poskytuje základní zdravotní kontroly pro cílové systémy Poskytuje pokročilé kontroly stavu kontejnerů a automatické restartování kontejnerů
Zabezpečení Používá SSH nebo WinRM pro komunikaci, vyžaduje správné ověření a autorizaci Střední až strmé, vyžaduje pochopení konceptů kontejnerizace, sítí a distribuovaných systémů
Rozšiřitelnost Poskytuje vlastní moduly pro rozšíření funkčnosti Poskytuje vlastní zdroje a operátory pro rozšíření funkčnosti
Křivka učení Střední, vyžaduje znalost YAML a základního skriptování Střední až strmé, vyžaduje pochopení konceptů kontejnerizace, sítí a distribuovaných systémů

Použití Kubernetes

Nasazení aplikací

Správa složitých aplikací v produkčním prostředí vyžaduje bezchybné provádění mnoha úkolů v daném čase. Pokud by vývojáři prováděli úkoly ručně, trvalo by jim týdny, než by aplikaci nasadili.

Díky Kubernetes a kontejnerizaci aplikací je však lze nejen nasadit a spravovat v rámci clusteru počítačů, ale také zajistit jejich konzistentnost a reprodukovatelnost. Automatizací úloh, jako je plánování, škálování a aktualizace, je tak dosahováno maximální efektivity.

Škálovatelnost a vyvažování zátěže

Aby byla aplikace úspěšná, musí se umět přizpůsobit vyššímu objemu provozu, aniž by to mělo negativní vliv na její výkon. Vestavěné funkce škálovatelnosti a vyvažování zátěže Kubernetes představují ideální řešení.

Systém rozděluje pracovní zátěž mezi cluster počítačů a automaticky se škáluje nahoru nebo dolů podle aktuální poptávky, čímž je zajištěna vysoká dostupnost. Navíc se také stará o přidělování příchozího provozu mezi více instancí.

Zjišťování služeb a vytváření sítí

Většina aplikací nemůže fungovat samostatně. Potřebují se připojit k dalším aplikacím nebo službám. Kubernetes nabízí síťové funkce, které pomáhají navázat komunikaci mezi kontejnery v rámci clusteru. Aplikace se také mohou prostřednictvím nástroje založeného na DNS připojovat k dalším službám spuštěným ve skupině.

Průběžné aktualizace a vrácení zpět

S Kubernetes je aktualizace aplikací nebo návrat k dřívějším verzím jednoduchý. Celý proces je automatizován a zajišťuje bezproblémové aktualizace bez narušení dostupnosti aplikace, přičemž umožňuje postupné aktualizace i vrácení zpět s minimálními prostoji.

Správa infrastruktury

Kubernetes využívá deklarativní přístup ke zjednodušení správy infrastruktury. Uživatelé mohou definovat infrastrukturní prostředky, jako je úložiště, sítě a výpočetní prostředky, jako kód pomocí manifestů YAML nebo JSON. Tyto manifesty či konfigurační soubory umožňují verzování, automatizaci, správu IaC (Infrastructure as Code) a zefektivnění správy komplexních konfigurací infrastruktury.

Hybridní a multi-cloudová nasazení

Kubernetes je zásadní pro organizace, které hledají adaptabilitu a agilitu ve svých nasazeních. Díky využívání konzistentní abstraktní vrstvy se nasazování a správa aplikací u různých cloudových poskytovatelů i v místních datových centrech stává efektivní.

Uživatelům to umožňuje osvojit si hybridní nebo multicloudovou strategii s využitím flexibility a přenositelnosti kontejnerů pro nasazování a správu aplikací v různých prostředích.

Ansible a Kubernetes – životní cyklus vývoje softwaru

Fáze v SDLC Ansible Kubernetes
Vývoj Poskytuje automatizovanou správu konfigurace a nasazení vývojových prostředí, umožňuje správu verzí konfiguračních souborů a usnadňuje nasazení kódu. N/A
Testování Poskytuje automatizované zřizování a konfiguraci testovacích prostředí, umožňuje snadnou replikaci prostředí a podporuje automatizované testovací úlohy. N/A
Nepřetržitá integrace/Nepřetržité zavádění (CI/CD) Usnadňuje automatizované nasazení aplikací a změny konfigurace, umožňuje správu verzí kódu infrastruktury a podporuje průběžné doručování a zavádění. Usnadňuje kontejnerizovaná nasazení, škálování a správu aplikací, podporuje průběžné aktualizace a nasazení s nulovými prostoji
Předprodukční fáze/Staging Poskytuje automatizované zřizování a konfiguraci pracovních prostředí, umožňuje konzistenci mezi pracovními a produkčními prostředími a usnadňuje testování produkčních prostředí. Usnadňuje kontejnerizované nasazení a škálování aplikací v předprodukčních prostředích, umožňuje testování kontejnerových aplikací v izolovaném prostředí
Produkce Usnadňuje automatizované zřizování, konfiguraci a správu produkčních prostředí, umožňuje infrastrukturu jako kódové (IaC) praktiky a podporuje produkční nasazení Poskytuje kontejnerizovaná nasazení, škálování a správu produkčních aplikací, nabízí vestavěné funkce s vysokou dostupností a pokročilé síťové funkce
Provoz/Údržba Automatizuje správu posunu konfigurace, nepřetržité monitorování a vynucení požadovaného stavu. Podporuje zálohování, upgrady a provozní úlohy. Zjednodušuje správu aplikací, škálování, upgrady a provozní úlohy, jako je postupné aktualizace a automatické restartování kontejnerových aplikací.
Odstraňování problémů/ladění Umožňuje viditelnost konfigurace, odstraňování problémů a vrácení zpět pro problémy. Umožňuje viditelnost aplikací kontejneru, odstraňování problémů, ladění a protokoly/diagnostiku.

Možné případy použití

Tým IT operací spravuje rozsáhlou infrastrukturu se stovkami serverů ve více datových centrech. S Ansible automatizují konzistentní a bezpečné nastavení serverů a procesy jako je správa uživatelů, nastavení firewallů a vynucování bezpečnostních zásad.

Servery jsou seskupeny podle rolí a prostředí a pravidelné spouštění playbooků je udržuje aktuální a vyhovující. Ansible zjednodušuje správu konfigurací, omezuje manuální práci a zlepšuje shodu se zabezpečením.

Případy použití Kubernetes

Vývojový tým vytvoří webovou aplikaci pro mikroslužby a nasadí ji s Kubernetes. Sítě, úložiště i kontejnery konfiguruje pomocí Dockeru a manifestů. Škálování, vyrovnávání zátěže, samoléčení a aktualizace zajišťuje Kubernetes. Systém lze snadno zvětšovat nebo zmenšovat, což zaručuje odolnost proti chybám a vysokou dostupnost.

Následující zdroj Kubernetes Deployment nasazuje webovou aplikaci se 3 replikami. Štítky označují instance aplikací a konfigurace kontejnerů jsou definovány v poli šablony. Kubernetes spravuje škálování, vyrovnávání zátěže, samoléčení a postupné upgrady pro škálovatelnou, odolnou, chybově odolnou a vysoce dostupnou aplikaci.

Administrace je s kontejnery a Kubernetes jednodušší, což zajišťuje jednotné nasazení a snadné škálování. Dle potřeby lze přidat další konfiguraci pro sítě, úložiště a další požadavky.

Závěrem

Ačkoli jsou Ansible i Kubernetes automatizační nástroje, přímé srovnání mezi nimi by nebylo zcela spravedlivé. Ansible pomáhá při správě konfigurací a úloh napříč širokou škálou systémů, zatímco Kubernetes se primárně zaměřuje na orchestraci kontejnerů.

Pokud se zaměříme na tradiční IT infrastrukturu, Ansible je ideální volbou pro správu konfigurací a nasazení. Kubernetes je naopak vynikající pro moderní cloudová prostředí a správu kontejnerových aplikací.

Oba nástroje mají své silné stránky a v příslušných oblastech dokáží výrazně zlepšit automatizaci IT a pracovní postupy nasazení. Pochopení jejich jedinečných účelů a jejich správné využití proto může být pro vaše operace velmi přínosné.

Tomáš Dvořák
Autor
Czechia

Píše o bezpečnosti, webu a chytrých službách s důrazem na srozumitelnost.

Předchozí článek
One-Stop-Shop pro e-mail Finder a Verifier
Další článek
Google Meet spouští videohovory v rozlišení 1080p a vylepšenou lištu nástrojů