Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)

Tandaan. transl.: Ang may-akda ng orihinal na materyal ay si Henning Jacobs mula sa Zalando. Gumawa siya ng bagong web interface para sa pakikipagtulungan sa Kubernetes, na nakaposisyon bilang "kubectl para sa web." Bakit lumitaw ang isang bagong proyekto ng Open Source at kung anong pamantayan ang hindi natugunan ng mga umiiral na solusyon - basahin ang kanyang artikulo.

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)

Sa post na ito, sinusuri ko ang iba't ibang open source na mga web interface ng Kubernetes, inilatag ko ang aking mga kinakailangan para sa isang unibersal na UI, at ipinapaliwanag ko kung bakit ako bumuo Kubernetes WebView β€” isang interface na idinisenyo upang gawing mas madaling suportahan at i-troubleshoot ang maraming cluster nang sabay-sabay.

Mga kaso ng paggamit

Sa Zalando, nagsisilbi kami sa malaking bilang ng mga user ng Kubernetes (900+) at mga cluster (100+). Mayroong ilang mga karaniwang kaso ng paggamit na makikinabang mula sa isang nakalaang tool sa web:

  1. komunikasyon sa mga kasamahan para sa suporta;
  2. pagtugon sa mga insidente at pagsisiyasat ng mga sanhi nito.

Suporta

Sa aking karanasan, kadalasang ganito ang hitsura ng mga komunikasyon sa suporta:

β€” Tulong, hindi available ang aming serbisyong XYZ!
β€” Ano ang nakikita mo kapag gumanap ka kubectl describe ingress ...?

O isang bagay na katulad para sa CRD:

β€” May problema ako sa serbisyo ng pagkakakilanlan...
β€” Ano ang ginagawa ng utos? kubectl describe platformcredentialsset ...?

Ang ganitong komunikasyon ay kadalasang bumababa sa pagpasok ng iba't ibang variation ng command kubectl upang matukoy ang problema. Bilang resulta, ang parehong partido sa pag-uusap ay napipilitang patuloy na magpalipat-lipat sa pagitan ng terminal at ng web chat, kasama pa ang kanilang naobserbahang ibang sitwasyon.

Samakatuwid, gusto kong payagan ng Kubernetes web frontend ang sumusunod:

  • ang mga gumagamit ay maaaring makipagpalitan ng mga link at obserbahan ang parehong bagay;
  • ay makakatulong iwasan ang pagkakamali ng tao sa suporta: halimbawa, pag-log in sa maling kumpol sa command line, typo sa mga CLI command, atbp.;
  • payagan bumuo ng iyong sariling mga pananaw upang ipadala sa mga kasamahan, iyon ay, magdagdag ng mga hanay ng mga tag, magpakita ng maraming uri ng mga mapagkukunan sa isang pahina;
  • Sa isip, ang web tool na ito ay dapat magpapahintulot sa iyo na magtakda "malalim" na mga link sa mga partikular na seksyon ng YAML (halimbawa, pagturo ng maling parameter na nagdudulot ng mga pagkabigo).

Pagtugon at pagsusuri sa insidente

Ang pagtugon sa mga insidente sa imprastraktura ay nangangailangan ng kamalayan sa sitwasyon, ang kakayahang masuri ang epekto, at maghanap ng mga pattern sa mga cluster. Ilang mga halimbawa sa totoong buhay:

  • Ang isang kritikal na serbisyo sa produksyon ay nagkakaroon ng mga problema at kailangan mo hanapin ang lahat ng mga mapagkukunan ng Kubernetes ayon sa pangalan sa lahat ng mga clustermag-troubleshoot;
  • nagsisimulang bumagsak ang mga node kapag nag-scale at kailangan mo hanapin ang lahat ng pod na may status na "Nakabinbin" sa lahat ng clusterupang masuri ang saklaw ng problema;
  • Ang mga indibidwal na user ay nag-uulat ng isyu sa DaemonSet na naka-deploy sa lahat ng mga cluster at kailangang malaman Total ba ang problema?.

Ang aking karaniwang solusyon sa mga ganitong kaso ay katulad ng for i in $clusters; do kubectl ...; done. Malinaw, posible na bumuo ng isang tool na nagbibigay ng mga katulad na kakayahan.

Mga kasalukuyang Kubernetes web interface

Ang open source na mundo ng mga web interface sa Kubernetes ay hindi masyadong malaki*, kaya sinubukan kong mangalap ng higit pang impormasyon gamit kaba:

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)

*Ang aking paliwanag para sa limitadong bilang ng mga web interface para sa Kubernetes: ang mga serbisyo sa cloud at ang mga vendor ng Kubernetes ay karaniwang nag-aalok ng kanilang sariling mga frontend, kaya ang merkado para sa "mahusay" na libreng Kubernetes UI ay medyo maliit.

Sa pamamagitan ng isang tweet na nalaman ko K8Dash, Kubernator ΠΈ Octant. Tingnan natin ang mga ito at ang iba pang umiiral na solusyon sa Open Source, subukan nating maunawaan kung ano ang mga ito.

K8Dash

"Ang K8Dash ay ang pinakasimpleng paraan upang pamahalaan ang isang Kubernetes cluster."

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)

K8Dash Mukhang maganda at mabilis ang pakiramdam, ngunit may ilang mga kawalan para sa mga kaso ng paggamit na nakalista sa itaas:

  • Gumagana lamang sa loob ng mga hangganan ng isang kumpol.
  • Posible ang pag-uuri at pag-filter, ngunit walang mga permalink.
  • Walang suporta para sa Custom Resource Definition (CRDs).

Kubernator

β€œAng Kubernator ay isang alternatibong UI para sa Kubernetes. Hindi tulad ng mataas na antas ng Kubernetes Dashboard, nagbibigay ito ng mababang antas ng kontrol at mahusay na visibility sa lahat ng mga bagay sa cluster na may kakayahang lumikha ng mga bago, i-edit ang mga ito, at lutasin ang mga salungatan. Bilang isang ganap na client-side na application (tulad ng kubectl), hindi ito nangangailangan ng anumang backend maliban sa mismong server ng Kubernetes API, at iginagalang din ang mga panuntunan sa pag-access ng cluster.

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)

Ito ay isang medyo tumpak na paglalarawan Kubernator. Sa kasamaang palad, wala itong ilang mga tampok:

  • Nagsisilbi lamang ng isang kumpol.
  • Walang list view mode (ibig sabihin, hindi mo maipapakita ang lahat ng pod na may status na "Nakabinbin").

Dashboard ng Kubernetes

β€œAng Kubernetes Dashboard ay isang unibersal na web interface para sa mga cluster ng Kubernetes. Nagbibigay-daan ito sa mga user na pamahalaan at i-troubleshoot ang mga application na tumatakbo sa isang cluster, pati na rin pamahalaan ang cluster mismo."

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)

Sa kasamaang palad, Dashboard ng Kubernetes hindi talaga nakakatulong sa aking suporta at mga aktibidad sa pagtugon sa insidente dahil ito ay:

  • walang permanenteng link, halimbawa kapag nag-filter ako ng mga mapagkukunan o binago ang pagkakasunud-sunod ng pag-uuri;
  • walang madaling paraan upang mag-filter ayon sa katayuan - halimbawa, tingnan ang lahat ng mga pod na may katayuang "Nakabinbin";
  • isang kumpol lamang ang sinusuportahan;
  • Ang mga CRD ay hindi suportado (ang tampok na ito ay nasa ilalim ng pagbuo);
  • walang custom na column (tulad ng mga column na may label ayon sa uri kubectl -L).

Kubernetes Operational View (kube-ops-view)

"System Dashboard Observer para sa K8s Cluster Space."

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)

Π£ Kubernetes Operational View Isang ganap na kakaibang diskarte: ang tool na ito ay nagpapakita lamang ng mga cluster node at pod gamit ang WebGL, nang walang anumang mga detalye ng text na bagay. Mahusay ito para sa isang mabilis na pangkalahatang-ideya ng kalusugan ng cluster (nahuhulog ba ang mga pod?)*, ngunit hindi ito angkop para sa mga kaso ng paggamit ng suporta at pagtugon sa insidente na inilarawan sa itaas.

* Tandaan. transl.: Sa ganitong kahulugan, maaari ka ring maging interesado sa aming plugin grafana-statusmap, na pinag-usapan namin nang mas detalyado artikulong ito.

Ulat sa Mapagkukunan ng Kubernetes (kube-resource-report)

"Kolektahin ang pod at Kubernetes cluster resource request, ihambing ang mga ito sa resource consumption, at bumuo ng static na HTML."

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)

Ulat sa Mapagkukunan ng Kubernetes bumubuo ng mga static na ulat ng HTML sa paggamit ng mapagkukunan at pamamahagi ng gastos sa mga team/application sa mga cluster. Medyo kapaki-pakinabang ang ulat para sa suporta at pagtugon sa insidente dahil pinapayagan ka nitong mabilis na mahanap ang cluster kung saan naka-deploy ang application.

Tandaan. transl.: Ang isang serbisyo at tool ay maaari ding maging kapaki-pakinabang sa pagtingin ng impormasyon tungkol sa paglalaan ng mga mapagkukunan at ang kanilang mga gastos mula sa mga provider ng cloud Kubecost, na aming sinusuri kamakailang nai-publish.

Octant

"Isang napapalawak na web platform para sa mga developer na idinisenyo upang magbigay ng higit na pag-unawa sa pagiging kumplikado ng mga kumpol ng Kubernetes."

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)

Octant, na nilikha ng VMware, ay isang bagong produkto na natutunan ko tungkol sa medyo kamakailan lamang. Sa tulong nito, maginhawa upang galugarin ang cluster sa isang lokal na makina (mayroong mga visualization pa nga), ngunit tinutugunan nito ang mga isyu ng suporta at pagtugon sa insidente sa limitadong lawak lamang. Mga Kakulangan ng Octant:

  • Walang paghahanap ng cluster.
  • Gumagana lamang sa lokal na makina (hindi nagde-deploy sa isang kumpol).
  • Hindi maaaring pagbukud-bukurin/i-filter ang mga bagay (tanging tagapili ng label ang sinusuportahan).
  • Hindi mo maaaring tukuyin ang mga custom na column.
  • Hindi ka makakapaglista ng mga bagay ayon sa namespace.

Nagkaroon din ako ng mga problema sa katatagan ng Octant sa mga cluster ng Zalando: sa ilang CRD nahuhulog siya.

Ipinapakilala ang Kubernetes Web View

"kubectl para sa web".

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)

Matapos suriin ang magagamit na mga opsyon sa interface para sa Kubernetes, nagpasya akong lumikha ng bago: Kubernetes WebView. Pagkatapos ng lahat, sa katunayan, kailangan ko lang ng lahat ng kapangyarihan kubectl sa web, ibig sabihin:

  • pagkakaroon ng lahat ng (read-only) na operasyon kung saan mas gustong gamitin ng mga user ang kubectl;
  • lahat ng mga URL ay dapat na permanente at kumakatawan sa pahina sa orihinal nitong anyo upang maibahagi ng mga kasamahan ang mga ito at magamit ang mga ito sa iba pang mga tool;
  • suporta para sa lahat ng mga bagay sa Kubernetes, na magbibigay-daan sa iyong lutasin ang anumang uri ng problema;
  • ang mga listahan ng mapagkukunan ay dapat na mada-download para sa karagdagang trabaho (sa mga spreadsheet, CLI tool tulad ng grep) at imbakan (halimbawa, para sa mga postmortem);
  • suporta para sa pagpili ng mga mapagkukunan ayon sa label (katulad ng kubectl get .. -l);
  • ang kakayahang lumikha ng pinagsamang mga listahan ng iba't ibang uri ng mapagkukunan (katulad ng kubectl get all) upang makakuha ng isang karaniwang larawan sa pagpapatakbo sa mga kasamahan (halimbawa, sa panahon ng pagtugon sa insidente);
  • ang kakayahang magdagdag ng mga custom na smart deep link sa iba pang mga tool gaya ng mga dashboard, logger, application registries, atbp. upang mapadali ang pag-troubleshoot/paglutas ng mga error at pagtugon sa mga insidente;
  • Ang frontend ay dapat na kasing simple hangga't maaari (purong HTML) upang maiwasan ang mga random na problema, tulad ng frozen na JavaScript;
  • suporta para sa maramihang mga kumpol upang pasimplehin ang pakikipag-ugnayan sa panahon ng malayuang pagkonsulta (halimbawa, upang matandaan lamang ang isang URL);
  • Kung maaari, dapat gawing simple ang pagsusuri sa sitwasyon (halimbawa, na may mga link upang mag-download ng mga mapagkukunan para sa lahat ng mga cluster/namespace);
  • karagdagang mga pagkakataon para sa paglikha ng mga flexible na link at pag-highlight ng impormasyon ng teksto, halimbawa, upang maituro mo ang mga kasamahan sa isang partikular na seksyon sa paglalarawan ng mapagkukunan (isang linya sa YAML);
  • ang kakayahang mag-customize sa mga kinakailangan ng isang partikular na kliyente, halimbawa, nagbibigay-daan sa iyong lumikha ng mga espesyal na template ng display para sa mga CRD, sarili mong view ng talahanayan, at baguhin ang mga istilo ng CSS;
  • mga tool para sa karagdagang paggalugad sa command line (halimbawa, pagpapakita ng buong command kubectl, handa nang kopyahin);

Higit pa sa mga gawaing nalutas sa Kubernetes Web View (hindi layunin) nanatili:

  • abstraction ng mga bagay ng Kubernetes;
  • pamamahala ng application (halimbawa, pamamahala sa deployment, Helm chart, atbp.);
  • write operations (dapat gawin sa pamamagitan ng secure na CI/CD at/o mga tool sa GitOps);
  • magandang interface (JavaScript, mga tema, atbp.);
  • visualization (tingnan kube-ops-view);
  • pagsusuri sa gastos (tingnan kube-resource-report).

Paano nakakatulong ang Kubernetes Web View sa suporta at pagtugon sa insidente?

Suporta

  • Ang lahat ng mga link ay permanente, na nagpapadali sa pakikipagpalitan ng impormasyon sa mga kasamahan.
  • Maaari kang lumikha iyong mga ideya, halimbawa, ipakita ang lahat ng Deployment at Pod na may partikular na label sa dalawang partikular na cluster (maaaring tukuyin ang ilang pangalan ng cluster at uri ng mapagkukunan sa isang link, na pinaghihiwalay ng mga kuwit).
  • Maaari kang sumangguni sa mga partikular na linya sa isang YAML file bagay, na nagpapahiwatig ng mga potensyal na problema sa detalye ng bagay.

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)
Maghanap ayon sa mga cluster sa Kubernetes Web View

Tugon sa Insidente

  • Pandaigdigang paghahanap (pandaigdigang paghahanap) nagbibigay-daan sa iyong maghanap ng mga bagay sa lahat ng mga kumpol.
  • Mga View ng Listahan maaaring ipakita ang lahat ng bagay na may partikular na estado/column sa lahat ng cluster (halimbawa, kailangan nating hanapin ang lahat ng pod na may status na "Nakabinbin").
  • Maaaring ma-download ang mga listahan ng mga bagay sa tab-separated value (TSV) na format para sa pagsusuri sa ibang pagkakataon.
  • Nako-customize na mga panlabas na link Binibigyang-daan kang lumipat sa mga nauugnay na dashboard at iba pang mga tool.

Anunsyo ng Kubernetes Web View (at isang maikling pangkalahatang-ideya ng iba pang mga web UI para sa Kubernetes)
Kubernetes Web View: listahan ng mga pod na may status na "Nakabinbin" sa lahat ng cluster

Kung gusto mong subukan ang Kubernetes Web View, inirerekumenda kong tingnan ito dokumentasyon o tingnan mo live na demo.

Siyempre, ang interface ay maaaring maging mas mahusay, ngunit sa ngayon ang Kubernetes Web View ay isang tool para sa "mga advanced na user" na hindi umiiwas sa manu-manong pagmamanipula ng mga path ng URL kung kinakailangan. Kung mayroon kang anumang mga komento/dagdag/suhestyon, mangyaring makipag-ugnayan kasama ko sa Twitter!

Ang artikulong ito ay isang maikling kasaysayan ng background na humantong sa paglikha ng Kubernetes Web View. Marami pang susunod! (Tandaan. transl.: Dapat silang asahan sa blog ng may-akda.)

PSmula sa tagasalin

Basahin din sa aming blog:

Pinagmulan: www.habr.com

Magdagdag ng komento