Visión xeral das GUI para Kubernetes

Visión xeral das GUI para Kubernetes

Para un traballo completo co sistema, o coñecemento das utilidades da liña de comandos é importante: no caso de Kubernetes, trátase de kubectl. Por outra banda, as interfaces gráficas ben deseñadas e pensadas poden funcionarоa maioría das tarefas habituais e abren oportunidades adicionais para o funcionamento dos sistemas.

O ano pasado publicamos unha tradución pequena visión xeral da IU web para Kubernetes, programado para coincidir co anuncio da interface web Kubernetes WebView. O autor dese artigo e a propia utilidade, Henning Jacobs de Zalando, acaban de posicionar o novo produto como "kubectl para a web". Quería crear unha ferramenta con capacidades amigables para a interacción nun formato de soporte técnico (por exemplo, mostrar rapidamente o problema cunha ligazón web) e para responder a incidencias, buscando problemas en moitos clústeres ao mesmo tempo. A súa descendencia está a desenvolverse na actualidade (principalmente polos esforzos do propio autor).

Como atendemos moitos clústeres de Kubernetes de varios tamaños, tamén estamos interesados ​​en poder ofrecer unha ferramenta visual aos nosos clientes. Ao elixir unha interface adecuada, as seguintes características foron clave para nós:

  • soporte para a diferenciación de dereitos de usuario (RBAC);
  • visualización do estado do espazo de nomes e das primitivas estándar de Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • obter acceso á liña de comandos dentro do pod;
  • ver rexistros de vainas;
  • ver o estado dos pods (describe status);
  • eliminando vainas.

Outras funcións, como ver os recursos consumidos (no contexto de pods/controladores/espazos de nomes), crear/editar primitivas K8s, non son relevantes no noso fluxo de traballo.

Comezaremos a revisión co clásico Kubernetes Dashboard, que é o noso estándar. Como o mundo non se queda parado (o que significa que Kubernetes ten cada vez máis GUIs novas), tamén falaremos das súas alternativas actuais, resumindo todo nunha táboa comparativa ao final do artigo.

NB: Na revisión, non repetiremos con aquelas solucións que xa foron consideradas en último artigo, porén, para completar, as opcións relevantes desta (K8Dash, Octant, Kubernetes Web View) inclúense na táboa final.

1. Panel de control de Kubernetes

  • Páxina de documentación;
  • repositorio (máis de 8000 estrelas de GitHub);
  • Licenza: Apache 2.0;
  • En resumo: “Interface web universal para clústeres de Kubernetes. Permite aos usuarios xestionar e solucionar problemas de aplicacións que se executan no clúster, así como xestionar o propio clúster".

Visión xeral das GUI para Kubernetes

Este é un panel de propósito xeral cuberto polos autores de Kubernetes na documentación oficial (pero non despregables por defecto). Está deseñado para as necesidades de funcionamento cotián e depuración de aplicacións nun clúster. Na casa, usámolo como unha ferramenta visual lixeira e completa que nos permite proporcionar aos desenvolvedores o acceso necesario e suficiente ao clúster. As súas capacidades cobren todas as súas necesidades que xorden no proceso de utilización do clúster (en Este artigo demostramos algunhas características do panel). Como podes adiviñar, isto significa que cumpre todos os nosos requisitos enumerados anteriormente.

Entre as principais características do panel de control de Kubernetes:

  • Navegación: ver os principais obxectos de K8s no contexto dos espazos de nomes.
  • Se tes dereitos de administrador, o panel mostra nodos, espazos de nomes e volumes persistentes. Para os nós, as estatísticas están dispoñibles sobre o uso da memoria, procesador, asignación de recursos, métricas, estado, eventos, etc.
  • Consulta as aplicacións despregadas nun espazo de nomes segundo o seu tipo (Deployment, StatefulSet, etc.), as relacións entre elas (ReplicaSet, Horizontal Pod Autoscaler), estatísticas e información xerais e personalizadas.
  • Consulta os servizos e as entradas, así como as súas relacións con pods e puntos finais.
  • Ver obxectos de ficheiros e almacenamentos: volume persistente e reclamación de volume persistente.
  • Ver e editar ConfigMap e Secret.
  • Ver rexistros.
  • Acceso á liña de comandos en contedores.

Un inconveniente importante (porén, non para nós) é que non hai soporte para o traballo en varios clústeres. O proxecto é desenvolvido activamente pola comunidade e mantén funcións relevantes co lanzamento de novas versións e especificacións da API de Kubernetes: a última versión do panel é v2.0.1 22 de maio de 2020 - Probouse a compatibilidade con Kubernetes 1.18.

2. Lente

Visión xeral das GUI para Kubernetes

O proxecto sitúase como un entorno de desenvolvemento integrado (IDE) completo para Kubernetes. Ademais, está optimizado para funcionar con moitos clústeres e un gran número de pods que se executan neles (probado en 25 pods).

Principais características/capacidades de Lens:

  • Aplicación autónoma que non require instalación de nada dentro do clúster (máis precisamente, Prometheus terá que obter todas as métricas, pero tamén se pode usar unha instalación existente para iso). A instalación "principal" realízase nun ordenador persoal con Linux, macOS ou Windows.
  • Xestión de múltiples clústeres (centos de clústeres compatibles).
  • Visualización do estado do clúster en tempo real.
  • Gráficos e tendencias de uso de recursos con historia baseada en Prometheus incorporado.
  • Acceso á liña de comandos dos contedores e nos nodos do clúster.
  • Soporte total para Kubernetes RBAC.

Versión actual - 3.5.0 con data do 16 de xuño de 2020 Creada orixinalmente por Kontena, hoxe toda a propiedade intelectual foi transferida a unha organización especial Lakeland Labs, chamado "unha unión de geeks e tecnólogos nativos da nube", que se encarga da "preservación e dispoñibilidade do software e produtos de código aberto de Kontena".

Lens é o segundo proxecto máis popular en GitHub da categoría GUI para Kubernetes, "perdendo" só o propio Dashboard de Kubernets. Todas as outras solucións de código aberto que non pertencen á categoría CLI* son significativamente inferiores en popularidade.

* Consulta sobre os K9 na parte extra da revisión.

3. Kubernetic

Visión xeral das GUI para Kubernetes

Esta é unha aplicación propietaria que se instala nun ordenador persoal (soporta Linux, macOS, Windows). Os seus autores prometen unha substitución completa da utilidade da liña de comandos e, con ela, non hai que lembrar comandos e mesmo un aumento de dez veces na velocidade.

Unha das características interesantes da ferramenta é o soporte integrado para os gráficos Helm, e un dos inconvenientes é a falta de métricas de rendemento da aplicación.

Características principais de Kubernetic:

  • Visualización cómoda do estado do clúster. Unha pantalla para ver todos os obxectos de cluster relacionados e as súas dependencias; estado de preparación vermello/verde para todos os obxectos; Modo de visualización do estado do clúster con actualizacións de estado en tempo real.
  • Botóns de acción rápida para eliminar e escalar a aplicación.
  • Soporte para operación multi-clúster.
  • Traballo sinxelo con espazos de nomes.
  • Soporte para gráficos Helm e repositorios Helm (incluídos os privados). Instalación e xestión de gráficos na interface web.

O custo actual do produto é un pago único de 30 euros polo seu uso por unha persoa para calquera número de espazos de nomes e clusters.

4. Kubevious

  • sitio;
  • Presentación;
  • repositorio (~500 estrelas de GitHub);
  • Licenza: Apache 2.0
  • En resumo: "Kubevious fai que os clústeres de Kubernetes, a configuración de aplicacións e a visualización do estado sexan seguros e fáciles de entender".

Visión xeral das GUI para Kubernetes

A idea do proxecto é crear unha ferramenta deseñada para analizar e depurar configuracións de aplicacións despregadas nun clúster. Os autores centráronse principalmente na implementación destas características, deixando cousas máis xerais para máis adiante.

Características e funcións principais de Kubevious:

  • Visualización de clústeres de forma centrada na aplicación: os obxectos relacionados na interface agrúpanse, aliñados nunha xerarquía.
  • Visualización visual das dependencias nas configuracións e das consecuencias en cascada dos seus cambios.
  • Visualización de erros de configuración do clúster: uso indebido de etiquetas, portos perdidos, etc. (Por certo, se estás interesado nesta función, presta atención a Polarissobre o que nós xa escribiu.)
  • Ademais do punto anterior, está dispoñible a detección de envases potencialmente perigosos, é dicir. ter demasiados privilexios (atributos hostPID, hostNetwork, hostIPC, montar docker.sock etc).
  • Sistema de busca avanzada para o clúster (non só polos nomes dos obxectos, senón tamén polas súas propiedades).
  • Ferramentas para a planificación da capacidade e a optimización de recursos.
  • "Máquina do tempo" incorporada (a capacidade de ver os cambios anteriores na configuración dos obxectos).
  • Xestión de RBAC cunha táboa dinámica interrelacionada de Roles, RoleBindings, ServiceAccounts.
  • Funciona cun só cluster.

