Az IT-műveletek automatizálásáról szóló vita nem lehet teljes az Ansible és a Kubernetes nélkül. Bár ez a két eszköz különböző célokat szolgál, valóban forradalmasították a szoftverfejlesztési ciklust. Tehát nézzük ezeket az eszközöket részletesen.
Tartalomjegyzék
Mi az Ansible?
Az Ansible, eredetileg Michael DeHaa ötlete, jelenleg a GitHubon a 100 legnépszerűbb projekt egyikeként szerepel. Egyszerű nyelvezete és könnyű kezelhetősége miatt kedvelt. Mára az Ansible széles körben elterjedt az IT-automatizálás de facto etalonjaként.
A nyílt forráskódú közösségben virágzó eszköz figyelemre méltó fejlődésen ment keresztül, és megoldásokat kínál az üzemeltetőknek, adminisztrátoroknak és informatikai döntéshozóknak a különböző műszaki környezetekben.
Lehetséges
Következésképpen az olyan neves szervezetek, mint a Twitter, az eBay, a Verizon, a NASA, az ILM, a Rackspace és az Electronic Arts széles körben alkalmazzák ezt az eszközt. Sikerének köszönhetően a Red Hat 2015-ben felvásárolta az Ansible-t.
Az Ansible egyszerűvé teszi a konfigurációkezelést, az alkalmazások telepítését és a feladatok automatizálását. A modern digitális környezetben a DevOps szakemberei gyakran kihasználják az erőforrás-kiépítéshez, hogy az infrastruktúra kódként (IaC) megközelítést hajtsák végre a zökkenőmentes szoftverszállítás érdekében.
Íme néhány módja az Ansible használatának:
Az Ansible előnyei
- Egyszerűen megtanulható és használható: Mivel a játékkönyvek YAML-t használnak, meglehetősen könnyű őket írni, így az amatőrök és a szakértők is szórakozhatnak vele. Az egyszerű és intuitív szintaxis megkönnyíti a gyors átvételt és a zökkenőmentes munkafolyamatokat.
- Python nyelven írva: Ez az eszköz az egyszerűségről szól. Python nyelven íródott, az egyik legnépszerűbb és legkifinomultabb programozási nyelv.
- Ügynök nélküli architektúra: Ügynök nélküli. Az Ansible képes szabályozni a távoli gazdagépeket az SSH-n keresztül anélkül, hogy szoftvert kellene telepíteni rájuk. A játékkönyvek és szerepek segítségével az Ansible megkönnyíti az ideális infrastruktúra meghatározását és az oda vezető út automatizálását.
- Fokozott biztonság: Az SSH-val az Ansible a rendszerek közötti biztonságot helyezi előtérbe. Megvédi az alkalmazásokat és az infrastruktúrát a lehetséges fenyegetésektől.
- Integráció hitelesítéskezelő rendszerekkel: Az Ansible integrálható olyan hitelesítéskezelő rendszerekkel, mint az LDAP, Kerberos és még sok más a megfelelő hozzáférés-szabályozás és fokozott biztonság érdekében.
- Megbízhatóság: Az informatikai infrastruktúráknak stabilitásra és megbízhatóságra van szükségük. Az Ansible nagy teljesítményt és megbízhatóságot kínál.
Ráadásul az Ansible-t az teszi izgalmassá, hogy valóban felhasználóbarát. A helyszíni és a felhőalapú infrastruktúra kezelése abszolút, ahogy Sherlock mondaná, „elemi” az Ansible-nél.
Hogyan működik az Ansible?
Mielőtt belemerülnénk az Ansible működésébe, vessünk egy pillantást az összetevőire:
Modulok: Ha az Ansible egy étel (étel) lenne, a modulok lennének a fő összetevők. Ezek előre beépített kis programok, amelyek szinte mindent kezelnek – az alkalmazásoktól és csomagoktól a külső rendszereken lévő fájlokig. Az Ansible meghatározott utasításokat valósít meg külső rendszereken, és egyidejűleg modulokat szállít a vezérlő számítógépről.
A játékkönyvek futtatják a társított modult, és a feladat elvégzése után kivonják a körből. Az Ansible több mint 750 (folyamatosan növekvő) beépített modullal rendelkezik, ami megkönnyíti az automatizálást játékaival és feladataival!
Kép forrása: InterviewBit
Playbooks: A Playbookok feladatorientált felhasználói kézikönyvek, amelyek a YAML formátumot használják az automatizálás egyszerűsítésére. Ezek a játékkönyvek diktálják a munkafolyamatot, és szabályosan hajtják végre a feladatokat. A játékkönyvek szekvenciális eljárásokat hajthatnak végre, környezeteket határozhatnak meg, és kezelhetik a feladat különböző szakaszait.
Bővítmények: A lehetséges beépülő modulok javítják a webhely beépített és testreszabott funkcióit egyaránt. A rendszer képes naplózási, eseménymegjelenítési, gyorsítótárazási és front-end vezérlő funkciókat végrehajtani, és ezeket a csomópontokon lévő modulok előtt hajtja végre.
Leltárak: A lehetséges készletek a gazdagépek listáját tartalmazzák IP-címükkel, kiszolgálókkal és adatbázisaikkal. Az SSH for UNIX, Linux vagy hálózati eszközök és a WinRM for Windows rendszer segít ezek kezelésében.
A többi lehetséges összetevő az API, Cloud, Host, Networking és CMD (Configuration Management Database).
Íme, hogyan fejti ki varázslatát az Ansible:
Először is, az Ansible rendelkezik egy leltárfájllal a gazdagépek vagy gépek listájával. A felhasználók módosíthatják ezt a leltárfájlt a vezérelni kívánt kiszolgálók hozzáadásával.
A következő lépés játékfüzetek létrehozása az ideális infrastruktúra meghatározásához a felügyelt csomópontokon. Most, hogy az Ansible azon a vezérlő csomóponton fut, amely segít a feladatok végrehajtásában a távoli rendszeren, SSH-kapcsolatot hoz létre az utóbbival. Biztonságos kommunikációt tesz lehetővé a csomópontok között.
Ezután modulokat küld és hajt végre a playbookokban meghatározott feladatok végrehajtására, a rendszereket a kívánt állapotba hozva.
A feladat befejezése után az Ansible eltávolítja a modulokat a felügyelt csomópontokból, hogy megakadályozza a maradék modulokat. Végül jelentéseket biztosít a feladatok végrehajtásának állapotáról, lehetővé téve a felhasználók számára az automatizálási feladatok előrehaladásának és eredményeinek nyomon követését. Ezenkívül az Ansible rendszeresen futhat a rendszer karbantartása és javítása érdekében.
Mi az a Kubernetes?
Joe Beda, Brendan Burns és Craig McLuckie a Kubernetes mögött álló briliáns elmék. A Google-nál mérnökként dolgozva megalkották ezt az eszközt, amely ma már a konténeres alkalmazások egyik főszereplője.
A Kubernetest kezdetben a Google saját konténeres alkalmazásaik menedzselésére fejlesztette ki, és először nyílt forráskódú projektként 2014-ben adták ki.
2015-ben a Google adományozta a Kuberneteset a gyártótól független Cloud Native Computing Foundation (CNCF) számára a felhőalapú számítástechnika fejlesztése érdekében.
Azóta a Kubernetes a CNCF egyik zászlóshajója lett, széles körben elterjedt az iparágban, és vezető szerepet tölt be a konténerhangszerelésben.
A Gartner szerint 2025-re a szervezetek körülbelül 85%-a fogja használni a Kuberneteset. És miért ne tenné? Kiegészítőkből, eszközökből és szolgáltatásokból álló robusztus ökoszisztémája sokoldalú platformmá teszi a konténeres alkalmazások kezeléséhez.
A Kubernetes számos fontos frissítésen ment keresztül, amelyek minden kiadáshoz új funkciókat, fejlesztéseket és hibajavításokat hoztak. Folyamatosan fejlődik és javul, köszönhetően a mögötte álló szenvedélyes közösségnek!
A Kubernetes előnyei
- Skálázhatóság: Az alkalmazások igény szerint egyszerűen méretezhetők.
- Hordozhatóság: Az alkalmazásokat következetesen telepítheti és kezelheti a különböző környezetekben.
- Rugalmasság: Különféle konténer-futási idők és formátumok támogatása.
- Automatizálás: Automatizálja a konténerek telepítését, méretezését, figyelését és helyreállítását.
- Rugalmasság: Beépített hibatűrés és öngyógyító képesség.
- DevOps engedélyezése: Elősegíti a fejlesztők és az üzemeltetési csapatok közötti együttműködést.
- Bővíthetőség: Testreszabható és bővíthető architektúra más eszközökkel való integrációhoz.
- Közösség és ökoszisztéma: Nagy közösség és ökoszisztéma a továbbfejlesztett képességekért.
Hogyan működik a Kubernetes?
Mivel a Kubernetes a konténerhangszerelést segítő platform, az első lépés az alkalmazás konténerekbe történő csomagolása konténerező eszközök, például a Docker segítségével. Ezek a tárolók önellátóak, minden szükséges szoftverrel és függőséggel rendelkeznek ahhoz, hogy hibátlanul működjenek különböző környezetekben.
Ezután a YAML vagy a JSON segítségével meghatározzák az alkalmazások állapotát, beleértve a tárolóképeket, az erőforráskövetelményeket, a méretezési házirendeket, a hálózatépítést és a tárolási konfigurációkat. Az utasításokat tartalmazó fájlokat manifestnek nevezzük.
A Kubernetesben a fürt olyan, mint egy számítógépcsoport, úgynevezett csomópontok, amelyek együttműködnek az alkalmazások futtatásában. Gondoljon a csomópontokra, mint egy futballcsapat játékosaira, és minden játékos több konténert is futtathat, amelyek olyanok, mint a játékosok felszerelése vagy felszerelése, amely a játékhoz szükséges.
Kubernetes komponensek
Kubernetes legkisebb építőelemét Pod-nak hívják, ami olyan, mint egy hangulatos kis otthon egy vagy több konténer számára. A podok olyanok, mint a játékosok öltözői, ahol lógnak, és megosztanak egymással dolgokat, például hálózati és tárhelyforrásokat. Minden Pod-nak megvan a maga egyedi neve és címe, így könnyen azonosíthatja őket és kommunikálhat velük.
A bevetések olyanok, mint az edzők, akik irányítják a csapatot. Megmondják a Kubernetesnek, hogy az egyes podokból hány játékosnak (vagy replikának) kell futnia bármikor. Ahogy az edző kezeli a játékosokat a pályán, a telepítések kezelik a Pod-ok létrehozását, méretezését és törlését, hogy az alkalmazás mindig a kívánt állapotban legyen.
A szolgáltatások olyanok, mint a játékvezetők, amelyek segítenek a játékosoknak kommunikálni egymással. Stabil címet biztosítanak, például telefonszámot, amelyet mások az alkalmazás eléréséhez használhatnak. A szolgáltatások a címkék, például a játékos pozíciója alapján választják ki a megfelelő Pod-okat, és egyenletesen osztják el a forgalmat közöttük, biztosítva, hogy mindenki méltányos játéklehetőséget kapjon.
A fontos információk, például jelszavak vagy API-kulcsok kezeléséhez a Kubernetes ConfigMaps és Secrets szolgáltatást biztosít. Olyanok, mint egy zárdoboz, ahol biztonságosan tárolhatja ezeket az érzékeny adatokat, majd felhasználhatja őket a Pod-okban és a telepítésekben, hogy hozzáférjenek az erőforrásokhoz anélkül, hogy azokat egyszerű szövegben tenné ki.
Végül a Kubernetes API szerver olyan, mint a csapat coaching forródrótja. Egyszerű módot biztosít a csapat állapotának kezelésére egy RESTful API segítségével, amellyel a kubectl vagy más Kubernetes-eszközök használatával kommunikálhat. Ez olyan, mintha közvetlen vonal lenne az edző irodájába, hogy utasításokat adjon vagy értesüljön a csapat teljesítményéről.
Funkció-összehasonlítás: Ansible vs. Kubernetes
FeatureAnsibleKubernetesTypeKonfigurációkezelési és automatizálási eszközTartálykezelő platformCél Automatizálja az IT-feladatokat, mint például a konfigurációkezelés, az alkalmazások üzembe helyezése és a rendszerkiépítés Nyelv YAML vagy JSON nyelven írt, deklaratív nyelv Scalability Kis és nagy infrastruktúrákat egyaránt támogat Nagyméretű telepítésekre tervezve. Magas rendelkezésre állás Pull alapú, ahol a konténerek a konténer-nyilvántartásból a célcsomópontokhoz kerülnek. Beépített magas rendelkezésre állási szolgáltatásokat nyújt automatikus tároló-átütemezéssel és csomópont feladatátvétellel Hálózati Alapvető hálózati funkciók
Speciális hálózati funkciókat biztosít, például szolgáltatáskeresést, terheléselosztást és DNS-alapú útválasztást,DeploymentPush alapú, ahol a konfigurációs módosítások a célrendszerekre kerülnek.
TLS-t használ a kommunikációhoz, beépített konténerleválasztást és RBAC-t biztosít a hozzáférés-vezérléshez. Folyamatos frissítések
Támogatja a folyamatos frissítéseket minimális állásidővel
Támogatja a folyamatos frissítéseket nulla állásidővel, egészségügyi ellenőrzésekkel
Alapvető egészségügyi ellenőrzéseket biztosít a célrendszerekhez
Speciális állapotellenőrzést biztosít a tárolók számára és automatikus tároló újraindítást Biztonság SSH-t vagy WinRM-et használ a kommunikációhoz, megfelelő hitelesítést és engedélyezést igényel
Közepestől meredekig, megköveteli a konténerezési, hálózatépítési és elosztott rendszerek fogalmainak megértését Bővíthetőség Egyedi modulokat biztosít a funkcionalitás bővítéséhez
Egyéni erőforrásokat és operátorokat biztosít a funkcionalitás kiterjesztéséhez, Tanulási görbe
Mérsékelt, YAML és alapvető szkriptek ismerete szükséges
Közepestől meredekig, megköveteli a konténerezési, hálózatépítési és elosztott rendszerek fogalmainak megértését
A Kubernetes felhasználása
Alkalmazások telepítése
Az összetett alkalmazások éles környezetben történő kezelése számos feladat hibátlan végrehajtását igényli egy időkereten belül. Ha a fejlesztők manuálisan hajtanák végre a feladatot, hetekbe telne az alkalmazás üzembe helyezése.
A Kubernetes használatával és az alkalmazások konténerbe helyezésével azonban nemcsak telepíthetik és felügyelhetik azokat egy gépcsoporton keresztül, hanem biztosítják a konzisztenciát és a reprodukálhatóságot is. Maximális hatékonyságot érhetnek el az olyan feladatok automatizálásával, mint az ütemezés, a méretezés és a frissítések.
Skálázhatóság és terheléselosztás
Ahhoz, hogy egy alkalmazás sikeres legyen, nagyobb forgalomhoz kell igazodnia a teljesítmény csökkenése nélkül. A Kubernetes beépített méretezhetőségi és terheléselosztási funkciói kínálják a legjobb megoldást.
Elosztja a munkaterhelést a gépek fürtje között, és automatikusan felfelé vagy lefelé skálázódik az igények alapján, biztosítva a magas rendelkezésre állást. Ezenkívül segít a bejövő forgalom több példány között történő elosztásában is.
Szolgáltatáskeresés és hálózatépítés
A legtöbb alkalmazás önmagában nem működik. Más alkalmazásokkal vagy szolgáltatásokkal kell kapcsolódniuk. A Kubernetes hálózati szolgáltatásokat kínál, amelyek elősegítik a kommunikációt a fürtön belüli konténerek között. Az alkalmazások a DNS-alapú szolgáltatási eszközön keresztül más, a csoportban futó szolgáltatásokat is felfedezhetnek és azokhoz kapcsolódhatnak.
Folyamatos frissítések és visszaállítások
A Kubernetes segítségével az alkalmazások frissítése vagy a korábbi verziókra való visszatérés egyszerű. Automatizálja a folyamatot, és zökkenőmentes frissítéseket biztosít anélkül, hogy zavarná az alkalmazás elérhetőségét, lehetővé téve a folyamatos frissítéseket és a visszaállításokat rövid állásidővel.
Infrastruktúra menedzsment
A Kubernetes deklaratív megközelítést alkalmaz az infrastruktúra-kezelés egyszerűsítésére. Lehetővé teszi a felhasználók számára, hogy YAML- vagy JSON-jegyzékek használatával kódként határozzák meg az infrastruktúra-erőforrásokat, például a tárolást, a hálózatépítést és a számítást. Ezek a jegyzékek vagy konfigurációs fájlok lehetővé teszik a verziószámítást, az automatizálást, az IaC (Infrastructure as Code) kezelését, valamint az összetett infrastruktúra-konfigurációk kezelésének egyszerűsítését.
Hibrid és többfelhős telepítés
A Kubernetes egy játékmódváltó olyan szervezetek számára, amelyek alkalmazkodóképességet és agilitást keresnek telepítéseik során. Egy konzisztens absztrakciós réteg alkalmazásával hatékonyabbá válik az alkalmazások telepítése és kezelése a különböző felhőszolgáltatóknál vagy a helyszíni adatközpontoknál.
Lehetővé teszi a felhasználók számára, hogy hibrid vagy többfelhős stratégiát alkalmazzanak, kihasználva a konténerek rugalmasságát és hordozhatóságát az alkalmazások különböző környezetekben történő telepítéséhez és kezeléséhez.
Ansible és Kubernetes – Szoftverfejlesztési életciklus
Stage in SDLC Ansible KubernetesDevelopment Automatizált konfigurációkezelést és fejlesztői környezetek telepítését biztosítja, lehetővé teszi a konfigurációs fájlok verzióvezérlését, és megkönnyíti a kódtelepítést
N/ATesting A tesztelési környezetek automatizált kiépítését és konfigurálását biztosítja, lehetővé teszi a környezetek egyszerű replikációját, és támogatja az automatizált tesztelési feladatokat
N/Afolyamatos integráció/folyamatos telepítés (CI/CD)
Lehetővé teszi az alkalmazások automatizált telepítését és a konfigurációs módosításokat, lehetővé teszi az infrastruktúra kódjának verzióvezérlését, és támogatja a folyamatos szállítási és telepítési folyamatokat
Megkönnyíti az alkalmazások konténeres telepítését, méretezését és kezelését, támogatja a folyamatos frissítéseket és a nulla állásidőt jelentő telepítéseket.
Biztosítja az átmeneti környezetek automatizált kiépítését és konfigurálását, lehetővé teszi a konzisztenciát az átmeneti és éles környezetek között, és megkönnyíti a termeléshez hasonló környezetek tesztelését
Megkönnyíti az alkalmazások konténeres telepítését és méretezését gyártás előtti környezetekben, lehetővé teszi a konténeres alkalmazások tesztelését elszigetelt környezetben. ProductionLehetővé teszi a termelési környezetek automatizált kiépítését, konfigurálását és kezelését, lehetővé teszi az infrastruktúra kódolását (IaC) és támogatja az éles telepítéseket.
Biztosítja az éles alkalmazások konténeres telepítését, méretezését és kezelését, beépített magas rendelkezésre állási funkciókat és fejlett hálózati funkciókat kínál Műveletek/Karbantartás
Automatizálja a konfigurációs eltolódások kezelését, a folyamatos figyelést és a kívánt állapot érvényesítését. Támogatja a biztonsági mentéseket, a frissítéseket és az üzemeltetési feladatokat. Leegyszerűsíti az alkalmazáskezelést, a méretezést, a frissítéseket és az üzemeltetési feladatokat, például a folyamatos frissítéseket és a konténeres alkalmazások automatikus újraindítását.
Hibaelhárítás/Hibakeresés
Lehetővé teszi a konfigurációk láthatóságát, a hibaelhárítást és a problémák visszaállítását. Lehetővé teszi a tárolóalkalmazások láthatóságát, a hibaelhárítást, a hibakeresést és a naplózást/diagnosztikát.
Lehetséges használati esetek
Az informatikai csapat egy nagy infrastruktúrát kezel több száz szerverrel több adatközpontban. Az Ansible segítségével automatizálják a konzisztens és biztonságos szerverbeállításokat és folyamatokat, például a felhasználók kezelését, a tűzfalak beállítását és a biztonsági házirendek betartatását.
A kiszolgálók szerepek és környezetek szerint vannak csoportosítva, és a rendszeres játékkönyv-futtatások naprakészen tartják és megfelelnek a követelményeknek. Az Ansible leegyszerűsíti a konfigurációkezelést, csökkenti a kézi munkát, és javítja a biztonsági megfelelést.
Kubernetes használati esetek
Egy fejlesztőcsapat összeállít egy mikroszolgáltatások webalkalmazását, és telepíti a Kubernetes segítségével, konfigurálja a hálózatot, a tárolást és a konténereket a Dockerrel és a manifestekkel. A méretezést, a terheléselosztást, az öngyógyítást és a frissítéseket a Kubernetes kezeli. Egyszerűen skálázható vagy csökkenthető, és ez garantálja a hibatűrést és a magas rendelkezésre állást.
Ez a Kubernetes-telepítési erőforrás egy webalkalmazást telepít 3 replikával. A címkék az alkalmazáspéldányokat jelzik, a tárolókonfigurációk pedig a sablonmezőben vannak meghatározva. A Kubernetes kezeli a méretezést, a terheléselosztást, az öngyógyítást és a folyamatos frissítéseket egy méretezhető, rugalmas, hibatűrő és magasan elérhető alkalmazás érdekében.
Az adminisztráció egyszerűbb a konténerekkel és a Kubernetes-ekkel, biztosítva az egységes telepítést és az egyszerű méretezést. További konfigurációk adhatók hozzá a hálózati, tárolási és egyéb igényekhez.
Következtetésképpen
Bár az Ansible és a Kubernetes automatizálási eszközök, nem lenne teljesen tisztességes összehasonlítani őket egymással. Az Ansible segítséget nyújt a konfigurációk és feladatok kezelésében a rendszerek széles skáláján, míg a Kubernetes inkább a konténerek összehangolásáról szól.
Ha egy hagyományos IT-infrastruktúrát vesszük figyelembe, az Ansible lenne a megfelelő választás a konfigurációk és a telepítések kezelésére. A Kubernetes azonban kiválóan alkalmas modern, felhőalapú környezetekhez és konténeres alkalmazások kezeléséhez.
Mindkét eszköznek megvannak a maga erősségei, és nagymértékben javíthatják az IT-automatizálást és a telepítési munkafolyamatokat a saját szakterületükön. Így egyedi céljaik megértése és ennek megfelelő felhasználása óriási értéket hozhat az Ön működéséhez.