DevOps konténerizáció

Szakmai cikkünkből kiderül, hogyan használható a Kubernetes, RKE és Rancher konténerizációs megoldás kialakítására és mi ezen komponensek kapcsolata. Bemutatásra kerül, hogy miért érdemes RKE-vel feltelepíteni a Kubernetes környezetet, valamint a Rancher felület által biztosított főbb funkciók és komponensek. A cikk feltételezi, hogy az olvasó tisztában van a konténerizáció alapjaival, valamint a Kubernetes architektúrához tartozó fogalmakkal.

A Kubernetes és Rancher kapcsolatát az alábbi ábra szemlélteti. A későbbiekben bővebben kifejtésre kerülnek az ábra egyes részei.

Konténerizáció Rancher platform
Forrás: https://kruschecompany.com/rancher-2-0-a-quick-look-at-the-new-version/

Kubernetes, RKE, Rancher és az ezek közötti kapcsolat

Kubernetes

Kubernetes mára az egyik leggyakrabban használt konténer orchesztrációs platform. A Kubernetes környezetre új operációs rendszerként, alkalmazás platformként is tekinthetünk. Operációs rendszer, mivel olyan funkciókat biztosít, amit operációs rendszer szinten szokás kezelni, mint pl. hálózat, különböző volume-ok, biztonsági megoldások stb. Alkalmazás platform, mivel az alkalmazásokat futtatja, azokat kezeli, előre meghatározott keretek közé szorítja erőforrásban (cpu, memória, tárhely), újraindítja, leállítja, stb.

A Kubernetes környezet kialakítása, valamint annak üzemeltetése on-premise környezetben rengeteg kérdést vet fel, mint például:

  • Hány node-ra van szükségünk?
  • Milyen típusú node-okra lesz szükségünk? (master, worker, control plane, infra, stb.)
  • Mekkora terhelésre készüljünk?
  • Hogyan tudjuk bővíteni a klaszterünket?
  • Hogyan tudjuk frissíteni a klaszterünket?
  • Az operációs rendszer frissítése hogyan megy?
  • Szükség esetén hogyan tudjuk szeparálni, hogy melyik node-on fussanak a podjaink?
  • Milyen verziójú docker image-eket használjunk a környezet kialakításához?

A fentebb leírt kérdésekre nyújt megoldást az RKE (Rancher Kubernetes Engine), valamint a Rancher felülete. Az RKE komponens segítségével főként a kialakítás, valamint a hosszú távú üzemeltetés során előkerülő kérdések kerülnek megválaszolásra.

RKE

Az RKE komponens az alábbiakkal segíti a Kubernetes környezetet kialakító szakembert:

  • Kubernetes környezet kialakításban
  • Kubernetes környezet yaml leíróban kerül definiálásra
  • Új node bevonása a clusterbe egyszerűen megoldható
  • Node eltávolítása (master node kivételével) egyszerűen megoldható
  • Kubernetes környezet konfigurálása, valamint annak hardeningje a korábban említett yaml leíróban kerül leírásra (akár utólag, futási időben is)
  • A Kubernetes környezet futtatásához szükséges image-ek összegyűjtésre kerültek, azok tesztelve vannak
  • On-premise környezetben internet elérés nélkül lehetőséget biztosít Kubernetes környezet kialakítására
  • Kubernetes hálózatkezelő komponens egyszerű telepítésére lehetőséget biztosít. Az alábbi komponensek támogatottak: Canal (Calico + Flannel), Calico, Flannel, Weave

Rancher

Rancher komponens pedig az alábbiakban segíti a Kubernetes környezetet használó szakembert:

  • Mindennapi feladatok elvégzése
  • Kubernetes üzemeltetésben kevésbé jártas szakemberek könnyebben képesek felderíteni a környezetet, információkat kinyerni arról
  • Felületen keresztül történő telepítés (Fontos kiemelni, hogy Kubernetes környezetre minden esetben a CI/CD láncon keresztül szükséges telepíteni.)
  • Jogosultságkezelés átláthatóbbá tétele (pl. előre definiált szerepkörök)
  • Active Directory integráció
  • Monitoring integráció (Prometheus + Grafana) – A monitoring funkció egyszerűen felületen keresztül bekapcsolható.
  • Service Mesh integráció (Istio + Jaeger + Kiali) – A Service Mesh funkció egyszerűen, felületen keresztül bekapcsolható, továbbá nem kell a fejlesztőnek a környezet kialakítással „bajlódnia”. A megfelelő verziók tesztelve és összeegyeztetve megtalálhatóak a Rancher komponensei között.
  • Logolás integráció (Fluentd) – Az alkalmazások logjai egyszerűen elszállíthatóak, integrálható más rendszerekkel
  • Projekt szintű szemlélet (ez a cikk későbbi részében részletesebben kifejtésre kerül)
  • Szükség esetén Nagios integráció, már létező plugin segítségével

A következő pontokban a főbb funkciók kerülnek kifejtésre.

Kubernetes környezet kialakítása RKE segítségével

Az RKE komponens segítségével az alábbiakat tudjuk egyszerűen elvégezni:

  • SSH-n keresztüli Kubernetes környezet kialakítás – Központi management gépről, vagy saját gépről RKE bináris segítségével
  • Új node bevonása a cluster.yml módosításával
  • Private registry-ből (pl.: Nexus) történő telepítés
  • Kubernetes verzió szabályozása Kubernetes cluster leíróban
  • Kubernetes környezet frissítése biztonságosan, futási időben
  • Kubernetes környezet hardening
  • ETCD automatikus snapshot készítés (Az ETCD a Kubernetes kulcs-érték alapú adatbázisa, ahol a cluster információk tárolódnak.)
  • Auditálhatóság
  • Nginx Ingress telepítése (az Nginx Ingress egy külső forgalomirányításhoz használható Load Balancing megoldás)

A Kubernetes környezet kialakítása az RKE komponens segítségével történik egy nagyvállalati környezetben elvártnak megfelelő módon. A cluster.yml leíróban minden esetben nyilván van tartva a cluster aktuális telepítéskori, frissítéskori állapota. A cluster.yml állományban kerül definiálásra az összes Kubernetes környezethez tartozó node, valamint a Kubernetes környezethez tartozó beállítások leírása. Az alábbi kódrészlet egy három node-ból álló Kubernetes környezetet ír le, amiben egy master és két worker node található. A worker node-ok pedig két részre bomlanak, az egyik az infra elemek futtatásáért, míg a másik a compute-ért felel.

Konténerizáció Kubernetes kódrészlet
Fontos, hogy a fenti kódrészlet nem teljes!

Rancher autentikációs és autorizációs megoldások

A környezet kialakítása után a jogosultságok kiosztása elengedhetetlen a Kubernetes környezet megfelelő kezeléséhez és üzemeltetésre való átadásához. Erre lehetőséget biztosít a Rancher felület. A Rancher az alábbi autentikációs lehetőségeket biztosítja, az alkalmazás részeként:

Rancher autentikációs és autorizációs megoldások

Enterprise környezetben a leggyakrabban használt autentikációs megoldás az Active Directory. A Rancher lehetőséget biztosít csoport alapú jogosultságkezelésre is. Előre definiált szerepkörökhöz rendelhetünk hozzá egy adott AD csoportot és a csoportban található felhasználók megkapják azon jogosultságokat, amelyek a szerepkörhöz tartoznak.

Rancher felületén lehetőség nyílik a meglevő szerepkörök módosítására, vagy újak felvételére. A tapasztalat az, hogy az előre definiált szerepkörök többnyire elegendőek. Az alábbi szerepkörök vannak definiálva Rancher alkalmazásban:

Cluster szintű szerepkörök(Kubernetes cluster menedzseléséhez):

Kubernetes cluster-szintű szerepkörök

Projekt szintű szerepkörök (alkalmazások menedzseléséhez):

Konténerizáció - projekt szintű menedzsment

Rancher projekt alapú szemlélet

Abban az esetben, ha bizonyos namespace-ek, illetve az abban futó workload-ok láthatóságát, kezelését jogosultságokhoz kötik, azokat projektekben érdemes szervezni. Az egy projekt alá tartozó workloadok a logikailag összetartozó komponenseket tartalmazza, vagyis az alkalmazást azonosítja. Az alábbi példában egy projekt alatt egy namespace található, ami több workload-ot tartalmaz.

Rancher projekt alapú szemlélet

Az egyes projektekhez lehetőség van AD csoportokat vagy felhasználókat rendelni. Az alkalmazásokhoz (projektekhez és annak tartalmához) csak az arra jogosult felhasználó fér hozzá.

Rancher monitoring megoldások

Rancher felületen lehetőség van az alkalmazások, illetve a cluster monitorozására ’out of the box’, amit a Prometheus biztosít. A Prometheus metrikákat gyűjt, ami a Grafana felületén keresztül kerül megjelenítésre. A Rancher felületén integrálva is megtalálhatóak a metrikák. A monitoring funkciót Rancher felületen keresztül lehet engedélyezni, cluster vagy projekt szinten.

Rancher-Grafana integráció:

Rancher-Grafana integráció 1.
Rancher-Grafana integráció 2.

Grafana felülete:

A Grafana felülete

Rancher által nyújtott beépített értesítési lehetőségek

A Rancher előre meghatározott metrikák alapján (aminek módosítására, vagy új definiálásra van lehetőség) képes értesítéseket küldeni. Erre az alábbi lehetőségeket biztosítja:

Rancher beépített értesítési lehetőségek

Rancher Service Mesh megvalósítás

A Service Mesh egy dedikált üzenettovábbító réteg a mikroszolgáltatás architektúrában. Segítségével képesek vagyunk egységesen kezelni, monitorozni és kontrollálni a kommunikációt az egyes  mikroszolgáltatások között. Többféle Service Mesh megvalósító réteg található meg a „piacon”, ebből a Rancher az Istio megoldását integrálta. A Rancher nem csak az Istio-t, hanem annak előnyeit kihasználó komponenseket is tartalmazza, mint a Kialit, valamint a Jaegert. A Kiali segítségével a mikroszolgáltatások közötti kommunikációt tudjuk felderíteni, míg a Jaeger a tranzakciók nyomonkövetésében segít.

Kiali felülete Rancher felületen integrálva:

Kiali felülete Rancher felületen integrálva

Jaeger felülete:

Jaeger felülete

Rancher központi logolás megvalósítás

A Rancher központosítottan lehetőséget biztosít a Kubernetes környezeten futtatott alkalmazások naplóbejegyzéseinek elküldésére. A naplóbejegyzések elküldése cluster wide, vagy projekt szinten nyílik lehetőség. Az alábbi lehetőségek integrációja biztosított Rancher segítségével.

Rancher központi logolás eszközök

A logok begyűjtése a konténerek standard outputjáról történik. A Rancher nem egy az egyben adja vissza a logokat, hanem kiegészíti őket a környezeti információkkal. Ezek között megtalálható a konténer neve, a pod neve, amiben a konténer fut, illetve a namespace neve is látható a naplóbejegyzésben. Az információk segítenek beazonosítani a naplóbejegyzések eredetét és a feldolgozást is jelentősen megkönnyítik.

Rancher Helm csomagok

Rancher környezetben lehetőség van alkalmazások és szoftvercsomagok telepítésére úgynevezett katalógusokból (Helm csomagok).

Rancher Helm csomagok

Zárszó

A Kubernetes, RKE és a Rancher egy nyílt forráskódú szoftver, ami ingyenesen elérhető és felhasználható. A fentebb említett funkciókon kívül még sok extrát ad a Kubernetes környezethez. A Rancher felülete megkönnyíti a fejlesztők, üzemeltetők számára a Kubernetes környezet használatát.

További információ az említett eszközökről:

A Rancherről korábbi TechReggeli előadásunk is megtekinthető.