O proxecto ten unha historia moi curta (o primeiro lanzamento tivo lugar o 11 de febreiro de 2020) e parece que houbo un período de estabilización ou desaceleración do desenvolvemento. Se as versións anteriores foron publicadas con frecuencia, entón a última versión (v0.5 15 de abril de 2020) quedou atrás do ritmo inicial de desenvolvemento. Probablemente isto débese ao pequeno número de colaboradores: só hai 4 deles na historia do repositorio e todo o traballo real é realizado por unha persoa.

5. Kubewise

  • Páxina do proxecto;
  • Licenza: propietaria (farase de código aberto);
  • En resumo: "Un simple cliente multiplataforma para Kubernetes".

Visión xeral das GUI para Kubernetes

Un novo produto de VMware, creado orixinalmente como parte dun hackathon interno (en xuño de 2019). Instalado nun ordenador persoal, funciona en base a electrón (Compatible con Linux, macOS e Windows) e require kubectl v1.14.0 ou posterior.

Características principais de Kubewise:

  • Interacción da interface coas entidades de Kubernetes máis utilizadas: nodos, espazos de nomes, etc.
  • Soporte para varios ficheiros kubeconfig para diferentes clústeres.
  • Terminal con capacidade para establecer unha variable de ambiente KUBECONFIG.
  • Xera ficheiros kubeconfig personalizados para o espazo de nomes indicado.
  • Funcións de seguridade avanzadas (RBAC, contrasinais, contas de servizo).

Ata agora, o proxecto ten só unha versión: versión 1.1.0 do 26 de novembro de 2019. Ademais, os autores planeaban publicalo inmediatamente como Open Source, pero debido a problemas internos (non relacionados con problemas técnicos) non puideron facelo. A partir de maio de 2020, os autores están a traballar na próxima versión e deberían iniciar o proceso de apertura do código ao mesmo tempo.

6. Consola OpenShift

Visión xeral das GUI para Kubernetes

A pesar de que esta interface web forma parte da distribución OpenShift (instálase alí usando operador especial), autores previstas a capacidade de instalalo/utilizalo en instalacións normais (vainilla) de Kubernetes.

OpenShift Console estivo en desenvolvemento durante moito tempo, polo que incorporou moitas funcións. Mencionaremos os principais:

  • Enfoque de interface compartida: dúas "perspectivas" das posibilidades dispoñibles na Consola: para administradores e para desenvolvedores. Modo perspectiva do desenvolvedor agrupa os obxectos nunha forma que sexa máis comprensible para os desenvolvedores (por aplicacións) e enfoca a interface na resolución de tarefas típicas como a implantación de aplicacións, o seguimento do estado de compilación/implementación e mesmo a edición de código a través de Eclipse Che.
  • Xestión de cargas de traballo, rede, almacenamento, dereitos de acceso.
  • Separación lóxica de cargas de traballo en proxectos e aplicacións. Nunha das últimas versións - v4.3 - apareceu especial panel de control do proxecto, que mostra os datos habituais (o número e estados de implantacións, pods, etc.; consumo de recursos e outras métricas) nun segmento de proxecto.
  • Visualización actualizada en tempo real do estado do clúster, dos cambios (eventos) que se produciron nel; rexistros de visualización.
  • Consulta os datos de seguimento baseados en Prometheus, Alertmanager e Grafana.
  • Xestión dos operadores representados en operadorhub.
  • Xestionar compilacións que se executan a través de Docker (desde un repositorio especificado cun ficheiro Docker), S2I ou utilidades externas arbitrarias.

NB: Non engadimos outros á comparación Distribucións de Kubernetes (por exemplo, o moito menos coñecido Kubesphere): a pesar de que a GUI pode estar moi avanzada neles, adoita vir como parte da pila integrada dun sistema grande. Non obstante, se pensas que non hai solucións suficientes que funcionen plenamente na instalación de vanilla K8s, avísanos nos comentarios.

Bonos

1. Portainer en Kubernetes en versión beta

  • sitio;
  • repositorio (~100 estrelas de GitHub);
  • Licenza: Zlib(?) (o mesmo para o proxecto dos pais).

Un proxecto do equipo de Portainer, que desenvolveu a popular interface do mesmo nome para traballar con Docker. Xa que o proxecto está nunha fase inicial de desenvolvemento (a primeira e única versión beta saíu 16 de abril de 2020), non avaliamos as súas características. Non obstante, pode ser de interese para moitos: se se trata de ti, sigue o desenvolvemento.

2. IcePanel

  • sitio;
  • Licenza: propietaria;
  • En resumo: "Editor Visual Kubernetes".

Visión xeral das GUI para Kubernetes

Esta nova aplicación de escritorio ten como obxectivo visualizar e xestionar os recursos de Kubernetes en tempo real cunha sinxela interface de arrastrar e soltar. Os obxectos compatibles actualmente son Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap e Secret. En breve prometen engadir soporte para Helm. As principais desvantaxes son a proximidade do código (espérase abrindo "dalgunha maneira") e a falta de compatibilidade con Linux (ata agora só están dispoñibles versións para Windows e macOS, aínda que tamén é moi probable que sexa cuestión de tempo).

3.k9s

  • sitio;
  • Demostración;
  • repositorio (~7700 estrelas de GitHub);
  • Licenza: Apache 2.0;
  • En resumo: "Unha interface de consola para Kubernetes que che permite xestionar o teu clúster con estilo".

Visión xeral das GUI para Kubernetes

A utilidade estaba só na parte extra da revisión porque ofrece unha GUI de consola. Non obstante, os autores sacaron literalmente o máximo proveito do terminal, ofrecendo non só unha interface amigable, senón tamén 6 temas predefinidos e un sistema avanzado de atallos de teclado e alias de comandos. O seu enfoque exhaustivo non se limitou á aparencia: as funcións de k9s son agradablemente impresionantes: xestión de recursos, visualización do estado do clúster, visualización de recursos nunha representación xerárquica con dependencias, visualización de rexistros, soporte RBAC, ampliación de capacidades a través de complementos... Todo isto atractivo. á ampla comunidade K8s: o número de estrelas do proxecto de GitHub é case tan bo como o panel oficial de Kubernetes!

4. Paneis de control de aplicacións

E ao final da revisión - unha mini-categoría separada. Incluía dúas interfaces web deseñadas non para a xestión integral dos clústeres de Kubernetes, senón para xestionar o que se desprega neles.

Como sabes, unha das ferramentas máis maduras e estendidas para implementar aplicacións complexas en Kubernetes é Helm. Durante o período da súa existencia, acumuláronse moitos paquetes (gráficos Helm) para facilitar a súa implantación moitas aplicacións populares. Polo tanto, a aparición de ferramentas visuais axeitadas que permitan xestionar o ciclo de vida dos gráficos é bastante lóxica.

4.1. Monocular

  • repositorio (máis de 1300 estrelas de GitHub);
  • Licenza: Apache 2.0;
  • En resumo: "Unha aplicación web para buscar e descubrir gráficos Helm en varios repositorios. Serve como base para o proxecto Helm hub".

Visión xeral das GUI para Kubernetes

Este desenvolvemento dos autores de Helm está instalado en Kubernetes e funciona dentro do mesmo clúster, realizando a tarefa. Porén, na actualidade, o proxecto case non está desenvolvido. O seu obxectivo principal é apoiar a existencia do Helm Hub. Para outras necesidades, os autores recomendan Kubeapps (ver máis abaixo) ou Red Hat Automation Broker (parte de OpenShift, pero que xa non está a desenvolver).

4.2. Kubeapps

  • sitio;
  • Presentación;
  • repositorio (~2100 estrelas de GitHub);
  • Licenza: Apache 2.0
  • En resumo: "O panel de control da túa aplicación para Kubernetes".

Visión xeral das GUI para Kubernetes

Un produto de Bitnami, que tamén está instalado nun clúster de Kubernetes, pero que se diferencia de Monocular no seu enfoque inicial en traballar con repositorios privados.

Funcións e características principais de Kubeapps:

  • Ver e instalar gráficos Helm desde repositorios.
  • Comprobe, actualice e elimine as aplicacións baseadas en Helm instaladas no clúster.
  • Soporte para repositorios de gráficos personalizados e privados (soporta ChartMuseum e JFrog Artifactory).
  • Ver e traballar con servizos externos: desde o Catálogo de servizos e os Corretores de servizos.
  • Publicación de aplicacións instaladas mediante o mecanismo de vinculacións do catálogo de servizos.
  • Soporte para a autenticación e separación de dereitos mediante RBAC.

Táboa de resumo

A continuación móstrase unha táboa resumo na que tentamos resumir e agregar as principais características das interfaces visuais existentes para facilitar a comparación:

Visión xeral das GUI para Kubernetes
(Versión en liña da táboa dispoñible en Google Docs.)

Conclusión

As GUI para Kubernetes son un nicho bastante específico e novo. Non obstante, estase a desenvolver de forma moi activa: xa é posible atopar tanto solucións bastante maduras como moi novas, que aínda teñen espazo para crecer. Atenden a unha variedade de aplicacións, ofrecendo funcións e aspecto para case todos os gustos. Agardamos que esta revisión che axude a escoller a ferramenta que mellor se adapte ás túas necesidades actuais.

PS

Grazas kvaps para os datos da consola OpenShift para a táboa de comparación!

Lea tamén no noso blog:

Fonte: www.habr.com

Engadir un comentario