Prezentare generală a interfețelor grafice pentru Kubernetes

Prezentare generală a interfețelor grafice pentru Kubernetes

Pentru a lucra corect cu sistemul, este important să cunoști utilitarele din linia de comandă: în cazul Kubernetes, acesta este kubectl. Pe de altă parte, interfețele grafice bine proiectate pot îndeplini majoritatea sarcinilor obișnuite și pot deschide oportunități suplimentare în exploatarea sistemelor.mareÎn anul trecut, am publicat un traducere

a unei mici recenziei a interfeței web pentru Kubernetes, legată de anunțul interfeței web Kubernetes Web View . Autorul acelui articol și al utilitării este Henning Jacobs de la compania Zalando, care a poziționat noutatea ca "kubectl pentru web". El a dorit să creeze un instrument cu funcționalități convenabile pentru interacțiunea în format de suport tehnic (de exemplu, pentru a arăta rapid o problemă printr-un link web) și pentru reacția la incidente, căutând probleme în multe clustere simultan. Creatura sa este în dezvoltare și în prezent (în principal, datorită autorului însuși).Servind multe clustere Kubernetes de diferite dimensiuni, suntem de asemenea interesați de posibilitatea de a oferi clienților un instrument de lucru vizual. La alegerea interfeței potrivite, principala noastră considerare a fost următoarele funcționalități:

sprijin pentru delimitarea drepturilor utilizatorilor (RBAC);

  • vizualizarea stării spațiului de nume și a primitivilor standard Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • acces la linia de comandă din interiorul pod-ului;
  • vizualizarea jurnalelor pod-urilor;
  • vizualizarea stării pod-urilor (
  • describe statusștergerea pod-urilor.);
  • Alte funcții, cum ar fi vizualizarea resurselor consumate (pe pod-uri/controlere/namespace-uri), crearea/editarea primitivilor K8s, nu sunt relevante în fluxul nostru de lucru.

Recenzia noastră va începe cu tradiționalul Kubernetes Dashboard, acceptat ca standard pentru noi. Deoarece lumea nu stă pe loc (iar Kubernetes beneficiază de interfețe GUI noi), vom vorbi și despre alternativele sale actuale, generalizând totul într-un tabel comparativ la sfârșitul articolului.

: În recenzie nu ne vom repeta cu soluțiile care au fost deja evaluate în

NB, totuși — pentru a completa imaginea — opțiunile relevante din aceasta (K8Dash, Octant, Kubernetes Web View) sunt incluse în tabelul final. articolul precedent1. Kubernetes Dashboard

Pagina de documentație

  • (8000+ stele pe GitHub);;
  • Repository-ul Licență: Apache 2.0;
  • Licență: Apache 2.0;
  • În scurt: „Interfață web universală pentru clustere Kubernetes. Ea permite utilizatorilor să gestioneze aplicațiile care rulează în cluster și să depisteze problemele, precum și să administreze însuși clusterul.”

Prezentare generală a interfețelor grafice pentru Kubernetes

Aceasta este un panou multiutilizator, considerat de autorii Kubernetes în documentația oficială (deși nu este implementabilă implicit). Este destinată nevoilor de operare de zi cu zi și depanării aplicațiilor în cluster. La noi, o folosim ca un instrument vizual complet și ușor, care permite oferirea dezvoltatorilor accesul necesar și suficient la cluster. Capacitățile sale acoperă toate nevoile lor care apar în procesul de utilizare a clusterului (în această articole am demonstrat câteva funcții ale panoului). Așa cum este ușor de ghicit, acest lucru înseamnă că satisface toate cerințele noastre enumerate mai sus.

