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.

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 — 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:
- a kollégákkal való kommunikáció a támogatás keretében;
- 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 :

* 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 , és -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".

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."

Ez egy elég pontos leírás a . 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.”

Sajnos, 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 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 , amelyről részletesebben írtunk a .
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.”

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, amelyről nemrégiben írtunk .
Octant
«Расширяемая веб-платформа для разработчиков, призванная обеспечить лучшее понимание сложности кластеров Kubernetes».

, 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 .
Bemutatom a Kubernetes Web View-t.
A "kubectl webes változata".

Az elérhető Kubernetes felületek elemzése után úgy döntöttem, hogy újat hozok létre: . 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 );
- költségelemzés (lásd ).
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

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
- Kubernetes Web View: a „Pending” státuszú podok listája minden klaszterben

Ha szeretné kipróbálni a Kubernetes Web View-t, javaslom, hogy ismerkedjen meg a
vagy nézze meg a é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 !
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 .)
P.S. a fordítótól
Olvasson további információkat a blogunkban:
- «»;
- «»;
- «»;
- «».
Forrás: habr.com
