Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Para sa ganap na trabaho sa system, ang kaalaman sa mga command line utility ay mahalaga: sa kaso ng Kubernetes, ito ay kubectl. Sa kabilang banda, maaaring gumanap ang mahusay na disenyo, maalalahanin na mga graphical na interfaceоkaramihan sa mga karaniwang gawain at magbukas ng mga karagdagang pagkakataon para sa pagpapatakbo ng mga system.

Noong nakaraang taon naglathala kami ng pagsasalin maliit na pangkalahatang-ideya ng web UI para sa Kubernetes, na nag-time na kasabay ng anunsyo ng web interface Kubernetes WebView. Ang may-akda ng artikulong iyon at ang utility mismo, si Henning Jacobs mula sa Zalando, ay nakaposisyon lamang sa bagong produkto bilang "kubectl para sa web". Nais niyang lumikha ng tool na may mga kakayahang madaling gamitin para sa pakikipag-ugnayan sa isang format ng teknikal na suporta (halimbawa, mabilis na pagpapakita ng problema sa isang link sa web) at para sa pagtugon sa mga insidente, paghahanap ng mga problema sa maraming kumpol nang sabay-sabay. Ang kanyang mga supling ay umuunlad sa kasalukuyang panahon (pangunahin sa pamamagitan ng pagsisikap ng may-akda mismo).

