A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)

Megjegyzés fordítás.: Az eredeti anyag szerzője Henning Jacobs a Zalando-tól. Ő készítette el az új webes interfészt a Kubernetes kezelésére, amelyet „kubectl a weben” néven pozicionálnak. Hogy miért jött létre az új Open Source projekt, és milyen kritériumoknak nem feleltek meg a meglévő megoldások, olvassa el az ő cikkében.

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)

Ebben a publikációban különböző nyílt forráskódú Kubernetes webes interfészeket vizsgálok, bemutatom az univerzális UI-ra vonatkozó követelményeimet, és elmondom, miért fejlesztettem ki Számos különböző méretű Kubernetes klaszter kiszolgálása közben mi is érdeklődtünk egy vizuális munkához való eszköz biztosításának lehetősége iránt. A megfelelő felület kiválasztásánál a következő lehetőségek voltak kulcsfontosságúak számunkra: — egy olyan interfészt, amelynek célja a támogatás és a hibák elhárítása több klaszterben egyszerre.

Felhasználási forgatókönyvek

A Zalandonál sok felhasználót (900+) és klasztert (100+) szolgálunk ki Kubernetes alatt. Van néhány tipikus felhasználási eset, ahol jól jönne egy speciális webes eszköz:

  1. a kollégákkal való kommunikáció a támogatás keretében;
  2. incidensekre való reagálás és az okok kivizsgálása.

Támogatás

Tapasztalataim szerint a támogatás keretében folyó kommunikáció gyakran így zajlik:

— Segítség, az XY szolgáltatásunk elérhetetlen!
— Mit látsz, amikor végrehajtod a kubectl describe ingress ...?

Vagy valami hasonlót a CRD-vel:

— Van valami problémám az azonosító szolgáltatással...
— Mit ad vissza a parancs kubectl describe platformcredentialsset ...?

Ez a kommunikáció általában a különböző parancsvariációk beírására redukálódik kubectl a probléma megállapítása érdekében. Ennek következtében a beszélgetés mindkét fele kénytelen folyamatosan váltogatni a terminál és a webes chat között, plusz különböző helyzeteket látnak.

Ezért szeretnénk, ha a Kubernetes webes front-endje a következőket tenné lehetővé:

  • a felhasználók tudnának linkeket megosztani és ugyanazt látnák;
  • segítene elkerülni az emberi hibákat a támogatásban: például ha nem a megfelelő klaszterbe lépnek be a parancssorban, elgépeléseket a CLI parancsokban stb.;
  • lehetővé tenné saját nézetek létrehozását a kollégák számára, vagyis oszlopok hozzáadását, különböző erőforrástípusok megjelenítését egy oldalon;
  • ideális esetben ez a webes eszköz lehetővé tenné a "mély" linkek létrehozását a YAML konkrét részeire (például a hibákat okozó hibás paraméterre mutatva).

Incidensre való reagálás és elemzés

Az infrastruktúrában bekövetkező eseményekre való reagálás helyzet-érzékenységet, hatások felmérésének képességét és minták keresését igényli a klaszterekben. Néhány valós példa:

  • kritikus fontosságú production szolgáltatás esetén problémák merülnek fel, és szükség van arra, hogy minden Kubernetes erőforrást nevük alapján keressünk az összes klaszterben, hogy elhárítsuk a hibákat;
  • a csomópontok leállnak a skálázás során, és szükséges, hogy minden "Pending" állapotú podot keressünk az összes klaszterben, hogy felmérjük a probléma mértékét;
  • egyedi felhasználók jeleznek problémát egy DaemonSettel, amelyet az összes klaszterben telepítettek, és ki kell deríteni, hogy a probléma átfogó jellegű-e.

A ilyen esetekben alkalmazott standard megoldásom valami ilyesmi: for i in $clusters; do kubectl ...; done. Nyilván lehet olyan eszközt kifejleszteni, amely hasonló lehetőségeket kínál.

A Kubernetes meglévő webes felületei

Az Open Source világ Kubernetes webes felületekből nem túl nagy*, így próbáltam további információt gyűjteni vagy a:

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)

* A Kubernetes webes felületeinek korlátozott számának magyarázata: a felhőszolgáltatók és a Kubernetes beszállítók általában saját frontendjeiket kínálják, ezért a „jó” ingyenes Kubernetes UI piac viszonylag kicsi.

Egy tweet révén értesültem a K8Dash, Kubernator és Octant-ról. Nézzük meg őket és más létező Open Source megoldásokat, próbáljuk megérteni, miről van szó.

K8Dash

A "K8Dash - a legegyszerűbb módja a Kubernetes klaszter kezelésének".

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)

K8Dash jól néz ki és gyorsan működik, de számos hátránya van a fent említett felhasználási esetekhez:

  • Csak egy klaszter keretein belül működik.
  • Rendelkezik rendezési és szűrési lehetőségekkel, de nincs állandó hivatkozás.
  • Nincs támogatás a Custom Resource Definitions (CRD) számára.

Kubernator

