Prezentare generală a interfețelor grafice pentru Kubernetes

Prezentare generală a interfețelor grafice pentru Kubernetes

Pentru lucrul cu drepturi depline cu sistemul, cunoașterea utilităților liniei de comandă este importantă: în cazul Kubernetes, acesta este kubectl. Pe de altă parte, interfețele grafice bine concepute și bine gândite pot funcționaоmajoritatea sarcinilor obișnuite și deschid oportunități suplimentare pentru operarea sistemelor.

Anul trecut am publicat o traducere mică prezentare generală a interfeței de utilizare web pentru Kubernetes, programat să coincidă cu anunțul interfeței web Kubernetes WebView. Autorul acelui articol și utilitatea în sine, Henning Jacobs de la Zalando, tocmai a poziționat noul produs ca „kubectl pentru web”. El a vrut să creeze un instrument cu capabilități ușor de utilizat pentru interacțiune într-un format de suport tehnic (de exemplu, arătarea rapidă a problemei cu un link web) și pentru a răspunde la incidente, căutând probleme în mai multe clustere în același timp. Progenitul său se dezvoltă în prezent (în principal prin eforturile autorului însuși).

Deoarece deservim multe clustere Kubernetes de diferite dimensiuni, suntem, de asemenea, interesați să putem oferi un instrument vizual clienților noștri. Atunci când alegem o interfață potrivită, următoarele caracteristici au fost cheie pentru noi:

  • suport pentru diferențierea drepturilor utilizatorului (RBAC);
  • vizualizarea stării spațiului de nume și a primitivelor standard Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • obținerea accesului la linia de comandă din interiorul podului;
  • vizualizarea jurnalelor de păstăi;
  • vizualizați starea podurilor (describe status);
  • îndepărtarea păstăilor.

Alte funcții, cum ar fi vizualizarea resurselor consumate (în contextul podurilor / controlerelor / spațiilor de nume), crearea / editarea primitivelor K8, nu sunt relevante în fluxul nostru de lucru.

Vom începe revizuirea cu tabloul de bord clasic Kubernetes, care este standardul nostru. Întrucât lumea nu stă pe loc (ceea ce înseamnă că Kubernetes are din ce în ce mai multe GUI-uri noi), vom vorbi și despre alternativele sale actuale, rezumând totul într-un tabel comparativ de la sfârșitul articolului.

NB: În revizuire, nu vom repeta cu acele soluții care au fost deja luate în considerare în ultimul articol, cu toate acestea, de dragul caracterului complet, opțiunile relevante din acesta (K8Dash, Octant, Kubernetes Web View) sunt incluse în tabelul final.

1. Tabloul de bord Kubernetes

  • Pagina de documentație;
  • repertoriu (8000+ stele GitHub);
  • Licență: Apache 2.0;
  • Pe scurt: „Interfață web universală pentru clusterele Kubernetes. Permite utilizatorilor să gestioneze și să depaneze aplicațiile care rulează în cluster, precum și să gestioneze clusterul în sine.”

Prezentare generală a interfețelor grafice pentru Kubernetes

Acesta este un panou de uz general acoperit de autorii Kubernetes în documentația oficială (dar nedislocabile Mod implicit). Este conceput pentru nevoile de funcționare zilnică și depanare a aplicațiilor dintr-un cluster. Acasă, îl folosim ca un instrument vizual cu drepturi depline, care ne permite să oferim dezvoltatorilor accesul necesar și suficient la cluster. Capacitățile sale acoperă toate nevoile acestora care apar în procesul de utilizare a clusterului (În acest articol am demonstrat câteva caracteristici ale panoului). După cum ați putea ghici, aceasta înseamnă că satisface toate cerințele noastre enumerate mai sus.

Printre principalele caracteristici ale Kubernetes Dashboard:

  • Navigare: vizualizați principalele obiecte ale K8-urilor în contextul spațiilor de nume.
  • Dacă aveți drepturi de administrator, panoul arată noduri, spații de nume și volume persistente. Pentru noduri, sunt disponibile statistici privind utilizarea memoriei, procesorului, alocarea resurselor, metrici, stare, evenimente etc.
  • Vizualizați aplicațiile implementate într-un spațiu de nume după tipul lor (Deployment, StatefulSet etc.), relațiile dintre ele (ReplicaSet, Horizontal Pod Autoscaler), statistici și informații generale și personalizate.
  • Vizualizați serviciile și intrările, precum și relațiile acestora cu pod-urile și punctele finale.
  • Vizualizați obiectele fișierelor și stocările: volum persistent și revendicare volum persistent.
  • Vizualizați și editați ConfigMap și Secret.
  • Vizualizați jurnalele.
  • Acces la linia de comandă în containere.

Un dezavantaj semnificativ (cu toate acestea, nu pentru noi) este că nu există suport pentru lucrul cu mai multe clustere. Proiectul este dezvoltat activ de comunitate și menține caracteristici relevante odată cu lansarea de noi versiuni și specificații ale API-ului Kubernetes: cea mai recentă versiune a panoului este v2.0.1 22 mai 2020 - Testat pentru compatibilitate cu Kubernetes 1.18.

2. obiectiv

Prezentare generală a interfețelor grafice pentru Kubernetes

Proiectul este poziționat ca un mediu de dezvoltare integrat complet (IDE) pentru Kubernetes. Mai mult, este optimizat pentru a funcționa cu multe clustere și un număr mare de poduri care rulează în ele (testat pe 25 de poduri).

Principalele caracteristici/capacități ale Lens:

  • Aplicație autonomă care nu necesită instalarea de nimic în interiorul clusterului (mai precis, Prometheus va fi necesar să obțină toate valorile, dar se poate folosi și o instalare existentă pentru aceasta). Instalarea „principală” se face pe un computer personal care rulează Linux, macOS sau Windows.
  • Management multi-cluster (sute de clustere acceptate).
  • Vizualizarea stării clusterului în timp real.
  • Grafice de utilizare a resurselor și tendințe cu istoric bazat pe Prometheus încorporat.
  • Acces la linia de comandă a containerelor și a nodurilor de cluster.
  • Suport complet pentru Kubernetes RBAC.

Versiunea curentă - 3.5.0 din 16 iunie 2020 Creat inițial de Kontena, astăzi toată proprietatea intelectuală a fost transferată unei organizații speciale Lakeland Labs, numită „o uniune de tehnologi și tehnologi nativi din cloud”, care este responsabilă pentru „conservarea și disponibilitatea software-ului și produselor Open Source de la Kontena”.

Lens este al doilea cel mai popular proiect de pe GitHub din categoria GUI pentru Kubernetes, „pierzând” doar tabloul de bord Kubernets în sine. Toate celelalte soluții Open Source care nu fac parte din categoria CLI* sunt semnificativ inferioare ca popularitate.

* Vedeți despre K9-uri în partea bonus a recenziei.

3. Kubernetic

Prezentare generală a interfețelor grafice pentru Kubernetes

Aceasta este o aplicație proprietară care este instalată pe un computer personal (Linux, macOS, Windows sunt acceptate). Autorii săi promit o înlocuire completă a utilitarului liniei de comandă și, odată cu acesta, nu este nevoie să vă amintiți comenzile și chiar o creștere de zece ori a vitezei.

Una dintre caracteristicile interesante ale instrumentului este suportul încorporat pentru diagramele Helm, iar unul dintre dezavantaje este lipsa de metrici de performanță a aplicațiilor.

Principalele caracteristici ale Kubernetic:

  • Afișare convenabilă a stării clusterului. Un ecran pentru a vizualiza toate obiectele cluster asociate și dependențele acestora; starea de pregătire roșu/verde pentru toate obiectele; modul de vizualizare a stării clusterului cu actualizări de stare în timp real.
  • Butoane de acțiune rapidă pentru ștergerea și scalarea aplicației.
  • Suport pentru operarea multi-cluster.
  • Lucru simplu cu spații de nume.
  • Suport pentru diagrame Helm și depozite Helm (inclusiv cele private). Instalarea și gestionarea diagramelor în interfața web.

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

4. Kubevious

  • Loc;
  • prezentare;
  • repertoriu (~500 de stele GitHub);
  • Licență: Apache 2.0
  • Pe scurt: „Kubevious face clusterele Kubernetes, configurația aplicației și vizualizarea stării sigure și ușor de înțeles.”

Prezentare generală a interfețelor grafice pentru Kubernetes

Ideea proiectului este de a crea un instrument conceput pentru a analiza și depana configurațiile aplicațiilor implementate într-un cluster. Autorii s-au concentrat în primul rând pe implementarea acestor caracteristici, lăsând lucruri mai generale pentru mai târziu.

Caracteristici și funcții cheie ale Kubevious:

  • Vizualizarea clusterului într-un mod centrat pe aplicație: obiectele înrudite din interfață sunt grupate, aliniate într-o ierarhie.
  • Afișarea vizuală a dependențelor în configurații și a consecințelor în cascadă ale modificărilor acestora.
  • Afișarea erorilor de configurare a clusterului: utilizarea greșită a etichetelor, porturi ratate etc. (Apropo, dacă sunteți interesat de această funcție, acordați atenție Polarisdespre care noi a scris deja.)
  • În plus față de punctul anterior, este disponibilă detectarea containerelor potențial periculoase, de ex. având prea multe privilegii (atribute hostPID, hostNetwork, hostIPC, montură docker.sock etc).
  • Sistem avansat de căutare pentru cluster (nu numai după numele obiectelor, ci și după proprietățile acestora).
  • Instrumente pentru planificarea capacității și optimizarea resurselor.
  • „Mașina timpului” încorporată (abilitatea de a vedea modificările anterioare în configurația obiectelor).
  • Gestionarea RBAC cu un tabel pivot interconectat de Roluri, RoleBindings, ServiceAccounts.
  • Funcționează cu un singur cluster.

Proiectul are o istorie foarte scurtă (prima lansare a avut loc pe 11 februarie 2020) și se pare că a existat o perioadă fie de stabilizare, fie de încetinire a dezvoltării. Dacă versiunile anterioare au fost lansate frecvent, atunci cea mai recentă versiune (v0.5 15 aprilie 2020) a rămas în urma ritmului inițial de dezvoltare. Acest lucru se datorează probabil numărului mic de colaboratori: există doar 4 dintre ei în istoria depozitului și toată munca efectivă este realizată de o singură persoană.

5. Kubewise

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

Prezentare generală a interfețelor grafice pentru Kubernetes

Un produs nou de la VMware, creat inițial ca parte a unui hackathon intern (în iunie 2019). Instalat pe un computer personal, funcționează pe baza de electron (acceptat Linux, macOS și Windows) și necesită kubectl v1.14.0 sau o versiune ulterioară.

Principalele caracteristici ale Kubewise:

  • Interacțiunea interfeței cu cele mai frecvent utilizate entități Kubernetes: noduri, spații de nume etc.
  • Suport pentru mai multe fișiere kubeconfig pentru diferite clustere.
  • Terminal cu capacitatea de a seta o variabilă de mediu KUBECONFIG.
  • Generați fișiere kubeconfig personalizate pentru spațiul de nume dat.
  • Caracteristici avansate de securitate (RBAC, parole, conturi de serviciu).

Până acum, proiectul are o singură versiune - versiune 1.1.0 din 26 noiembrie 2019. Mai mult, autorii plănuiau să-l lanseze imediat ca Open Source, dar din cauza unor probleme interne (nu legate de probleme tehnice) nu au putut face acest lucru. Începând cu mai 2020, autorii lucrează la următoarea versiune și ar trebui să inițieze procesul de deschidere a codului în același timp.

6. Consola OpenShift

Prezentare generală a interfețelor grafice pentru Kubernetes

În ciuda faptului că această interfață web face parte din distribuția OpenShift (este instalată acolo folosind operator special), autori prevăzută capacitatea de a-l instala/utiliza în instalații Kubernetes normale (vanilie).

OpenShift Console a fost în dezvoltare de mult timp, așa că a încorporat multe caracteristici. Le vom aminti pe cele principale:

  • Abordarea interfeței partajate - două „perspective” ale posibilităților disponibile în Consolă: pentru administratori și pentru dezvoltatori. Modul perspectiva dezvoltatorului grupează obiectele într-o formă care este mai ușor de înțeles pentru dezvoltatori (în funcție de aplicații) și concentrează interfața pe rezolvarea unor sarcini tipice precum implementarea aplicațiilor, urmărirea stării de construire/implementare și chiar editarea codului prin Eclipse Che.
  • Gestionarea sarcinilor de lucru, rețea, stocare, drepturi de acces.
  • Separarea logică a sarcinilor de lucru în proiecte și aplicații. Într-una dintre cele mai recente versiuni - v4.3 - a apărut special tabloul de bord al proiectului, care afișează datele obișnuite (numărul și stările implementărilor, podurilor etc.; consumul de resurse și alte valori) într-o secțiune de proiect.
  • Afișare actualizată în timp real a stării clusterului, modificări (evenimente) care au avut loc în acesta; vizualizarea jurnalelor.
  • Vizualizați datele de monitorizare bazate pe Prometheus, Alertmanager și Grafana.
  • Managementul operatorilor reprezentați în operatorhub.
  • Gestionați versiunile care rulează prin Docker (dintr-un depozit specificat cu un fișier Docker), S2I sau utilități externe arbitrare.

NB: Nu am adăugat altele la comparație Distribuții Kubernetes (de exemplu, cel mult mai puțin cunoscut Kubesphere): în ciuda faptului că GUI-ul poate fi foarte avansat în ele, de obicei vine ca parte a stivei integrate a unui sistem mare. Cu toate acestea, dacă credeți că nu există suficiente soluții care să funcționeze pe deplin în instalația vanilla K8s, anunțați-ne în comentarii.

primă

1. Portainer pe Kubernetes în Beta

  • Loc;
  • repertoriu (~100 de stele GitHub);
  • Licență: Zlib(?) (la fel pentru proiectul părinte).

Un proiect al echipei Portainer, care a dezvoltat interfața populară cu același nume pentru lucrul cu Docker. Deoarece proiectul se află într-un stadiu incipient de dezvoltare (prima și singura versiune beta a ieșit 16 aprilie 2020), nu i-am evaluat caracteristicile. Cu toate acestea, poate fi de interes pentru mulți: dacă este vorba despre tine, urmărește dezvoltarea.

2. IcePanel

  • Loc;
  • Licență: proprietară;
  • Pe scurt: „Visual Kubernetes Editor”.

Prezentare generală a interfețelor grafice pentru Kubernetes

Această aplicație desktop tânără își propune să vizualizeze și să gestioneze resursele Kubernetes în timp real cu o interfață simplă drag & drop. Obiectele acceptate în prezent sunt Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap și Secret. În curând ei promit că vor adăuga suport pentru Helm. Principalele dezavantaje sunt apropierea codului (este de așteptat deschiderea „într-un fel”) și lipsa suportului Linux (până în prezent sunt disponibile doar versiuni pentru Windows și macOS, deși aceasta este, de asemenea, cel mai probabil doar o chestiune de timp).

3.k9s

  • Loc;
  • demonstrație;
  • repertoriu (~7700 de stele GitHub);
  • Licență: Apache 2.0;
  • Pe scurt: „O interfață de consolă pentru Kubernetes care vă permite să vă gestionați clusterul în stil.”

Prezentare generală a interfețelor grafice pentru Kubernetes