Printre principalele funcționalități ale Kubernetes Dashboard se numără:

  • Navigarea: vizualizarea obiectelor principale K8s pe baza spațiilor de nume.
  • În cazul în care aveți drepturi de administrator, panoul arată nodurile, spațiile de nume și Volumele Persistente. Pentru noduri sunt disponibile statistici despre utilizarea memoriei, procesorului, alocarea resurselor, metrici, status, evenimente etc.
  • Vizualizarea aplicațiilor desfășurate în spațiul de nume în funcție de tipul lor (Deployment, StatefulSet etc.), relațiile dintre ele (ReplicaSet, Horizontal Pod Autoscaler), statistici generale și personalizate și informații.
  • Vizualizarea serviciilor și Ingress-urilor, precum și relațiile lor cu pod-urile și endpoint-urile.
  • Vizualizarea obiectelor de fișiere și a stocărilor: Volume Persistente și Cereri de Volume Persistente.
  • Vizualizarea și editarea ConfigMap și Secret.
  • Vizualizarea jurnalelor.
  • Acces la linia de comandă în containere.

O neajuns semnificativ (deși nu pentru noi) – nu există suport pentru operarea multi-cluster. Proiectul se dezvoltă activ cu suport din partea comunității și păstrează funcțiile actuale odată cu lansarea de noi versiuni și specificații ale API-ului Kubernetes: ultima versiune a panoului – v2.0.1 din 22 mai 2020 – a fost testată pentru compatibilitate cu Kubernetes 1.18.

2. Lens

Prezentare generală a interfețelor grafice pentru Kubernetes

Proiectul se poziționează ca o adevărată medie integrată de dezvoltare (IDE) pentru Kubernetes. În plus, este optimizat pentru lucrul cu mai multe clustere și un număr mare de pod-uri desfășurate în acestea (testat pe 25 de mii de pod-uri).

Principalele caracteristici/funcționalități ale Lens:

  • Aplicație autonomă, care nu necesită instalarea nimic în clustere (mai precis, pentru a obține toate metricile va fi necesar Prometheus, dar se poate folosi și o instalare existentă). Instalarea „principală” se face pe un computer personal cu Linux, macOS sau Windows.
  • Management multi-cluster (suportă sute de clustere).
  • Vizualizarea stării clusterului în timp real.
  • Graficele utilizării resurselor și tendințele cu istoric bazat pe Prometheus integrat.
  • Acces la linia de comandă a containerelor și nodurilor din cluster.
  • Sprijin complet pentru Kubernetes RBAC.

Versiunea actuală — 3.5.0 din 16 iunie 2020. Versiunea inițială a fost creată de compania Kontena, iar în prezent toată proprietatea intelectuală a fost transferată într-o organizație specială Lakend Labs, cunoscută sub numele de „asociația pasionaților și tehnologiilor cloud native”, care este responsabilă pentru „păstrarea și disponibilitatea software-ului Open Source și produselor Kontena”.

Lens — al doilea cel mai popular proiect pe GitHub din categoria GUI pentru Kubernetes, „pierde” doar în fața propriului Kubernetes Dashboard. Toate celelalte soluții Open Source care nu sunt din categoria CLI* sunt semnificativ mai puțin populare.

* Vezi despre K9s în partea bonus a recenziei.

3. Kubernetic

Prezentare generală a interfețelor grafice pentru Kubernetes

Aceasta este o aplicație proprietară, care se instalează pe un computer personal (supportă Linux, macOS, Windows). Autorii promite o înlocuire completă a utilitarului din linia de comandă și, împreună cu aceasta, absența necesității de a memora comenzi și chiar o creștere de zece ori a vitezei de lucru.

Una dintre trăsăturile interesante ale instrumentului este suportul integrat pentru Helm charts, iar unul dintre dezavantaje este lipsa metricilor de performanță ale aplicațiilor.

Principalele caracteristici ale Kubernetic:

  • Interfața prietenoasă pentru vizualizarea stării clusterului. O singură fereastră pentru a vizualiza toate obiectele legate de cluster și dependențele lor; stare de pregătire roșie/verde pentru toate obiectele; modul de vizualizare a stării clusterului cu actualizarea statutului în timp real.
  • Butonul de acțiune rapidă pentru ștergerea și scalarea aplicației.
  • Suport pentru funcționarea multi-cluster.
  • Lucru simplu cu spațiile de nume.
  • Suport pentru grafice Helm și module Helm (inclusiv cele private). Instalarea și gestionarea graficelor din interfața web.

Costul actual al produsului este o plată unică de 30 de euro pentru utilizarea de către o singură persoană pentru un număr nelimitat de spații de nume și clustere.

4. Kubevious

  • Site;
  • Prezentare;
  • Repository-ul (~500 stele pe GitHub);
  • Licență: Apache 2.0
  • Pe scurt: „Kubevious face ca clusterele Kubernetes, configurarea aplicațiilor și monitorizarea stării acestora să fie sigure și ușor de înțeles”.

Prezentare generală a interfețelor grafice pentru Kubernetes

Ideea proiectului este de a crea un instrument destinat analizei și depanării configurațiilor aplicațiilor desfășurate în cluster. Autorii s-au concentrat în primul rând pe implementarea acestor funcții, lăsând lucrurile mai generale pe mai târziu.

Principalele caracteristici și funcții ale Kubevious:

  • Vizualizarea clusterului într-un mod orientat pe aplicații: obiectele interconectate din interfață sunt grupate, formând o ierarhie.
  • Reprezentarea clară a dependențelor în configurații și a consecințelor acestora în caz de modificare.
  • Afișarea erorilor de configurare a clusterului: utilizarea incorectă a etichetelor, porturi omise etc. (În acest sens, dacă sunteți interesat de această funcție, acordați atenție la Polaris, despre care noi am scris deja.)
  • În plus față de punctul anterior - detectarea containerelor potențial periculoase, adică cele care au privilegii prea mari (atribut hostPID, hostNetwork, hostIPC, atașarea docker.sock și așa mai departe).
  • Un sistem avansat de căutare în cluster (nu doar pe baza numelui obiectelor, ci și pe proprietățile acestora).
  • Instrumente pentru planificarea capacităților și optimizarea resurselor.
  • O „mașină a timpului” încorporată (posibilitatea de a vedea modificările anterioare ale configurației obiectelor).
  • Gestionarea RBAC printr-un tabel sinoptic interconectat din Roles, RoleBindings, ServiceAccounts.
  • Funcționează doar cu un singur cluster.

Proiectul are o istorie foarte scurtă (prima versiune a fost lansată pe 11 februarie 2020) și pare că a început un period de stabilizare sau de încetinire a dezvoltării. Dacă versiunile anterioare au fost lansate frecvent, ultima versiune (v0.5 din 15 aprilie 2020) a rămas în urmă față de ritmul inițial de dezvoltare. Probabil că acest lucru se datorează numărului mic de colaboratori: în istoria repository-ului sunt doar 4, iar întreaga muncă efectivă se desfășoară de o singură persoană.

5. Kubewise

  • Pagina proiectului;
  • Licență: proprietară (va deveni Open Source);
  • Pe scurt: „Un client simplu multiplatfromă pentru Kubernetes.”

Prezentare generală a interfețelor grafice pentru Kubernetes

Un nou produs de la VMware, creat inițial în cadrul unui hackathon intern (în iunie 2019). Se instalează pe computerul personal, funcționează pe baza Electron (suport pentru Linux, macOS și Windows) și necesită kubectl versiunea 1.14.0 sau mai recentă.

Principalele caracteristici ale Kubewise:

  • Interacțiune în interfață cu cele mai utilizate entități Kubernetes: noduri, spații de nume etc.
  • Suport pentru multiple fișiere kubeconfig pentru diferite clustere.
  • Terminal cu capacitatea de a seta variabile de mediu KUBECONFIG.
  • Generarea fișierelor kubeconfig personalizate pentru un spațiu de nume specific.
  • Funcționalități avansate de securitate (RBAC, parole, conturi de serviciu).

Deocamdată, proiectul are un singur release - versiunea 1.1.0 din 26 noiembrie 2019. Autori au planificat să îl lanseze de la început ca Open Source, dar din cauza unor probleme interne (nelegate de aspecte tehnice) nu au reușit să facă acest lucru. În mai 2020, autorii lucrează la următorul release și, simultan, ar trebui să inițieze procesul de deschidere a codului.

6. OpenShift Console

Prezentare generală a interfețelor grafice pentru Kubernetes

Deși această interfață web este parte a distribuției OpenShift (acolo se instalează cu ajutorul unui operator special), autorii au prevăzut posibilitatea instalării/utilizării și în instalările standard (vanilla) Kubernetes.

OpenShift Console a fost dezvoltat de mult timp, așa că a integrat multe funcții. Să menționăm principalele:

  • Abordare separată a interfeței — două „perspective” disponibile în Console: pentru administratori și pentru dezvoltatori. Modul Developer perspective grupează obiectele într-o formă mai clară pentru dezvoltatori (pe aplicații) și orientează interfața spre soluționarea unor sarcini comune, cum ar fi implementarea aplicațiilor, monitorizarea stării compilării/implementării și chiar editarea codului prin Eclipse Che.
  • Managementul sarcinilor de lucru, rețelei, stocării, drepturilor de acces.
  • Divizarea logică pentru sarcini de lucru pe proiecte și aplicații. În una dintre ultimele versiuni - v4.3 - a apărut un Project dashboard, care afișează datele familiari (numărul și stările implementărilor, pod-urilor etc.; consumul de resurse și alte metrici) în perspectiva proiectelor.
  • Actualizare în timp real a stării cluster-ului, a modificărilor (evenimentelor) survenite; vizualizarea jurnalelor.
  • Vizualizarea datelor de monitorizare bazate pe Prometheus, Alertmanager și Grafana.
  • Gestionarea operatorilor, prezentați în OperatorHub.
  • Gestionarea construcțiilor care sunt executate prin Docker (din cadrul repositoarelor specificate cu Dockerfile), S2I sau utilitare externe arbitrare.

NB: Nu am inclus în comparație altele distribuții Kubernetes (de exemplu, mult mai puțin cunoscutul Kubesphere): deși interfața grafică din acestea poate fi foarte avansată, vine de obicei ca parte a unui stiv solid integrat. Totuși, dacă considerați că lipsesc unele soluții care funcționează complet și în instalarea vanilla a K8s, anunțați-ne în comentarii.

Bonus

1. Portainer pe Kubernetes în versiune beta

  • Site;
  • Repository-ul (~100 stele GitHub);
  • Licență: Zlib(?) (aceasta este a proiectului părinte).

Proiect de echipa Portainer, care a dezvoltat interfața populară omonimă pentru lucrul cu Docker. Deoarece proiectul este în stadiu incipient de dezvoltare (prima și singura versiune beta a fost lansată 16 aprilie 2020), nu am evaluat funcționalitățile sale. Cu toate acestea, ar putea interesa mulți: dacă este cazul, urmăriți evoluția.

2. IcePanel

  • Site;
  • Licență: proprietară;
  • Pe scurt: „Editor vizual pentru Kubernetes”.

Prezentare generală a interfețelor grafice pentru Kubernetes

Aceasta este o aplicație desktop tânără destinată să vizualizeze resursele Kubernetes în timp real și să le gestioneze printr-o interfață simplă în stil drag & drop. Obiectele suportate în prezent includ Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap și Secret. În curând se promite adăugarea suportului pentru Helm. Principalele dezavantaje sunt lipsa de deschidere a codului (se așteaptă deschiderea acestuia „într-un fel”) și lipsa suportului pentru Linux (deocamdată sunt disponibile doar versiunile pentru Windows și macOS, deși acest lucru este probabil doar o problemă de timp).3. k9s

(~7700 stele GitHub);

  • Site;
  • Demonstratie;
  • Repository-ul Pe scurt: „Interfață de consolă pentru Kubernetes, care permite gestionarea elegantă a cluster-ului”.
  • Licență: Apache 2.0;
  • Pe scurt: „Interfață de consolă pentru Kubernetes, care permite gestionarea elegantă a clusterului.”

Prezentare generală a interfețelor grafice pentru Kubernetes

Utilitarul a apărut doar în partea bonus a recenziei deoarece oferă un GUI bazat pe consolă. Cu toate acestea, autorii au scos maximum din terminal, oferind nu doar o interfață prietenoasă, ci și 6 teme prestabilite, un sistem dezvoltat de scurtături de tastatură și aliasuri pentru comenzi. Abordarea lor temeinică nu s-a limitat doar la aspect: capacitățile k9s sunt impresionant de plăcute: gestionarea resurselor, afișarea stării clusterului, prezentarea resurselor într-o formă ierarhică cu dependențe, vizualizarea jurnalelor, suportul RBAC, extinderea funcționalităților prin pluginuri... Toate acestea au fost pe placul unei large comunități K8s: numărul de stele pe GitHub pentru proiect este aproape comparabil cu Dashboard-ul oficial Kubernetes!

4. Panouri de control pentru aplicații

Și, în încheierea recenziei, o mini-categorie separată. Aceasta include două interfețe web, destinate nu pentru gestionarea complexă a clusterelor Kubernetes, ci pentru a gestiona ceea ce este desfășurat în acestea.

După cum bine se știe, unul dintre cele mai mature și răspândite instrumente pentru desfășurarea de aplicații complexe în Kubernetes este Helm. De-a lungul existenței sale, s-au acumulat o mulțime de pachete (grafice Helm) pentru desfășurarea simplă a multor aplicații populare. De aceea, apariția unor instrumente vizuale corespunzătoare, care să permită gestionarea ciclului de viață al graficelor, este perfect logică.

4.1. Monocular

  • Repository-ul (1300+ stele GitHub);
  • Licență: Apache 2.0;
  • În scurt: „Aplicație web pentru căutarea și descoperirea graficelor Helm în numeroase repozitorii. Serveste ca bază pentru proiectul Helm hub”.

Prezentare generală a interfețelor grafice pentru Kubernetes

Această dezvoltare de la autorii Helm este instalată în Kubernetes și funcționează în cadrul unui singur cluster, îndeplinind sarcina propusă. Totuși, în prezent, proiectul nu este aproape deloc dezvoltat. Scopul său principal este de a susține existența Helm Hub. Pentru alte nevoi, autorii recomandă Kubeapps (vezi mai departe) sau Red Hat Automation Broker (parte din OpenShift, dar care din nou nu mai este dezvoltat).

4.2. Kubeapps

  • Site;
  • Prezentare;
  • Repository-ul (~2100 stele GitHub);
  • Licență: Apache 2.0
  • În scurt: „Panoul tău de aplicații pentru Kubernetes”.

Prezentare generală a interfețelor grafice pentru Kubernetes

Produs de Bitnami, care este de asemenea instalat în clusterul Kubernetes, dar care se diferențiază de Monocular prin accentul inițial pe lucrul cu repozitorii private.

Funcții cheie și caracteristici ale Kubeapps:

  • Vizualizarea și instalarea graficelor Helm din repozitorii.
  • Verificarea, actualizarea și eliminarea aplicațiilor bazate pe Helm, instalate în cluster.
  • Suport pentru lucrul cu repozitorii personalizate și private de chart-uri (supportă ChartMuseum și JFrog Artifactory).
  • Vizualizarea și lucrul cu servicii externe — din Service Catalog și Service Brokers.
  • Publicarea aplicațiilor instalate prin mecanismul Service Catalog Bindings.
  • Suport pentru autentificare și separarea drepturilor prin RBAC.

Tabelul final

Mai jos este un tabel rezumat, în care am încercat să sintetizăm și să agregăm principalele capacități ale interfețelor vizuale existente pentru a facilita comparația:

Prezentare generală a interfețelor grafice pentru Kubernetes
(Versiunea online a tabelului este disponibilă în Google Docs.)

Concluzie

Interfețele grafice pentru Kubernetes reprezintă o nișă destul de specifică și tânără. Cu toate acestea, se dezvoltă destul de activ: deja se pot găsi atât soluții suficient de mature, cât și unele foarte noi, care încă au loc de creștere. Ele se orientează spre diverse opțiuni de aplicare, oferind funcționalități și aspect practic pe orice gust. Sperăm că această prezentare va ajuta la alegerea instrumentului care acoperă cel mai bine nevoile curente.

P.S.

Mulțumim kvaps pentru datele despre OpenShift Console pentru tabelul de comparație!

Citiți și în blogul nostru:

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster