Descripción general de las GUI para Kubernetes

Descripción general de las GUI para Kubernetes

Para un trabajo completo con el sistema, es importante el conocimiento de las utilidades de la línea de comandos: en el caso de Kubernetes, esto es kubectl. Por otro lado, las interfaces gráficas reflexivas y bien diseñadas pueden realizarоla mayoría de las tareas habituales y abre oportunidades adicionales para el funcionamiento de los sistemas.

El año pasado publicamos una traducción pequeña descripción general de la interfaz de usuario web para Kubernetes, programado para coincidir con el anuncio de la interfaz web Vista web de Kubernetes. El autor de ese artículo y de la propia utilidad, Henning Jacobs de Zalando, acaba de posicionar el nuevo producto como "kubectl para la web". Quería crear una herramienta con capacidades fáciles de usar para la interacción en un formato de soporte técnico (por ejemplo, mostrando rápidamente el problema con un enlace web) y para responder a incidentes, buscando problemas en muchos clústeres al mismo tiempo. Su descendencia se está desarrollando en la actualidad (principalmente por el esfuerzo del propio autor).

Como atendemos muchos clústeres de Kubernetes de varios tamaños, también estamos interesados ​​en poder proporcionar una herramienta visual a nuestros clientes. Al elegir una interfaz adecuada, las siguientes características fueron clave para nosotros:

  • soporte para la diferenciación de derechos de usuario (RBAC);
  • visualización del estado del espacio de nombres y las primitivas estándar de Kubernetes (Implementación, StatefulSet, Servicio, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • obtener acceso a la línea de comando dentro del pod;
  • ver registros de pods;
  • ver el estado de los pods (describe status);
  • quitando vainas.

Otras funciones, como ver los recursos consumidos (en el contexto de pods/controladores/espacios de nombres), crear/editar primitivos K8, no son relevantes dentro de nuestro flujo de trabajo.

Comenzaremos la revisión con el panel de Kubernetes clásico, que es nuestro estándar. Como el mundo no se detiene (lo que significa que Kubernetes tiene cada vez más GUI nuevas), también hablaremos de sus alternativas actuales, resumiéndolo todo en una tabla comparativa al final del artículo.

NB: En la revisión, no repetiremos con aquellas soluciones que ya se han considerado en último artículo, sin embargo, en aras de la exhaustividad, las opciones relevantes (K8Dash, Octant, Kubernetes Web View) se incluyen en la tabla final.

1. Panel de control de Kubernetes

  • página de documentación;
  • repositorio (8000+ estrellas de GitHub);
  • Licencia: Apache 2.0;
  • En resumen: “Interfaz web universal para clústeres de Kubernetes. Permite a los usuarios administrar y solucionar problemas de las aplicaciones que se ejecutan en el clúster, así como también administrar el propio clúster”.

Descripción general de las GUI para Kubernetes

Este es un panel de propósito general cubierto por los autores de Kubernetes en la documentación oficial. (pero no desplegable por defecto). Está diseñado para las necesidades del funcionamiento diario y la depuración de aplicaciones en un clúster. En casa, lo usamos como una herramienta visual liviana y completa que nos permite proporcionar a los desarrolladores el acceso necesario y suficiente al clúster. Sus capacidades cubren todas sus necesidades que surgen en el proceso de utilización del clúster (en este artículo demostramos algunas características del panel). Como puede suponer, esto significa que cumple con todos nuestros requisitos enumerados anteriormente.

Entre las principales características de Kubernetes Dashboard:

  • Navegación: vea los objetos principales de K8s en el contexto de los espacios de nombres.
  • Si tiene derechos de administrador, el panel muestra nodos, espacios de nombres y volúmenes persistentes. Para los nodos, las estadísticas están disponibles sobre el uso de la memoria, el procesador, la asignación de recursos, las métricas, el estado, los eventos, etc.
  • Vea las aplicaciones implementadas en un espacio de nombres por su tipo (Implementación, StatefulSet, etc.), relaciones entre ellas (ReplicaSet, Horizontal Pod Autoscaler), estadísticas e información general y personalizada.
  • Vea servicios e ingresos, así como sus relaciones con pods y terminales.
  • Ver objetos de archivos y almacenamientos: volumen persistente y reclamación de volumen persistente.
  • Ver y editar ConfigMap y Secret.
  • Ver los registros.
  • Acceso a la línea de comandos en contenedores.

Un inconveniente importante (sin embargo, no para nosotros) es que no hay soporte para el trabajo de varios clústeres. El proyecto es desarrollado activamente por la comunidad y mantiene características relevantes con el lanzamiento de nuevas versiones y especificaciones de la API de Kubernetes: la última versión del panel es v2.0.1 22 de mayo de 2020: compatibilidad probada con Kubernetes 1.18.

2. Lente

Descripción general de las GUI para Kubernetes

El proyecto se posiciona como un entorno de desarrollo integrado (IDE) completo para Kubernetes. Además, está optimizado para funcionar con muchos clústeres y una gran cantidad de pods que se ejecutan en ellos (probado en 25 pods).

Características/capacidades principales de Lens:

  • Aplicación independiente que no requiere la instalación de nada dentro del clúster (más precisamente, se requerirá Prometheus para obtener todas las métricas, pero también se puede usar una instalación existente para esto). La instalación “principal” se realiza en una computadora personal con Linux, macOS o Windows.
  • Gestión de varios clústeres (se admiten cientos de clústeres).
  • Visualización del estado del clúster en tiempo real.
  • Gráficos de uso de recursos y tendencias con historial basado en Prometheus integrado.
  • Acceso a la línea de comando de los contenedores y en los nodos del clúster.
  • Soporte completo para Kubernetes RBAC.

Lanzamiento actual - 3.5.0 con fecha del 16 de junio de 2020 Creado originalmente por Kontena, hoy toda la propiedad intelectual se ha transferido a una organización especial Laboratorios Lakend, llamado "una unión de geeks y tecnólogos nativos de la nube", que es responsable de la "preservación y disponibilidad del software y los productos de código abierto de Kontena".

Lens es el segundo proyecto más popular en GitHub de la categoría GUI para Kubernetes, "perdiendo" solo el Panel de Kubernets en sí. Todas las demás soluciones de código abierto que no pertenecen a la categoría CLI* son significativamente inferiores en popularidad.

* Vea acerca de los K9 en la parte de bonificación de la revisión.

3. Kubernético

Descripción general de las GUI para Kubernetes

Esta es una aplicación propietaria que se instala en una computadora personal (Linux, macOS, Windows son compatibles). Sus autores prometen un reemplazo completo de la utilidad de línea de comandos y, con ella, no es necesario recordar los comandos e incluso multiplicar por diez la velocidad.

Una de las características interesantes de la herramienta es la compatibilidad integrada con los gráficos de Helm, y uno de los inconvenientes es la falta de métricas de rendimiento de la aplicación.

Características principales de Kubernetic:

  • Cómoda visualización del estado del clúster. Una pantalla para ver todos los objetos de clúster relacionados y sus dependencias; estado de preparación rojo/verde para todos los objetos; modo de vista de estado del clúster con actualizaciones de estado en tiempo real.
  • Botones de acción rápida para eliminar y escalar la aplicación.
  • Soporte para operación multi-clúster.
  • Trabajo sencillo con espacios de nombres.
  • Compatibilidad con gráficos de Helm y repositorios de Helm (incluidos los privados). Instalación y gestión de gráficos en la interfaz web.

El costo actual del producto es un pago único de 30 euros por su uso por una persona para cualquier número de espacios de nombres y clústeres.

4. Seguro

  • sitio web;
  • presentación;
  • repositorio (~500 estrellas de GitHub);
  • Licencia: Apache 2.0
  • En resumen: "Kubevious hace que los clústeres de Kubernetes, la configuración de aplicaciones y la visualización del estado sean seguros y fáciles de entender".

Descripción general de las GUI para Kubernetes

La idea del proyecto es crear una herramienta diseñada para analizar y depurar configuraciones de aplicaciones desplegadas en un clúster. Los autores se centraron principalmente en la implementación de estas características, dejando las cosas más generales para más adelante.

Características y funciones clave de Kubevious:

  • Visualización de clústeres centrada en la aplicación: los objetos relacionados en la interfaz se agrupan y se alinean en una jerarquía.
  • Visualización visual de dependencias en configuraciones y consecuencias en cascada de sus cambios.
  • Visualización de errores de configuración del clúster: mal uso de etiquetas, puertos perdidos, etc. (Por cierto, si está interesado en esta función, preste atención a Polarissobre el cual nosotros ya escribí.)
  • Además del punto anterior, se dispone de detección de envases potencialmente peligrosos, es decir tener demasiados privilegios (atributos hostPID, hostNetwork, hostIPC, montar docker.sock etc).
  • Sistema de búsqueda avanzada del clúster (no solo por los nombres de los objetos, sino también por sus propiedades).
  • Herramientas para la planificación de capacidad y optimización de recursos.
  • "Máquina del tiempo" incorporada (la capacidad de ver cambios anteriores en la configuración de objetos).
  • Gestión de RBAC con una tabla dinámica interrelacionada de Roles, RoleBindings, ServiceAccounts.
  • Funciona con un solo clúster.

El proyecto tiene una historia muy corta (el primer lanzamiento tuvo lugar el 11 de febrero de 2020) y parece que ha habido un período de estabilización o desaceleración en el desarrollo. Si las versiones anteriores se publicaron con frecuencia, la última versión (v0.5 15 de abril de 2020) se ha quedado atrás del ritmo inicial de desarrollo. Esto probablemente se deba a la pequeña cantidad de colaboradores: solo hay 4 de ellos en la historia del repositorio, y todo el trabajo real lo realiza una sola persona.

5. Kubewise

  • página del proyecto;
  • Licencia: propietaria (se convertirá en Open Source);
  • En resumen: "Un simple cliente multiplataforma para Kubernetes".

Descripción general de las GUI para Kubernetes

Un nuevo producto de VMware, creado originalmente como parte de un hackatón interno (en junio de 2019). Instalado en una computadora personal, funciona sobre la base de Electrón (Compatible con Linux, macOS y Windows) y requiere kubectl v1.14.0 o posterior.

Características principales de Kubewise:

  • Interacción de la interfaz con las entidades de Kubernetes más utilizadas: nodos, espacios de nombres, etc.
  • Compatibilidad con varios archivos kubeconfig para diferentes clústeres.
  • Terminal con la capacidad de establecer una variable de entorno KUBECONFIG.
  • Genere archivos kubeconfig personalizados para el espacio de nombres dado.
  • Funciones de seguridad avanzadas (RBAC, contraseñas, cuentas de servicio).

Hasta ahora, el proyecto tiene solo una versión: versión 1.1.0 de 26 de noviembre de 2019. Además, los autores planearon lanzarlo inmediatamente como Open Source, pero debido a problemas internos (no relacionados con problemas técnicos) no pudieron hacerlo. A partir de mayo de 2020, los autores están trabajando en la próxima versión y deben iniciar el proceso de apertura de código al mismo tiempo.

6. Consola OpenShift

Descripción general de las GUI para Kubernetes

A pesar de que esta interfaz web es parte de la distribución de OpenShift (se instala allí usando operador especial), autores visto el futuro la capacidad de instalarlo/usarlo en instalaciones normales (vainilla) de Kubernetes.

OpenShift Console ha estado en desarrollo durante mucho tiempo, por lo que ha incorporado muchas funciones. Mencionaremos las principales:

  • Enfoque de interfaz compartida: dos "perspectivas" de las posibilidades disponibles en la Consola: para administradores y para desarrolladores. Modo perspectiva del desarrollador agrupa objetos en una forma que es más comprensible para los desarrolladores (por aplicaciones) y enfoca la interfaz en resolver tareas típicas como implementar aplicaciones, rastrear el estado de compilación/implementación e incluso editar código a través de Eclipse Che.
  • Gestión de cargas de trabajo, red, almacenamiento, derechos de acceso.
  • Separación lógica de cargas de trabajo en proyectos y aplicaciones. En uno de los últimos lanzamientos - v4.3 - aparecido специальный Panel de control del proyecto, que muestra los datos habituales (la cantidad y los estados de las implementaciones, los pods, etc.; el consumo de recursos y otras métricas) en una porción del proyecto.
  • Visualización actualizada en tiempo real del estado del clúster, cambios (eventos) que han ocurrido en el mismo; visualización de registros.
  • Ver datos de monitoreo basados ​​en Prometheus, Alertmanager y Grafana.
  • Gestión de operadores representados en OperadorHub.
  • Administre compilaciones que se ejecutan a través de Docker (desde un repositorio específico con un Dockerfile), S2I o utilidades externas arbitrarias.

NB: No agregamos otros a la comparación Distribuciones de Kubernetes (por ejemplo, el mucho menos conocido Kubesfera): si bien la GUI puede ser muy avanzada, generalmente viene como parte de la pila integrada de un sistema más grande. Sin embargo, si cree que no hay suficientes soluciones que funcionen completamente en la instalación de Vanilla K8s, infórmenos en los comentarios.

Prima

1. Portainer en Kubernetes en Beta

  • sitio web;
  • repositorio (~100 estrellas de GitHub);
  • Licencia: Zlib(?) (lo mismo para el proyecto principal).

Un proyecto del equipo de Portainer, que desarrolló la popular interfaz del mismo nombre para trabajar con Docker. Dado que el proyecto se encuentra en una etapa temprana de desarrollo (la primera y única versión beta salió 16 de abril de 2020), no evaluamos sus características. Sin embargo, puede ser de interés para muchos: si se trata de ti, sigue el desarrollo.

2. Panel de hielo

  • sitio web;
  • Licencia: propietaria;
  • En resumen: "Editor visual de Kubernetes".

Descripción general de las GUI para Kubernetes

Esta joven aplicación de escritorio tiene como objetivo visualizar y administrar los recursos de Kubernetes en tiempo real con una interfaz simple de arrastrar y soltar. Los objetos admitidos actualmente son Pod, Servicio, Implementación, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap y Secret. Pronto prometen agregar soporte para Helm. Las principales desventajas son la cercanía del código (se espera apertura "de alguna manera") y la falta de soporte para Linux (hasta ahora solo hay disponibles versiones para Windows y macOS, aunque probablemente también sea cuestión de tiempo).

3.k9s

  • sitio web;
  • Demostración;
  • repositorio (~7700 estrellas de GitHub);
  • Licencia: Apache 2.0;
  • En resumen: "Una interfaz de consola para Kubernetes que le permite administrar su clúster con estilo".

Descripción general de las GUI para Kubernetes

La utilidad solo estaba en la parte adicional de la revisión porque ofrece una GUI de consola. Sin embargo, los autores literalmente exprimieron al máximo la terminal, ofreciendo no solo una interfaz fácil de usar, sino también 6 temas predefinidos y un sistema avanzado de atajos de teclado y alias de comando. Su enfoque minucioso no se limitó a la apariencia: las características de k9s son gratamente impresionantes: gestión de recursos, visualización del estado del clúster, visualización de recursos en una representación jerárquica con dependencias, visualización de registros, compatibilidad con RBAC, ampliación de capacidades a través de complementos... Todo esto atrajo a la amplia comunidad de K8: ¡el número de estrellas de GitHub del proyecto es casi tan bueno como el panel oficial de Kubernetes!

4. Paneles de control de aplicaciones

Y al final de la revisión, una mini categoría separada. Incluía dos interfaces web diseñadas no para la gestión integral de los clústeres de Kubernetes, sino para gestionar lo que se implementa en ellos.

Como sabes, una de las herramientas más maduras y extendidas para desplegar aplicaciones complejas en Kubernetes es Helm. Durante el período de su existencia, se han acumulado muchos paquetes (gráficos de Helm) para una fácil implementación. muchas aplicaciones populares. Por tanto, es bastante lógica la aparición de herramientas visuales adecuadas que permitan gestionar el ciclo de vida de los gráficos.

4.1 monocular

  • repositorio (1300+ estrellas de GitHub);
  • Licencia: Apache 2.0;
  • En resumen: “Una aplicación web para buscar y descubrir gráficos de Helm en múltiples repositorios. Sirve como base para el proyecto del centro Helm".

Descripción general de las GUI para Kubernetes

Este desarrollo de los autores de Helm se instala en Kubernetes y trabaja dentro del mismo clúster, realizando la tarea. Sin embargo, en la actualidad, el proyecto está casi sin desarrollar. Su objetivo principal es apoyar la existencia del Helm Hub. Para otras necesidades, los autores recomiendan Kubeapps (ver más abajo) o Red Hat Automation Broker (parte de OpenShift, pero que ya no se está desarrollando).

4.2. Kubeapps

Descripción general de las GUI para Kubernetes

Un producto de Bitnami, que también se instala en un clúster de Kubernetes, pero se diferencia de Monocular en su enfoque inicial de trabajar con repositorios privados.

Funciones y características clave de Kubeapps:

  • Vea e instale gráficos de Helm desde repositorios.
  • Compruebe, actualice y elimine las aplicaciones basadas en Helm instaladas en el clúster.
  • Compatibilidad con repositorios de gráficos personalizados y privados (compatible con ChartMuseum y JFrog Artifactory).
  • Ver y trabajar con servicios externos: desde el catálogo de servicios y los intermediarios de servicios.
  • Publicación de aplicaciones instaladas mediante el mecanismo de enlaces de catálogo de servicios.
  • Soporte para autenticación y separación de derechos usando RBAC.

Tabla resumen

A continuación se muestra una tabla resumen en la que hemos intentado resumir y agregar las principales características de las interfaces visuales existentes para facilitar la comparación:

Descripción general de las GUI para Kubernetes
(Versión en línea de la tabla disponible en Documentos de Google.)

Conclusión

Las GUI para Kubernetes son un nicho bastante específico y joven. Sin embargo, se está desarrollando muy activamente: ya es posible encontrar tanto soluciones bastante maduras como muy jóvenes, que aún tienen espacio para crecer. Se adaptan a una variedad de aplicaciones y ofrecen características y apariencias que se adaptan a casi todos los gustos. Esperamos que esta revisión lo ayude a elegir la herramienta que mejor se adapte a sus necesidades actuales.

PS

¡Gracias! kvaps para los datos en OpenShift Console para la tabla de comparación!

Lea también en nuestro blog:

Fuente: habr.com

Añadir un comentario