Utilitarul a fost doar în partea bonus a recenziei pentru că oferă o interfață grafică pentru consolă. Cu toate acestea, autorii au stors literalmente maximul din terminal, oferind nu numai o interfață ușor de utilizat, ci și 6 teme predefinite și un sistem avansat de comenzi rapide de la tastatură și aliasuri de comandă. Abordarea lor amănunțită nu s-a limitat la aspect: caracteristicile k9s sunt plăcut impresionante: managementul resurselor, afișarea stării clusterului, afișarea resurselor într-o reprezentare ierarhică cu dependențe, vizualizarea jurnalelor, suport RBAC, extinderea capabilităților prin plugin-uri... Toate acestea au atras. pentru comunitatea largă K8s: numărul de stele GitHub ale proiectului este aproape la fel de bun ca tabloul de bord oficial Kubernetes!

4. Panouri de control al aplicației

Și la sfârșitul recenziei - o mini-categorie separată. Include două interfețe web concepute nu pentru gestionarea cuprinzătoare a clusterelor Kubernetes, ci pentru gestionarea a ceea ce este implementat în acestea.

După cum știți, unul dintre cele mai mature și răspândite instrumente pentru implementarea aplicațiilor complexe în Kubernetes este Helm. De-a lungul perioadei de existență, multe pachete (Helm charts) s-au acumulat pentru o implementare ușoară multe aplicații populare. Prin urmare, apariția instrumentelor vizuale adecvate care vă permit să gestionați ciclul de viață al diagramelor este destul de logică.

4.1. Monocular

  • repertoriu (1300+ stele GitHub);
  • Licență: Apache 2.0;
  • Pe scurt: „O aplicație web pentru căutarea și descoperirea diagramelor Helm în mai multe depozite. Servește drept bază pentru proiectul Helm hub.”

Prezentare generală a interfețelor grafice pentru Kubernetes

Această dezvoltare de la autorii lui Helm este instalată în Kubernetes și funcționează în cadrul aceluiași cluster, realizând sarcina. Cu toate acestea, în prezent, proiectul aproape că nu este dezvoltat. Scopul său principal este de a sprijini existența Helm Hub. Pentru alte nevoi, autorii recomandă Kubeapps (vezi mai jos) sau Red Hat Automation Broker (parte a OpenShift, dar și care nu mai este dezvoltat).

4.2. Kubeapps

  • Loc;
  • prezentare;
  • repertoriu (~2100 de stele GitHub);
  • Licență: Apache 2.0
  • Pe scurt: „Tabloul de bord al aplicației dvs. pentru Kubernetes”.

Prezentare generală a interfețelor grafice pentru Kubernetes

Un produs de la Bitnami, care este instalat și într-un cluster Kubernetes, dar diferă de Monocular prin concentrarea sa inițială pe lucrul cu depozite private.

Funcții și caracteristici cheie ale Kubeapps:

  • Vizualizați și instalați diagramele Helm din depozite.
  • Verificați, actualizați și eliminați aplicațiile bazate pe Helm instalate pe cluster.
  • Suport pentru depozite de diagrame personalizate și private (suportă ChartMuseum și JFrog Artifactory).
  • Vizualizarea și lucrul cu servicii externe - din Catalogul de servicii și Brokeri de servicii.
  • Publicarea aplicațiilor instalate utilizând mecanismul Service Catalog Bindings.
  • Suport pentru autentificare și separare a drepturilor folosind RBAC.

Tabel rezumativ

Mai jos este un tabel rezumativ în care am încercat să rezumăm și să agregam principalele caracteristici ale interfețelor vizuale existente pentru a facilita compararea:

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

Concluzie

GUI-urile pentru Kubernetes sunt o nișă destul de specifică și tânără. Cu toate acestea, se dezvoltă foarte activ: deja este posibil să găsiți atât soluții destul de mature, cât și foarte tinere, care mai au loc de creștere. Acestea se adresează unei varietăți de aplicații, oferind caracteristici și aspect pentru a se potrivi aproape tuturor gusturilor. Sperăm că această recenzie vă va ajuta să alegeți instrumentul care se potrivește cel mai bine nevoilor dvs. actuale.

PS

Mulțumesc kvaps pentru datele de pe Consola OpenShift pentru tabelul de comparație!

Citește și pe blogul nostru:

Sursa: www.habr.com

Adauga un comentariu