Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)

Bemærk. overs.: Forfatteren til det originale materiale er Henning Jacobs fra Zalando. Han skabte en ny webgrænseflade til at arbejde med Kubernetes, som er placeret som "kubectl til nettet." Hvorfor et nyt Open Source-projekt dukkede op, og hvilke kriterier blev ikke opfyldt af eksisterende løsninger - læs hans artikel.

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)

I dette indlæg gennemgår jeg de forskellige open source Kubernetes-webgrænseflader, opstiller mine krav til en universel brugergrænseflade og forklarer, hvorfor jeg udviklede Kubernetes WebView — en grænseflade designet til at gøre det nemmere at understøtte og fejlfinde flere klynger på én gang.

Brug cases

Hos Zalando betjener vi et stort antal Kubernetes-brugere (900+) og klynger (100+). Der er et par almindelige brugstilfælde, som ville drage fordel af et dedikeret webværktøj:

  1. kommunikation med kolleger for støtte;
  2. reagere på hændelser og undersøge deres årsager.

Support

Efter min erfaring ser supportkommunikation ofte sådan ud:

— Hjælp, vores service XYZ er ikke tilgængelig!
— Hvad ser du, når du optræder kubectl describe ingress ...?

Eller noget lignende for CRD:

— Jeg har et eller andet problem med identifikationstjenesten...
— Hvad frembringer kommandoen? kubectl describe platformcredentialsset ...?

Sådan kommunikation kommer normalt til at indtaste forskellige variationer af kommandoen kubectl for at identificere problemet. Som et resultat er begge parter i samtalen tvunget til konstant at skifte mellem terminalen og webchatten, plus at de observerer en anden situation.

Derfor vil jeg gerne have Kubernetes webfrontend til at tillade følgende:

  • brugere kunne udveksle links og observer det samme;
  • ville hjælpe undgå menneskelige fejl til støtte: for eksempel at logge ind på den forkerte klynge på kommandolinjen, tastefejl i CLI-kommandoer osv.;
  • ville tillade skabe dine egne synspunkter at sende til kolleger, det vil sige tilføje kolonner med tags, vise mange typer ressourcer på én side;
  • Ideelt set bør dette webværktøj give dig mulighed for at indstille "dybe" links til specifikke sektioner af YAML (f.eks. at påpege en forkert parameter, der forårsager fejl).

Hændelsesrespons og analyse

At reagere på infrastrukturhændelser kræver situationsbevidsthed, evnen til at vurdere påvirkning og lede efter mønstre i klynger. Nogle eksempler fra det virkelige liv:

  • En kritisk produktionsservice har problemer, og det skal du find alle Kubernetes-ressourcer efter navn i alle klyngerat fejlfinde;
  • noder begynder at falde, når der skaleres, og du har brug for find alle pods med status "Afventer" i alle klyngerat vurdere omfanget af problemet;
  • individuelle brugere rapporterer et problem med DaemonSet implementeret på tværs af alle klynger og skal finde ud af det Er problemet totalt?.

Min standardløsning i sådanne tilfælde er noget i retning af for i in $clusters; do kubectl ...; done. Det er klart, at der kunne udvikles et værktøj, der giver lignende muligheder.

Eksisterende Kubernetes-webgrænseflader

Open source-verdenen af ​​webgrænseflader til Kubernetes er ikke særlig stor*, så jeg forsøgte at indsamle mere information vha. Twitter:

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)

*Min forklaring på det begrænsede antal webgrænseflader til Kubernetes: Cloud-tjenester og Kubernetes-leverandører tilbyder normalt deres egne frontends, så markedet for "god" gratis Kubernetes UI er relativt lille.

Gennem et tweet lærte jeg om K8Dash, Kubernator и Oktant. Lad os se på dem og andre eksisterende Open Source-løsninger, lad os prøve at forstå, hvad de er.

K8Dash

"K8Dash er den enkleste måde at administrere en Kubernetes-klynge på."

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)

K8Dash Ser godt ud og føles hurtigt, men har en række ulemper for de ovennævnte anvendelsestilfælde:

  • Fungerer kun inden for en klynges grænser.
  • Sortering og filtrering er muligt, men har ikke permalinks.
  • Der er ingen understøttelse af Custom Resource Definitions (CRD'er).

Kubernator

"Kubernator er en alternativ brugergrænseflade til Kubernetes. I modsætning til Kubernetes Dashboard på højt niveau giver det kontrol på lavt niveau og fremragende synlighed i alle objekter i klyngen med mulighed for at oprette nye, redigere dem og løse konflikter. Da det er en helt klientsideapplikation (som kubectl), kræver den ikke nogen anden backend end selve Kubernetes API-serveren, og den respekterer også klyngeadgangsregler."

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)

Dette er en ret præcis beskrivelse Kubernator. Desværre mangler den nogle funktioner:

  • Betjener kun én klynge.
  • Der er ingen listevisningstilstand (dvs. du kan ikke vise alle pods med statussen "Afventer").

Kubernetes Dashboard

"Kubernetes Dashboard er en universel webgrænseflade til Kubernetes-klynger. Det giver brugerne mulighed for at administrere og fejlfinde applikationer, der kører i en klynge, samt administrere selve klyngen."

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)

Desværre Kubernetes Dashboard hjælper ikke rigtig med mine support- og hændelsesaktiviteter, fordi det:

  • der er ingen permanente links, for eksempel når jeg filtrerer ressourcer eller ændrer sorteringsrækkefølgen;
  • der er ingen nem måde at filtrere efter status - se for eksempel alle pods med status "Afventer";
  • kun én klynge understøttes;
  • CRD'er understøttes ikke (denne funktion er under udvikling);
  • ingen brugerdefinerede kolonner (såsom kolonner mærket efter type kubectl -L).

Kubernetes Operational View (kube-ops-view)

"System Dashboard Observer for K8s Cluster Space."

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)

У Kubernetes operationelle visning En helt anden tilgang: dette værktøj viser kun klynge noder og pods ved hjælp af WebGL, uden nogen tekstlige objektdetaljer. Det er fantastisk til et hurtigt overblik over klyngens helbred (falder bælg?)*, men det er ikke egnet til de support- og hændelsesaktioner, der er beskrevet ovenfor.

* Bemærk. overs.: I denne forstand kan du også være interesseret i vores plugin grafana-statuskort, som vi talte mere detaljeret om i denne artikel.

Kubernetes-ressourcerapport (kube-ressource-rapport)

"Saml pod- og Kubernetes-klyngressourceanmodninger, sammenlign dem med ressourceforbrug, og generer statisk HTML."

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)

Kubernetes ressourcerapport genererer statiske HTML-rapporter om ressourceforbrug og omkostningsfordeling på tværs af teams/applikationer i klynger. Rapporten er noget nyttig til support og hændelsesrespons, fordi den giver dig mulighed for hurtigt at finde den klynge, hvor applikationen er implementeret.

Bemærk. overs.: En tjeneste og et værktøj kan også være nyttigt til at se oplysninger om allokering af ressourcer og deres omkostninger blandt cloud-udbydere Kubecost, som vi gennemgår for nylig offentliggjort.

Oktant

"En udvidelsesbar webplatform til udviklere designet til at give større forståelse for kompleksiteten af ​​Kubernetes-klynger."

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)

Oktant, skabt af VMware, er et nyt produkt, som jeg lærte om relativt for nylig. Med dens hjælp er det praktisk at udforske klyngen på en lokal maskine (der er endda visualiseringer), men det løser kun problemerne med support og hændelsesrespons i begrænset omfang. Ulemper ved Octant:

  • Ingen klyngesøgning.
  • Fungerer kun på den lokale maskine (udruller ikke til en klynge).
  • Kan ikke sortere/filtrere objekter (kun etiketvælger understøttes).
  • Du kan ikke angive brugerdefinerede kolonner.
  • Du kan ikke liste objekter efter navneområde.

Jeg havde også problemer med stabiliteten af ​​Octant med Zalando-klynger: på nogle CRD'er han var ved at falde.

Introduktion til Kubernetes Web View

"kubectl til nettet".

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)

Efter at have analyseret de tilgængelige grænseflademuligheder for Kubernetes besluttede jeg at oprette en ny: Kubernetes WebView. Jeg har jo faktisk bare brug for al magten kubectl på nettet, nemlig:

  • tilgængelighed af alle (skrivebeskyttede) operationer, som brugere foretrækker at bruge kubectl til;
  • alle URL'er skal være permanente og repræsentere siden i sin oprindelige form, så kolleger kan dele dem og bruge dem i andre værktøjer;
  • understøttelse af alle Kubernetes-objekter, som giver dig mulighed for at løse enhver form for problem;
  • ressourcelister bør kunne downloades til yderligere arbejde (i regneark, CLI-værktøjer som f.eks grep) og opbevaring (f.eks. til postmortem);
  • støtte til valg af ressourcer efter etiket (svarende til kubectl get .. -l);
  • evnen til at oprette kombinerede lister over forskellige typer ressourcer (svarende til kubectl get all) at opnå et fælles operationelt billede blandt kolleger (for eksempel under en hændelsesreaktion);
  • muligheden for at tilføje brugerdefinerede smarte dybe links til andre værktøjer såsom dashboards, loggere, applikationsregistre osv. at lette fejlfinding/løsning af fejl og reaktion på hændelser;
  • Frontend skal være så simpelt som muligt (ren HTML) for at undgå tilfældige problemer, såsom frossen JavaScript;
  • understøttelse af flere klynger for at forenkle interaktion under fjernrådgivning (for eksempel for kun at huske én URL);
  • Hvis det er muligt, bør situationsanalyse forenkles (f.eks. med links til download af ressourcer for alle klynger/navneområder);
  • yderligere muligheder for at oprette fleksible links og fremhæve tekstinformation, for eksempel, så du kan pege kolleger på et specifikt afsnit i ressourcebeskrivelsen (en linje i YAML);
  • evnen til at tilpasse til kravene fra en specifik klient, for eksempel, så du kan oprette specielle visningsskabeloner til CRD'er, dine egne tabelvisninger og ændre CSS-stile;
  • værktøjer til yderligere udforskning på kommandolinjen (f.eks. visning af fulde kommandoer kubectl, klar til kopiering);

Ud over opgaverne løst i Kubernetes Web View (ikke-mål) forblev:

  • abstraktion af Kubernetes-objekter;
  • applikationsstyring (f.eks. implementeringsstyring, Helm-diagrammer osv.);
  • skriveoperationer (skal udføres gennem sikre CI/CD- og/eller GitOps-værktøjer);
  • smuk grænseflade (JavaScript, temaer osv.);
  • visualisering (se kube-ops-visning);
  • omkostningsanalyse (se kube-ressource-rapport).

Hvordan hjælper Kubernetes Web View med support og hændelsesrespons?

Support

  • Alle links er permanente, som gør det nemmere at udveksle information med kolleger.
  • Du kan oprette dine ideerVis f.eks. alle implementeringer og pods med en specifik etiket i to specifikke klynger (flere klyngenavne og ressourcetyper kan angives i linket, adskilt af kommaer).
  • Du kan henvise til specifikke linjer i en YAML-fil objekt, der angiver potentielle problemer i objektspecifikationen.

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)
Søg efter klynger i Kubernetes Web View

Hændelsesrespons

  • Global søgning (global søgning) giver dig mulighed for at søge efter objekter i alle klynger.
  • Listevisninger kan vise alle objekter med en bestemt tilstand/kolonne i alle klynger (f.eks. skal vi finde alle pods med status "Afventer").
  • Lister over objekter kan downloades i tab-separeret værdi (TSV) format til senere analyse.
  • Eksterne links, der kan tilpasses Giver dig mulighed for at skifte til relaterede dashboards og andre værktøjer.

Annoncering af Kubernetes Web View (og en kort oversigt over andre web-brugergrænseflader til Kubernetes)
Kubernetes Web View: liste over pods med "Afventer"-status i alle klynger

Hvis du vil prøve Kubernetes Web View, anbefaler jeg at tjekke ud dokumentation eller se på live demo.

Grænsefladen kunne selvfølgelig være bedre, men indtil videre er Kubernetes Web View et værktøj til "avancerede brugere", som ikke viger tilbage for at manipulere URL-stier manuelt, hvis det er nødvendigt. Hvis du har kommentarer/tilføjelser/forslag, så kontakt venligst med mig på Twitter!

Denne artikel er en kort historie om baggrunden, der førte til oprettelsen af ​​Kubernetes Web View. Flere følger! (Bemærk. overs.: De skal forventes i forfatterens blog.)

PS fra oversætteren

Læs også på vores blog:

Kilde: www.habr.com

Tilføj en kommentar