Habang nagseserbisyo kami sa maraming Kubernetes cluster na may iba't ibang laki, interesado rin kaming makapagbigay ng visual tool sa aming mga customer. Kapag pumipili ng angkop na interface, ang mga sumusunod na tampok ay susi para sa amin:

  • suporta para sa pagkakaiba ng mga karapatan ng gumagamit (RBAC);
  • visualization ng namespace state at standard Kubernetes primitives (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • pagkuha ng access sa command line sa loob ng pod;
  • pagtingin sa mga tala ng mga pod;
  • tingnan ang katayuan ng mga pod (describe status);
  • pag-alis ng mga pod.

Ang iba pang mga function, tulad ng pagtingin sa mga nagamit na mapagkukunan (sa konteksto ng mga pod / controllers / namespaces), paggawa / pag-edit ng mga primitive ng K8, ay hindi nauugnay sa aming daloy ng trabaho.

Sisimulan namin ang pagsusuri gamit ang klasikong Kubernetes Dashboard, na aming pamantayan. Dahil ang mundo ay hindi tumitigil (na nangangahulugan na ang Kubernetes ay may parami nang paraming bagong GUI), pag-uusapan din natin ang mga kasalukuyang alternatibo nito, na nagbubuod ng lahat sa isang comparative table sa dulo ng artikulo.

NB: Sa pagsusuri, hindi namin uulitin ang mga solusyong iyon na napag-isipan na huling artikulo, gayunpaman, para sa kapakanan ng pagiging kumpleto, ang mga nauugnay na opsyon mula rito (K8Dash, Octant, Kubernetes Web View) ay kasama sa huling talahanayan.

1. Kubernetes Dashboard

  • Pahina ng dokumentasyon;
  • imbakan (8000+ GitHub star);
  • Lisensya: Apache 2.0;
  • Sa madaling salita: “Pangkalahatang web interface para sa mga kumpol ng Kubernetes. Nagbibigay-daan ito sa mga user na pamahalaan at i-troubleshoot ang mga application na tumatakbo sa cluster, pati na rin pamahalaan ang cluster mismo."

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Ito ay isang panel ng pangkalahatang layunin na sakop ng mga may-akda ng Kubernetes sa opisyal na dokumentasyon (ngunit hindi ma-deploy default). Idinisenyo ito para sa mga pangangailangan ng pang-araw-araw na operasyon at pag-debug ng mga application sa isang cluster. Sa bahay, ginagamit namin ito bilang isang ganap na magaan na visual tool na nagbibigay-daan sa amin na magbigay sa mga developer ng kinakailangan at sapat na access sa cluster. Ang mga kakayahan nito ay sumasakop sa lahat ng kanilang mga pangangailangan na lumitaw sa proseso ng paggamit ng kumpol (sa artikulong ito ipinakita namin ang ilang mga tampok ng panel). Tulad ng maaari mong hulaan, nangangahulugan ito na natutugunan nito ang lahat ng aming mga kinakailangan na nakalista sa itaas.

Kabilang sa mga pangunahing tampok ng Kubernetes Dashboard:

  • Navigation: tingnan ang mga pangunahing bagay ng K8s sa konteksto ng mga namespace.
  • Kung mayroon kang mga karapatan ng administrator, ipinapakita ng panel ang mga node, namespace, at Persistent Volume. Para sa mga node, available ang mga istatistika sa paggamit ng memorya, processor, paglalaan ng mapagkukunan, sukatan, katayuan, mga kaganapan, atbp.
  • Tingnan ang mga application na naka-deploy sa isang namespace ayon sa kanilang uri (Deployment, StatefulSet, atbp.), mga ugnayan sa pagitan ng mga ito (ReplicaSet, Horizontal Pod Autoscaler), pangkalahatan at personalized na mga istatistika at impormasyon.
  • Tingnan ang mga serbisyo at Ingresses, pati na rin ang kanilang mga kaugnayan sa mga pod at endpoint.
  • Tingnan ang mga bagay at storage ng file: Persistent Volume at Persistent Volume Claim.
  • Tingnan at i-edit ang ConfigMap at Secret.
  • Tingnan ang mga log.
  • Access sa command line sa mga container.

Ang isang makabuluhang disbentaha (gayunpaman, hindi para sa amin) ay walang suporta para sa multi-cluster na gawain. Ang proyekto ay aktibong binuo ng komunidad at nagpapanatili ng mga nauugnay na tampok sa paglabas ng mga bagong bersyon at mga detalye ng Kubernetes API: ang pinakabagong bersyon ng panel ay v2.0.1 Mayo 22, 2020 - Nasubok para sa pagiging tugma sa Kubernetes 1.18.

2. lente

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Ang proyekto ay nakaposisyon bilang isang kumpletong integrated development environment (IDE) para sa Kubernetes. Bukod dito, ito ay na-optimize upang gumana sa maraming mga kumpol at isang malaking bilang ng mga pod na tumatakbo sa kanila (nasubok sa 25 mga pod).

Mga pangunahing tampok/kakayahan ng Lens:

  • Standalone na application na hindi nangangailangan ng pag-install ng anumang bagay sa loob ng cluster (mas tiyak, kakailanganin ng Prometheus na makuha ang lahat ng sukatan, ngunit magagamit din ang isang umiiral na pag-install para dito). Ang "pangunahing" pag-install ay ginawa sa isang personal na computer na tumatakbo sa Linux, macOS o Windows.
  • Multi-cluster management (daan-daang cluster ang sinusuportahan).
  • Visualization ng estado ng cluster sa real time.
  • Mga graph at trend ng paggamit ng mapagkukunan na may kasaysayan batay sa built-in na Prometheus.
  • Access sa command line ng mga container at sa mga cluster node.
  • Buong suporta para sa Kubernetes RBAC.

Kasalukuyang release - 3.5.0 na may petsang Hunyo 16, 2020 Orihinal na nilikha ng Kontena, ngayon ang lahat ng intelektwal na ari-arian ay inilipat sa isang espesyal na organisasyon Lakend Labs, na tinatawag na "isang unyon ng cloud native geeks at technologists", na responsable para sa "preserbasyon at pagkakaroon ng Open Source software at mga produkto ng Kontena."

Ang Lens ay ang pangalawang pinakasikat na proyekto sa GitHub mula sa kategorya ng GUI para sa Kubernetes, "nawawala" lamang ang Kubernets Dashboard mismo. Ang lahat ng iba pang Open Source na solusyon na hindi mula sa kategoryang CLI* ay mas mababa sa katanyagan.

* Tingnan ang tungkol sa mga K9 sa bonus na bahagi ng pagsusuri.

3. Kubernetic

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Ito ay isang proprietary application na naka-install sa isang personal na computer (Linux, macOS, Windows ay suportado). Ang mga may-akda nito ay nangangako ng isang kumpletong kapalit ng command line utility, at kasama nito - hindi na kailangang tandaan ang mga utos at kahit isang sampung beses na pagtaas sa bilis.

Ang isa sa mga kagiliw-giliw na tampok ng tool ay ang built-in na suporta para sa mga chart ng Helm, at isa sa mga kakulangan ay ang kakulangan ng mga sukatan ng pagganap ng application.

Mga pangunahing tampok ng Kubernetic:

  • Maginhawang pagpapakita ng status ng kumpol. Isang screen upang tingnan ang lahat ng nauugnay na mga object ng cluster at ang kanilang mga dependency; pula/berde na katayuan ng pagiging handa para sa lahat ng mga bagay; cluster status view mode na may real-time na mga update sa status.
  • Mga pindutan ng mabilisang pagkilos para sa pagtanggal at pag-scale ng application.
  • Suporta para sa multi-cluster na operasyon.
  • Simpleng trabaho sa mga namespace.
  • Suporta para sa mga Helm chart at Helm repository (kabilang ang mga pribado). Pag-install at pamamahala ng mga chart sa web interface.

Ang kasalukuyang halaga ng produkto ay isang beses na pagbabayad na 30 euro para sa paggamit nito ng isang tao para sa anumang bilang ng mga namespace at cluster.

4. Kubevious

  • Сайт;
  • Pagtatanghal;
  • imbakan (~500 GitHub star);
  • Lisensya: Apache 2.0
  • Sa madaling sabi: "Ginagawa ng Kubevious na ligtas at madaling maunawaan ang mga Kubernetes cluster, configuration ng application at pagtingin sa status."

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Ang ideya ng proyekto ay lumikha ng isang tool na idinisenyo upang pag-aralan at i-debug ang mga pagsasaayos ng application na naka-deploy sa isang kumpol. Ang mga may-akda ay pangunahing nakatuon sa pagpapatupad ng mga tampok na ito, na nag-iiwan ng mas pangkalahatang mga bagay para sa ibang pagkakataon.

Mga pangunahing tampok at function ng Kubevious:

  • Cluster visualization sa isang application-centric na paraan: ang mga kaugnay na bagay sa interface ay pinagsama-sama, na nakahanay sa isang hierarchy.
  • Visual na pagpapakita ng mga dependency sa mga configuration at cascading na kahihinatnan ng kanilang mga pagbabago.
  • Pagpapakita ng mga error sa configuration ng cluster: maling paggamit ng mga label, mga hindi nakuhang port, atbp. (Sa pamamagitan ng paraan, kung interesado ka sa tampok na ito, bigyang pansin ang Polaristungkol sa kung saan kami nagsulat na.)
  • Bilang karagdagan sa nakaraang punto, ang pagtuklas ng mga potensyal na mapanganib na lalagyan ay magagamit, i.e. pagkakaroon ng labis na mga pribilehiyo (mga katangian hostPID, hostNetwork, hostIPC, bundok docker.sock atbp).
  • Advanced na sistema ng paghahanap para sa kumpol (hindi lamang sa pamamagitan ng mga pangalan ng mga bagay, kundi pati na rin sa kanilang mga katangian).
  • Mga tool para sa pagpaplano ng kapasidad at pag-optimize ng mapagkukunan.
  • Built-in na "time machine" (ang kakayahang makita ang mga nakaraang pagbabago sa pagsasaayos ng mga bagay).
  • Pamamahala ng RBAC na may pivot na magkakaugnay na talahanayan ng Mga Tungkulin, RoleBindings, ServiceAccounts.
  • Gumagana sa isang kumpol lamang.

Ang proyekto ay may napakaikling kasaysayan (ang unang paglabas ay naganap noong Pebrero 11, 2020) at tila nagkaroon ng panahon ng pag-stabilize o pagbagal sa pag-unlad. Kung ang mga nakaraang bersyon ay madalas na inilabas, kung gayon ang pinakabagong release (v0.5 Abril 15, 2020) ay nahuli sa paunang bilis ng pag-unlad. Marahil ito ay dahil sa maliit na bilang ng mga nag-aambag: mayroon lamang 4 sa kanila sa kasaysayan ng imbakan, at ang lahat ng aktwal na gawain ay ginagawa ng isang tao.

5. Kubewise

  • Pahina ng Proyekto;
  • Lisensya: pagmamay-ari (magiging Open Source);
  • Sa madaling salita: "Isang simpleng multi-platform client para sa Kubernetes."

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Isang bagong produkto mula sa VMware, na orihinal na ginawa bilang bahagi ng isang panloob na hackathon (noong Hunyo 2019). Naka-install sa isang personal na computer, gumagana sa batayan ng elektron (Linux, macOS at Windows suportado) at nangangailangan ng kubectl v1.14.0 o mas bago.

Mga pangunahing tampok ng Kubewise:

  • Interface na pakikipag-ugnayan sa mga pinakakaraniwang ginagamit na entity ng Kubernetes: mga node, namespace, atbp.
  • Suporta para sa maramihang mga kubeconfig file para sa iba't ibang mga kumpol.
  • Terminal na may kakayahang magtakda ng variable ng kapaligiran KUBECONFIG.
  • Bumuo ng mga custom na kubeconfig file para sa ibinigay na namespace.
  • Mga advanced na tampok sa seguridad (RBAC, mga password, mga account ng serbisyo).

Sa ngayon, ang proyekto ay mayroon lamang isang release - bersyon 1.1.0 napetsahan noong Nobyembre 26, 2019. Bukod dito, binalak ng mga may-akda na agad itong ilabas bilang Open Source, ngunit dahil sa mga panloob na problema (hindi nauugnay sa mga teknikal na isyu) hindi nila ito magagawa. Simula Mayo 2020, ang mga may-akda ay nagtatrabaho sa susunod na release at dapat na simulan ang proseso ng pagbukas ng code sa parehong oras.

6. OpenShift Console

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Sa kabila ng katotohanan na ang web interface na ito ay bahagi ng pamamahagi ng OpenShift (naka-install ito doon gamit ang espesyal na operator), mga may-akda napag-asahan ang kakayahang i-install / gamitin ito sa normal (vanilla) na mga pag-install ng Kubernetes.

Matagal nang ginagawa ang OpenShift Console, kaya marami itong feature. Babanggitin namin ang mga pangunahing:

  • Nakabahaging diskarte sa interface - dalawang "pananaw" ng mga posibilidad na available sa Console: para sa mga administrator at para sa mga developer. Mode pananaw ng developer pinapangkat ang mga bagay sa isang mas nauunawaang anyo para sa mga developer (sa pamamagitan ng mga application) at nakatuon ang interface sa paglutas ng mga karaniwang gawain gaya ng pag-deploy ng mga application, pagsubaybay sa status ng build / deployment, at kahit na pag-edit ng code sa pamamagitan ng Eclipse Che.
  • Pamamahala ng mga workload, network, storage, mga karapatan sa pag-access.
  • Lohikal na paghihiwalay para sa mga workload sa mga proyekto at aplikasyon. Sa isa sa mga pinakabagong release - v4.3 - lumitaw espesyal Dashboard ng proyekto, na nagpapakita ng karaniwang data (ang bilang at mga status ng mga deployment, pod, atbp.; pagkonsumo ng mapagkukunan at iba pang mga sukatan) sa isang bahagi ng proyekto.
  • Na-update sa real time na pagpapakita ng estado ng cluster, mga pagbabago (mga kaganapan) na naganap dito; pagtingin sa mga log.
  • Tingnan ang data ng pagsubaybay batay sa Prometheus, Alertmanager at Grafana.
  • Pamamahala ng mga operator na kinakatawan sa operatorhub.
  • Pamahalaan ang mga build na tumatakbo sa Docker (mula sa isang tinukoy na repository na may Dockerfile), S2I o di-makatwirang panlabas na mga kagamitan.

NB: Hindi kami nagdagdag ng iba sa paghahambing Mga pamamahagi ng Kubernetes (halimbawa, ang hindi gaanong kilala Kubesphere): sa kabila ng katotohanan na ang GUI ay maaaring maging napaka-advance sa kanila, ito ay kadalasang dumarating bilang bahagi ng pinagsama-samang stack ng isang malaking sistema. Gayunpaman, kung sa tingin mo ay walang sapat na mga solusyon na ganap na gumagana sa pag-install ng vanilla K8s, ipaalam sa amin sa mga komento.

Bonus

1. Portainer sa Kubernetes sa Beta

  • Сайт;
  • imbakan (~100 GitHub star);
  • Lisensya: Zlib(?) (pareho para sa proyekto ng magulang).

Isang proyekto mula sa Portainer team, na bumuo ng sikat na interface ng parehong pangalan para sa pagtatrabaho sa Docker. Dahil ang proyekto ay nasa maagang yugto ng pag-unlad (ang una at tanging beta na bersyon lumabas Abril 16, 2020), hindi namin nasuri ang mga feature nito. Gayunpaman, maaaring interesado ito sa marami: kung ito ay tungkol sa iyo, sundin ang pag-unlad.

2. IcePanel

  • Сайт;
  • Lisensya: pagmamay-ari;
  • Sa madaling salita: "Visual Kubernetes Editor".

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Nilalayon ng batang desktop application na ito na mailarawan at pamahalaan ang mga mapagkukunan ng Kubernetes sa real time gamit ang isang simpleng drag at drop na interface. Ang mga kasalukuyang sinusuportahang object ay Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap at Secret. Sa lalong madaling panahon nangako silang magdagdag ng suporta para sa Helm. Ang mga pangunahing kawalan ay ang pagiging malapit ng code (inaasahan ito pagbubukas ng "sa ilang paraan") at ang kakulangan ng suporta sa Linux (sa ngayon ay magagamit lamang ang mga bersyon para sa Windows at macOS, bagama't ito ay malamang na sandali lamang).

3.k9s

  • Сайт;
  • Pagpapakita;
  • imbakan (~7700 GitHub star);
  • Lisensya: Apache 2.0;
  • Sa madaling salita: "Isang console interface para sa Kubernetes na nagbibigay-daan sa iyong pamahalaan ang iyong cluster sa istilo."

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Ang utility ay nasa bonus na bahagi lamang ng pagsusuri sa kadahilanang nag-aalok ito ng console GUI. Gayunpaman, literal na piniga ng mga may-akda ang maximum sa terminal, na nag-aalok hindi lamang ng user-friendly na interface, kundi pati na rin ng 6 na paunang-natukoy na mga tema, at isang advanced na sistema ng mga keyboard shortcut at command alias. Ang kanilang masusing diskarte ay hindi limitado sa hitsura: ang mga tampok ng k9s ay kawili-wiling kahanga-hanga: pamamahala ng mapagkukunan, pagpapakita ng estado ng kumpol, pagpapakita ng mga mapagkukunan sa isang hierarchical na representasyon na may mga dependency, pagtingin sa mga log, suporta sa RBAC, pagpapalawak ng mga kakayahan sa pamamagitan ng mga plugin ... Lahat ng ito ay umapela sa malawak na komunidad ng K8s: ang bilang na Ang GitHub star ng proyekto ay halos kasinghusay ng opisyal na Kubernetes Dashboard!

4. Mga control panel ng application

At sa dulo ng pagsusuri - isang hiwalay na mini-category. Kasama dito ang dalawang web interface na idinisenyo hindi para sa komprehensibong pamamahala ng mga cluster ng Kubernetes, ngunit para sa pamamahala kung ano ang naka-deploy sa kanila.

Tulad ng alam mo, ang isa sa mga pinaka-mature at pinakalat na tool para sa pag-deploy ng mga kumplikadong application sa Kubernetes ay Helm. Sa panahon ng pag-iral nito, maraming mga pakete (mga Helm chart) ang naipon para sa madaling pag-deploy maraming sikat na application. Samakatuwid, ang hitsura ng naaangkop na mga visual na tool na nagbibigay-daan sa iyo upang pamahalaan ang ikot ng buhay ng mga chart ay medyo lohikal.

4.1. Monocular

  • imbakan (1300+ GitHub star);
  • Lisensya: Apache 2.0;
  • Sa madaling salita: "Isang web application para sa paghahanap at pagtuklas ng mga Helm chart sa maraming repositoryo. Nagsisilbing batayan para sa proyekto ng Helm hub."

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Ang development na ito mula sa mga may-akda ng Helm ay naka-install sa Kubernetes at gumagana sa loob ng parehong cluster, na ginagawa ang gawain. Gayunpaman, sa kasalukuyan, ang proyekto ay halos hindi binuo. Ang pangunahing layunin nito ay suportahan ang pagkakaroon ng Helm Hub. Para sa iba pang pangangailangan, inirerekomenda ng mga may-akda ang Kubeapps (tingnan sa ibaba) o Red Hat Automation Broker (bahagi ng OpenShift, ngunit hindi na rin binuo).

4.2. Kubeapps

  • Сайт;
  • Pagtatanghal;
  • imbakan (~2100 GitHub star);
  • Lisensya: Apache 2.0
  • Sa madaling salita: "Ang iyong application dashboard para sa Kubernetes."

Pangkalahatang-ideya ng mga GUI para sa Kubernetes

Isang produkto mula sa Bitnami, na naka-install din sa isang Kubernetes cluster, ngunit naiiba sa Monocular sa unang pagtutok nito sa pagtatrabaho sa mga pribadong repositoryo.

Mga pangunahing function at feature ng Kubeapps:

  • Tingnan at i-install ang mga Helm chart mula sa mga repository.
  • Suriin, i-update, at alisin ang mga Helm-based na application na naka-install sa cluster.
  • Suporta para sa mga custom at pribadong chart repository (sumusuporta sa ChartMuseum at JFrog Artifactory).
  • Pagtingin at pagtatrabaho sa mga panlabas na serbisyo - mula sa Katalogo ng Serbisyo at Mga Broker ng Serbisyo.
  • Pag-publish ng mga naka-install na application gamit ang mekanismo ng Service Catalog Bindings.
  • Suporta para sa pagpapatunay at paghihiwalay ng mga karapatan gamit ang RBAC.

Talahanayan ng buod

Nasa ibaba ang isang talahanayan ng buod kung saan sinubukan naming ibuod at pagsama-samahin ang mga pangunahing tampok ng mga umiiral nang visual na interface upang mapadali ang paghahambing:

Pangkalahatang-ideya ng mga GUI para sa Kubernetes
(Online na bersyon ng talahanayan available sa Google Docs.)

Konklusyon

Ang mga GUI para sa Kubernetes ay medyo partikular at batang angkop na lugar. Gayunpaman, ito ay umuunlad nang napakaaktibo: posible na makahanap ng parehong mga medyo mature na solusyon, at mga napakabata, na mayroon pa ring puwang upang lumago. Nagbibigay ang mga ito ng iba't ibang mga application, nag-aalok ng mga tampok at hitsura na angkop sa halos lahat ng panlasa. Umaasa kami na ang pagsusuring ito ay makakatulong sa iyo na piliin ang tool na pinakaangkop sa iyong kasalukuyang mga pangangailangan.

PS

Salamat kvaps para sa data sa OpenShift Console para sa talahanayan ng paghahambing!

Basahin din sa aming blog:

Pinagmulan: www.habr.com

Magdagdag ng komento