Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)

Noat. transl.: De skriuwer fan it orizjinele materiaal is Henning Jacobs út Zalando. Hy makke in nije webynterface foar wurkjen mei Kubernetes, dy't gepositioneerd is as "kubectl foar it web." Wêrom in nij Open Source-projekt ferskynde en hokker kritearia net foldien waarden troch besteande oplossingen - lês syn artikel.

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)

Yn dit berjocht besjoch ik de ferskate iepen boarne Kubernetes-webynterfaces, set myn easken foar in universele UI út, en ferklearje wêrom't ik ûntwikkele Kubernetes WebView - in ynterface ûntworpen om it makliker te meitsjen om meardere klusters tagelyk te stypjen en op te lossen.

Brûk gefallen

By Zalando tsjinje wy in grut oantal Kubernetes-brûkers (900+) en klusters (100+). D'r binne in pear gewoane gebrûksgefallen dy't profitearje fan in tawijd webark:

  1. kommunikaasje mei kollega's foar stipe;
  2. reagearje op ynsidinten en ûndersykje harren oarsaken.

stipe

Yn myn ûnderfining sjocht stipekommunikaasje der faak sa út:

- Help, ús tsjinst XYZ is net beskikber!
- Wat sjochst ast opfiert kubectl describe ingress ...?

Of wat ferlykber foar CRD:

- Ik haw wat probleem mei de identifikaasjetsjinst ...
- Wat bringt it kommando op? kubectl describe platformcredentialsset ...?

Sokke kommunikaasje komt normaal del op it ynfieren fan ferskate fariaasjes fan it kommando kubectl om it probleem te identifisearjen. As gefolch wurde beide partijen fan it petear twongen om konstant te wikseljen tusken de terminal en it webchat, en se observearje in oare situaasje.

Dêrom soe ik graach wolle dat de Kubernetes-webfrontend it folgjende tastean:

  • brûkers koene útwikseling keppelings en observearje itselde ding;
  • soe helpe foarkomme minsklike flaters yn stipe: bygelyks ynlogge op it ferkearde kluster op de kommandorigel, typfouten yn CLI-kommando's, ensfh.
  • soe tastean generearje jo eigen views om nei kollega's te stjoeren, dat is, tagkolommen taheakje, in protte soarten boarnen op ien side werjaan;
  • Ideaallik soe dit webark jo kinne ynstelle "djippe" keppelings nei spesifike seksjes fan YAML (Bygelyks in ferkearde parameter oanwize dy't mislearrings feroarsaket).

Ynsidint antwurd en analyze

Reagearje op ynsidinten fan ynfrastruktuer fereasket situaasjebewustwêzen, de mooglikheid om ynfloed te beoardieljen, en sykje nei patroanen yn klusters. Guon foarbylden fan it echte libben:

  • In krityske produksjetsjinst hat problemen en jo moatte fine alle Kubernetes-boarnen op namme yn alle klustersproblemen oplosse;
  • knopen begjinne te fallen doe't skaalfergrutting en jo nedich fine alle pods mei de status "Pending" yn alle klustersbeoardielje de omfang fan it probleem;
  • yndividuele brûkers melde in probleem mei DaemonSet ynset oer alle klusters en moatte útfine Is it probleem totaal?.

Myn standert oplossing yn sokke gefallen is wat as for i in $clusters; do kubectl ...; done. Fansels koe in ark wurde ûntwikkele dat ferlykbere mooglikheden leveret.

Besteande Kubernetes-webynterfaces

De iepen boarne wrâld fan webynterfaces nei Kubernetes is net heul grut *, dus ik besocht mear ynformaasje te sammeljen mei Twitter:

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)

*Myn ferklearring foar it beheinde oantal webynterfaces foar Kubernetes: wolktsjinsten en Kubernetes-leveransiers biede normaal har eigen frontends oan, sadat de merk foar "goede" fergese Kubernetes UI relatyf lyts is.

Troch in tweet ik leard oer K8Dash, Kubernator и Octant. Litte wy nei har en oare besteande Open Source-oplossingen sjen, litte wy besykje te begripen wat se binne.

K8Dash

"K8Dash is de ienfâldichste manier om in Kubernetes-kluster te behearjen."

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)

K8Dash Sjocht der goed út en fielt rap, mar hat in oantal neidielen foar de hjirboppe neamde gebrûksgefallen:

  • Wurket allinnich binnen de grinzen fan ien kluster.
  • Sortearje en filterjen binne mooglik, mar hawwe gjin permalinks.
  • D'r is gjin stipe foar Custom Resource Definitions (CRD's).

Kubernator

"Kubernator is in alternative UI foar Kubernetes. Oars as it Kubernetes Dashboard op hege nivo, biedt it kontrôle op leech nivo en poerbêste sichtberens yn alle objekten yn it kluster mei de mooglikheid om nije te meitsjen, se te bewurkjen en konflikten op te lossen. As in folslein client-side-applikaasje (lykas kubectl), hat it gjin oare backend nedich dan de Kubernetes API-tsjinner sels, en respektearret ek regels foar kluster tagong.

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)

Dit is in aardich krekte beskriuwing Kubernator. Spitigernôch mist it guon funksjes:

  • Tsjinnet mar ien kluster.
  • D'r is gjin listwerjeftemodus (d.w.s., jo kinne net alle pods sjen litte mei de status "Pending").

Kubernetes Dashboard

"Kubernetes Dashboard is in universele webynterface foar Kubernetes-klusters. It lit brûkers applikaasjes beheare en problemen oplosse dy't rinne yn in kluster, en ek it kluster sels beheare.

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)

Helaas, Kubernetes Dashboard helpt net echt mei myn stipe- en ynsidintresponsaktiviteiten, om't it:

  • d'r binne gjin permaninte keppelings, bygelyks as ik boarnen filterje of de sortearfolchoarder feroarje;
  • d'r is gjin maklike manier om te filterjen op status - sjoch bygelyks alle pods mei de status "Pending";
  • mar ien kluster wurdt stipe;
  • CRD's wurde net stipe (dizze funksje is yn ûntwikkeling);
  • gjin oanpaste kolommen (lykas kolommen markearre troch type kubectl -L).

Kubernetes Operational View (kube-ops-view)

"Systeem Dashboard Observer foar K8s Cluster Space."

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)

У Kubernetes Operational View In folslein oare oanpak: dit ark toant allinich klusterknooppunten en pods mei WebGL, sûnder tekstuele objektdetails. It is geweldich foar in fluch oersjoch fan 'e sûnens fan' e kluster (falle pods?) *, mar it is net geskikt foar de hjirboppe beskreaune gefallen foar gebrûk fan stipe en ynsidintrespons.

* Noat. transl.: Yn dizze sin kinne jo ek ynteressearre wêze yn ús plugin grafana-statusmap, dêr't wy yn mear detail oer praat hawwe dit artikel.

Kubernetes Resource Report (kube-resource-report)

"Sammelje pod- en Kubernetes-klusterboarneoanfragen, fergelykje se mei boarneferbrûk, en generearje statyske HTML."

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)

Kubernetes Resource Report genereart statyske HTML-rapporten oer boarnegebrûk en kostenferdieling oer teams / applikaasjes yn klusters. It rapport is wat nuttich foar stipe en antwurd op ynsidint, om't jo it kluster fluch fine kinne wêr't de applikaasje wurdt ynset.

Noat. transl.: In tsjinst en ark kinne ek nuttich wêze by it besjen fan ynformaasje oer de allocaasje fan boarnen en har kosten ûnder wolkproviders Kubecost, dy't wy besjogge koartlyn publisearre.

Octant

"In útwreide webplatfoarm foar ûntwikkelders ûntworpen om in grutter begryp te jaan fan 'e kompleksiteit fan Kubernetes-klusters."

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)

Octant, makke troch VMware, is in nij produkt dat ik relatyf koartlyn learde. Mei har help is it handich om it kluster op in lokale masine te ferkennen (d'r binne sels fisualisaasjes), mar it behannelet de problemen fan stipe en ynsidintreaksje allinich yn beheinde mjitte. Neidielen fan Octant:

  • Gjin kluster sykjen.
  • Wurket allinich op 'e lokale masine (net ynset op in kluster).
  • Kin objekten net sortearje/filterje (allinich labelselektor wurdt stipe).
  • Jo kinne gjin oanpaste kolommen opjaan.
  • Jo kinne gjin objekten listje op nammeromte.

Ik hie ek problemen mei de stabiliteit fan Octant mei Zalando klusters: op guon CRDs hy wie fallen.

Yntroduksje fan Kubernetes Web View

"kubectl foar it web".

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)

Nei it analysearjen fan de beskikbere ynterface-opsjes foar Kubernetes, besleat ik in nije te meitsjen: Kubernetes WebView. Ommers, ik haw gewoan alle krêft nedich kubectl op it web, nammentlik:

  • beskikberens fan alle (allinich-lêzen) operaasjes wêrfoar brûkers leaver kubectl brûke;
  • alle URL's moatte permanint wêze en de side yn syn oarspronklike foarm fertsjintwurdigje, sadat kollega's se diele kinne en brûke yn oare ark;
  • stipe foar alle Kubernetes-objekten, wêrtroch jo elk type probleem kinne oplosse;
  • boarnelisten moatte te downloaden wêze foar fierder wurk (yn spreadsheets, CLI-ark lykas grep) en opslach (bygelyks foar postmortems);
  • stipe foar it selektearjen fan boarnen op label (lykas kubectl get .. -l);
  • de mooglikheid om kombineare listen te meitsjen fan ferskate soarten boarnen (lykas kubectl get all) om in mienskiplik operasjoneel byld te krijen ûnder kollega's (bygelyks tidens in ynsidintreaksje);
  • de mooglikheid om oanpaste tûke djippe keppelings ta te foegjen oan oare ark lykas dashboards, loggers, applikaasjeregistraasjes, ensfh. it fasilitearjen fan problemen / oplossen fan flaters en reagearje op ynsidinten;
  • De frontend moat sa ienfâldich mooglik wêze (suvere HTML) om willekeurige problemen te foarkommen, lykas beferzen JavaScript;
  • stipe foar meardere klusters om ynteraksje te ferienfâldigjen by rieplachtsjen op ôfstân (bygelyks om mar ien URL te ûnthâlden);
  • As it mooglik is, moat situasjonele analyze ferienfâldige wurde (bygelyks mei keppelings om boarnen te downloaden foar alle klusters/nammeromten);
  • ekstra mooglikheden foar it meitsjen fan fleksibele keppelings en markearje tekstynformaasje, bygelyks, sadat jo kollega's kinne wize op in spesifike seksje yn 'e boarnebeskriuwing (in rigel yn YAML);
  • de mooglikheid om oan te passen oan 'e easken fan in spesifike kliïnt, bygelyks, sadat jo spesjale displaysjabloanen meitsje kinne foar CRD's, jo eigen tabelwerjeften en CSS-stilen feroarje;
  • ark foar fierdere ferkenning op 'e kommandorigel (bygelyks folsleine kommando's sjen litte kubectl, klear foar kopiearjen);

Beyond de taken oplost yn Kubernetes Web View (net-doelen) bleau:

  • abstraksje fan Kubernetes-objekten;
  • applikaasje behear (Bygelyks, ynset behear, Helm charts, ensfh);
  • skriuwoperaasjes (moatte dien wurde fia feilige CI / CD en / of GitOps-ark);
  • prachtige ynterface (JavaScript, tema's, ensfh.);
  • fisualisaasje (sjoch kube-ops-view);
  • kostenanalyse (sjoch kube-resource-rapport).

Hoe helpt Kubernetes Web View mei stipe en antwurd op ynsidinten?

stipe

  • Alle keppelings binne permanint, wat it makliker makket om ynformaasje út te wikseljen mei kollega's.
  • Jo kinne meitsje dyn ideeën, bygelyks, werjaan alle Deployments en Pods mei in spesifyk label yn twa spesifike klusters (ferskate kluster nammen en boarne typen kinne wurde oantsjutte yn de keppeling, skieden troch komma's).
  • Jo kinne ferwize nei spesifike rigels yn in YAML-bestân foarwerp, oanjout potinsjele problemen yn it objekt spesifikaasje.

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)
Sykje op klusters yn Kubernetes Web View

Incident Response

  • Global sykjen (wrâldwiid sykjen) kinne jo sykje foar objekten yn alle klusters.
  • List Views kin alle objekten mei in bepaalde steat / kolom yn alle klusters werjaan (Bygelyks, wy moatte fine alle pods mei de status "Pending").
  • Listen fan objekten kinne wurde ynladen yn tab-skieden wearde (TSV) opmaak foar lettere analyze.
  • Oanpasbere eksterne keppelings Hjirmei kinne jo wikselje nei relatearre dashboards en oare ark.

Oankundiging fan de Kubernetes Web View (en in koart oersjoch fan oare web UI's foar Kubernetes)
Kubernetes Web View: list mei pods mei status "Pending" yn alle klusters

As jo ​​​​kubernetes Web View wolle besykje, ried ik oan om te kontrolearjen dokumintaasje of sjoch live demo.

Fansels kin de ynterface better wêze, mar foar no is Kubernetes Web View in ark foar "avansearre brûkers" dy't net skamje om URL-paden manuell te manipulearjen as dat nedich is. As jo ​​opmerkings / tafoegings / suggestjes hawwe, nim dan kontakt op mei my op Twitter!

Dit artikel is in koarte skiednis fan 'e eftergrûn dy't late ta de skepping fan Kubernetes Web View. Mear sille folgje! (Noat. transl.: Se moatte wurde ferwachte yn skriuwer syn blog.)

PS fan de oersetter

Lês ek op ús blog:

Boarne: www.habr.com

Add a comment