A "Kubernator - egy alternatív UI a Kubernetes számára. A Kubernetes Dashboard magas szintű paneljével ellentétben alacsony szintű ellenőrzést és remek áttekintést biztosít a klaszter összes objektumáról, lehetőséget ad új objektumok létrehozására, szerkesztésére és konfliktusok feloldására. Mivel egy teljesen kliensalapú alkalmazás (mint a kubectl), nem igényel háttérszervert, kivéve magát a Kubernetes API szervert, és figyelembe veszi a klaszterre vonatkozó hozzáférési szabályokat."

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)

Ez egy elég pontos leírás a Kubernatorról. Sajnos hiányzik belőle néhány képesség:

  • Csak egy klasztert szolgál ki.
  • Nincs lista nézet, azaz nem lehet megjeleníteni az összes 'Pending' státuszú podot.

Kubernetes Dashboard

A „Kubernetes Dashboard egy univerzális webes felület a Kubernetes klaszterekhez. Lehetővé teszi a felhasználók számára, hogy kezeljék a klaszterben futó alkalmazásokat, hibaelhárítást végezzenek, valamint kezeljék magát a klasztert.”

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)

Sajnos, Kubernetes Dashboard nem különösebben segít az incidensekhez való támogatási és reagálási tevékenységeimben, mivel:

  • nincs állandó hivatkozás, például amikor szűröm az erőforrásokat vagy megváltoztatom a rendezési sorrendet;
  • nincs egyszerű mód a státusz szerinti szűrésre - például látni az összes 'Pending' státuszú podot;
  • csak egy klaszter támogatott;
  • a CRD-k nem támogatottak (ez a funkció fejlesztés alatt áll);
  • nincs testreszabható oszlop (például címkével rendelkező oszlopok, mint például kubectl -L).

Kubernetes Operational View (kube-ops-view)

„Rendszernéző panel a K8s klaszterek terének figyelésére.”

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)

A Kubernetes Operational View teljesen más megközelítés: ez az eszköz csak a klaszter csomópontjait és podjait mutatja a WebGL segítségével, szöveges részletek nélkül. Jól alkalmas a klaszter állapotának operatív áttekintésére ('potok zuhannak?')*, de nem megfelelő a fent említett incidens támogató és reagáló esetekhez.

* Megjegyzés fordítás.: Ebben az értelemben érdekelheti a grafana-statusmap, amelyről részletesebben írtunk a cikkben.

Kubernetes Resource Report (kube-resource-report)

„Gyűjtse össze a Kubernetes klaszter és podok erőforrásigényéről szóló információkat, hasonlítsa össze azokat az erőforrásfogyasztással, és generáljon statikus HTML-t.”

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)

Kubernetes Erőforrás Jelentés statisztikus HTML-jelentéseket generál az erőforrások felhasználásáról és a költségek eloszlásáról a csapatok/alkalmazások között a klaszterekben. A jelentés bizonyos mértékig hasznos az incidens támogatásához és reagálásához, mivel gyorsabban megtalálható az a klaszter, ahol az alkalmazás fut.

Megjegyzés fordítás.: Az erőforrások eloszlásáról és értékéről szóló információk megtekintésében a felhőszolgáltatóknál hasznos lehet a szolgáltatás és az eszköz, Kubecostamelyről nemrégiben írtunk „Bővíthető webplatform fejlesztők számára, amely jobb megértést biztosít a Kubernetes klaszterek összetettségéről.”.

Octant

«Расширяемая веб-платформа для разработчиков, призванная обеспечить лучшее понимание сложности кластеров Kubernetes».

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)

Octant, VMware-ben készült – ez egy új termék, amiről viszonylag nemrégiben tudtam meg. Ez segít a kluster helyi gépen történő kényelmes vizsgálatában (még vizualizációk is vannak), azonban csak korlátozott mértékben foglalkozik a támogatás és az eseményekre való reagálás problémáival. Az Octant hátrányai:

  • Nincs keresés a kluszterekben.
  • Csak a helyi gépen működik (nem telepíthető kluszterben).
  • Nem lehet rendezni/filtrálni az objektumokat (csak a címke szelektor támogatott).
  • Nem lehet egyéni oszlopokat megadni.
  • Nem lehet az objektumok listáját névtér szerint megjeleníteni.

Továbbá problémáim voltak az Octant stabilitásával a Zalando kluszterekkel: néhány CRD-nél összeomlott..

Bemutatom a Kubernetes Web View-t.

A "kubectl webes változata".

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)

Az elérhető Kubernetes felületek elemzése után úgy döntöttem, hogy újat hozok létre: Számos különböző méretű Kubernetes klaszter kiszolgálása közben mi is érdeklődtünk egy vizuális munkához való eszköz biztosításának lehetősége iránt. A megfelelő felület kiválasztásánál a következő lehetőségek voltak kulcsfontosságúak számunkra:. Valójában csak az összes erejére van szükségem kubectl a weben, nevezetesen:

  • a felhasználók által preferált (csak olvasható) kubectl műveletek elérhetősége;
  • minden URL-nek állandónak kell lennie, és az eredeti megjelenést kell képviselnie, így a kollégák megoszthatják őket és más eszközökben felhasználhatják;
  • a Kubernetes összes objektumának támogatása, ami lehetővé teszi bármilyen típusú probléma megoldását;
  • az erőforráslistákat letölthetővé kell tenni a további munkához (például táblázatokban, CLI eszközökben grep) és tárolásra (például postmortemekhez);
  • erőforrások szűrése címkék szerint (hasonlóan a kubectl get .. -l);
  • megjeleníti az különböző típusú erőforrások egyesített listáját (hasonlóan a kubectl get all) a kollégák közötti általános operatív kép megértéséhez (például egy eseményre való reagálás során);
  • lehetőség a testreszabható "okos" mélyhivatkozások hozzáadására más eszközökhöz, mint például irányítópultok, naplózók, alkalmazásregiszterek stb., a hiba keresésének és az eseményekre való reagálás megkönnyítése érdekében;
  • a frontendnek a lehető legegyszerűbbnek kell lennie (tiszta HTML), hogy elkerülje a váratlan problémákat, például a lefagyott JavaScriptet;
  • több kluster támogatása az interakció egyszerűsítése érdekében távolról történő konzultáció során (például, hogy csak egy URL-t kelljen megjegyezni);
  • lehetőség szerint a helyzetelemzésnek is egyszerűsödnie kell (például a kluszterek/névterek erőforrásainak letöltési linkjeivel);
  • további lehetőségek rugalmas linkek létrehozására és szöveges információk kiemelésére, például hogy meg tudjuk mutatni a kollégáknak a forrás leírásának egy adott szakaszát (YAML sor);
  • a konkrét ügyfél igényeihez való alkalmazkodás lehetősége, például különleges megjelenítési sablonok létrehozása a CRD-hez, saját táblázatos nézetek készítése, CSS-stílusok módosítása;
  • eszközök további vizsgálathoz a parancssorban (például teljes parancsokat mutatva, kubectlkészen a másolásra);

Kubernetes Web View feladatain kívül (nem célok) maradtak:

  • Kubernetes objektumok absztrakciója;
  • alkalmazások kezelése (például deploymentek, Helm-chartek stb. kezelése);
  • írási műveletek (ezeket biztonságos CI/CD és/vagy GitOps eszközökkel kell végrehajtani);
  • szép felület (JavaScript, témák stb.);
  • vizualizációk (lásd kube-ops-view,);
  • költségelemzés (lásd kube-resource-report).

Hogyan segít a Kubernetes Web View a támogatásban és az incidensekre való reagálásban?

Támogatás

  • Minden link állandó,ami megkönnyíti az információk megosztását a kollégákkal.
  • Különböző nézeteket hozhatunk létre, például megjeleníthetjük az összes Deploymentet és Podot egy adott címkével két konkrét klaszterben (több klaszternevet és erőforrástípust megadhatunk a linkben, vesszővel elválasztva).Meg lehet hivatkozni
  • konkrét sorokra a YAML-fájlban a objektum specifikációjában lévő potenciális problémák megjelölésére. Keresés a klaszterekben a Kubernetes Web View-nál

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)
Reagálás az incidensekre

Globális keresés

  • (global search) lehetővé teszi, hogy minden klaszterben keresgéljünk a tárgyak között. Listás nézetek
  • minden olyan objektumot megjeleníthetnek, amelynek adott állapota/oszlopa van minden klaszterben (például szükség van minden „Pending” státuszú pod megkeresésére). Az objektumlisták letölthetők
  • tabulátorral elválasztott értékek (TSV) formátumban a későbbi elemzéshez. A testreszabható külső linkek
  • lehetővé teszik a megfelelő irányítópultok és egyéb eszközök közötti váltást. Kubernetes Web View: a „Pending” státuszú podok listája minden klaszterben

A Kubernetes Web View webes interfész bejelentése (és más Kubernetes web UI rövid áttekintése)
Ha szeretné kipróbálni a Kubernetes Web View-t, javaslom, hogy ismerkedjen meg a

vagy nézze meg a Microsoft dokumentációjával összhangban konfiguráljuk. Az egyetlen megjegyzés az, hogy az Ubuntu disztribúciót már letöltöttük, és a következő lépésben fogjuk telepíteni. A fő konfigurálás az "Windows alrendszer Linuxhoz" és a "Virtuális gép platform" kiegészítő komponenseinek aktiválására, valamint a beállítások alkalmazásához szükséges újraindításra korlátozódik: élő demó verziót живую демо-версию.

Természetesen, a felület lehetne jobb is, de a Kubernetes Web View egy olyan eszköz, amely a 'haladó felhasználók' számára készült, akik nem riadnak vissza attól, hogy szükség esetén manuálisan manipuláljanak az URL-útvonalakkal. Ha bármilyen megjegyzése, kiegészítése vagy javaslata van, kérem, lépjen kapcsolatba velem a Twitteren!

Ez a cikk a Kubernetes Web View létrejöttének előzményeiről szól. Hamarosan további cikkek következnek! (Megjegyzés fordítás.: Ezeket a szerző blogjában.)

P.S. a fordítótól

Olvasson további információkat a blogunkban:

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster