Nota perev. : El autor del material original es Henning Jacobs de Zalando. Creó una nueva interfaz web para trabajar con Kubernetes, que se posiciona como "kubectl para la web". Por qué apareció el nuevo proyecto de código abierto y qué criterios no satisfacían las soluciones existentes, lea su artículo.
En esta publicación, miro las diversas interfaces web de código abierto de Kubernetes, presento mis requisitos para una interfaz de usuario universal y explico por qué desarrollé
Kubernetes Web View , una interfaz diseñada para facilitar el soporte y la resolución de problemas de varios clústeres a la vez.
Casos de uso
En Zalando, servimos a una gran cantidad de usuarios de Kubernetes (900+) y clúster (100+). Hay un par de casos de uso típicos en los que la ayuda de una herramienta web especializada sería muy útil:
- comunicación con colegas de apoyo;
- respuesta a incidentes e investigación de sus causas.
Apoyo
En mi experiencia, la comunicación dentro de un marco de soporte a menudo se ve así:
- ¡Ayuda, nuestro servicio XYZ no está disponible!
- ¿Qué ves cuando realizas kubectl describe ingress ...
?O algo similar para CRD:
- Tengo algún tipo de problema con el servicio de identificación ...
- ¿Y qué kubectl describe platformcredentialsset ...
comando kubectl describe platformcredentialsset ...
?Dicha comunicación generalmente se reduce a la introducción de diversas variaciones del
kubectl
para solucionar el problema. Como resultado, ambos lados de la conversación se ven obligados a cambiar constantemente entre el terminal y el chat web, además de observar una situación diferente.
Por lo tanto, quiero que la interfaz web de Kubernetes permita lo siguiente:
- los usuarios pueden intercambiar enlaces y observar lo mismo;
- Ayudaría a evitar errores humanos en el soporte: por ejemplo, ingresar el clúster incorrecto en la línea de comando, escribir errores en los comandos de la CLI, etc.
- le permitiría generar sus propias vistas para enviar a sus colegas, es decir, agregar columnas de etiquetas, mostrar muchos tipos de recursos en una página;
- Idealmente, esta herramienta basada en la web debería permitirle poner enlaces profundos a secciones específicas de YAML (por ejemplo, señalar un parámetro no válido que cause bloqueos).
Respuesta a incidentes y análisis
Responder a incidentes en infraestructura requiere conciencia situacional, la capacidad de evaluar el impacto y buscar patrones en grupos. Algunos ejemplos de la vida real:
- el servicio de producción crítico tiene problemas y necesita encontrar todos los recursos de Kubernetes por nombre en todos los clústeres para solucionar los problemas;
- los nodos comienzan a caer al escalar, y necesita encontrar todos los pods con el estado "Pendiente" en todos los clústeres para evaluar la magnitud del problema;
- los usuarios individuales informan un problema con DaemonSet implementado en todos los clústeres, y es necesario averiguar si el problema es total .
Mi solución estándar en estos casos es algo así como
for i in $clusters; do kubectl ...; done
for i in $clusters; do kubectl ...; done
for i in $clusters; do kubectl ...; done
Obviamente, puede desarrollar una herramienta que brinde capacidades similares.
Interfaces web de Kubernetes existentes
El mundo de código abierto de las interfaces web de Kubernetes no es demasiado grande *, así que intenté recopilar información adicional usando
Twitter :
* Mi explicación del número limitado de interfaces web para Kubernetes: los proveedores y servicios en la nube de Kubernetes suelen ofrecer sus propias interfaces, por lo que el mercado para la "buena" interfaz de usuario gratuita de Kubernetes es relativamente pequeño.Tuiteé sobre
K8Dash ,
Kubernator y
Octant . Echemos un vistazo a ellos y a otras soluciones de código abierto existentes, intentemos comprender cuáles son.
K8Dash
"K8Dash es la forma más fácil de administrar su clúster de Kubernetes".
K8Dash se ve bien y se siente rápido, pero tiene varias desventajas para los
casos de uso enumerados anteriormente:
- Funciona solo dentro de los límites de un clúster.
- La clasificación y el filtrado son posibles, pero no tienen enlaces permanentes.
- No hay soporte para las Definiciones de recursos personalizados (CRD).
Kubernator
“Kubernator es una interfaz de usuario alternativa para Kubernetes. A diferencia del Panel de control de Kubernetes de alto nivel, proporciona un control de bajo nivel y una excelente visión general de todos los objetos en el clúster con la capacidad de crear nuevos, editarlos y resolver conflictos. Al ser una aplicación totalmente cliente (como kubectl), no requiere ningún backend, excepto el servidor API de Kubernetes, y también tiene en cuenta las reglas para acceder al clúster ".
Esta es una descripción bastante precisa de
Kubernator . Por desgracia, carece de algunas características:
- Sirve solo un clúster.
- No hay modo de vista de lista (es decir, no puede mostrar todos los pods con el estado "Pendiente").
Panel de Kubernetes
“Kubernetes Dashboard es una interfaz web universal para clústeres de Kubernetes. Permite a los usuarios administrar y solucionar problemas de aplicaciones que se ejecutan en el clúster, así como administrar el clúster en sí mismo ".
Desafortunadamente,
Kubernetes Dashboard no ayuda mucho en mis actividades de asistencia y respuesta ante incidentes, porque:
- No hay enlaces permanentes, por ejemplo, cuando filmo recursos o cambio el orden de clasificación;
- no hay una manera fácil de filtrar por estado; por ejemplo, vea todos los pods con el estado "Pendiente";
- solo se admite un clúster;
- CRD no son compatibles (esta función está en desarrollo);
- sin columnas personalizadas (p.
kubectl -L
., kubectl -L
).
Vista operativa de Kubernetes (kube-ops-view)
"Panel del sistema de observadores de espacio en clúster K8s".
Kubernetes Operational View tiene un enfoque completamente diferente: esta herramienta solo muestra nodos de clúster y pods usando WebGL, sin ningún detalle textual de los objetos. Es excelente para una visión general en línea del estado del clúster ("¿caen los pods?") *, Pero no para los casos de soporte y respuesta a incidentes descritos anteriormente.
* Nota perev. : En este sentido, también puede estar interesado en nuestro complemento grafana-statusmap , que cubrimos con más detalle en este artículo .Informe de recursos de Kubernetes (kube-resource-report)
"Reúna información sobre solicitudes de recursos de pods y grupos de Kubernetes, compárelos con el consumo de recursos y genere HTML estático".
Kubernetes Resource Report genera informes HTML estáticos sobre el uso de recursos y la distribución de costos por equipos / aplicaciones en clústeres. El informe es algo útil para apoyar y responder a incidentes, ya que le permite encontrar rápidamente el clúster en el que se implementa la aplicación.
Nota perev. : Al ver información sobre la distribución de recursos y su costo de los proveedores de la nube, el servicio y la herramienta de Kubecost , que publicamos recientemente, también pueden ser útiles.Octante
"Una plataforma de desarrollo web extensible diseñada para proporcionar una mejor comprensión de la complejidad del clúster de Kubernetes".
Octant , creado en VMware, es un nuevo producto que aprendí hace relativamente poco. Al usarlo, es conveniente examinar el clúster en una máquina local (incluso hay visualizaciones), sin embargo, solo toca los problemas de soporte y respuesta a incidentes de manera limitada. Octantes desventajas:
- Sin búsqueda de clúster.
- Funciona solo en la máquina local (no implementada en el clúster).
- No se pueden ordenar / filtrar objetos (solo se admite el selector de etiquetas).
- No puede especificar columnas personalizadas.
- No puede enumerar objetos por espacio de nombres.
También tuve problemas de estabilidad con los grupos de Zalando de Octant: se estrelló en algunos CRD.
Presentación de la vista web de Kubernetes
"Kubectl para la web".
Después de analizar las opciones de interfaz disponibles para Kubernetes, decidí crear una nueva:
Vista web de Kubernetes . De hecho, de hecho, solo necesito todo el poder de
kubectl
en la web, a saber:
- accesibilidad a todas las operaciones (solo lectura) en las que los usuarios prefieren usar kubectl;
- Todas las URL deben ser permanentes y presentar la página en su forma original para que los colegas puedan compartirlas y usarlas en otras herramientas;
- soporte para todos los objetos de Kubernetes, lo que resolverá el problema de cualquier tipo;
- las listas de recursos deben poder descargarse para trabajar más (en hojas de cálculo, herramientas CLI como
grep
) y almacenamiento (por ejemplo, para autopsias); - soporte para seleccionar recursos por etiquetas (similar a
kubectl get .. -l
); - la capacidad de crear listas combinadas de varios tipos de recursos (similar a
kubectl get all
) para obtener una imagen operativa común entre colegas (por ejemplo, en el proceso de respuesta a un incidente); - la capacidad de agregar enlaces profundos "inteligentes" personalizables a otras herramientas, como paneles, registradores, registros de aplicaciones, etc. para facilitar la resolución de problemas / respuesta a incidentes;
- la interfaz debería ser lo más simple posible (HTML puro) para evitar problemas accidentales, por ejemplo, JavaScript congelado;
- soporte para múltiples clústeres para facilitar la interacción durante la consulta remota (por ejemplo, para recordar solo una URL);
- si es posible, el análisis situacional debería simplificarse (por ejemplo, con enlaces para descargar recursos para todos los clústeres / espacios de nombres);
- oportunidades adicionales para crear enlaces flexibles y resaltar información textual, por ejemplo, para que los colegas puedan apuntar a una sección específica en la descripción del recurso (línea en YAML);
- la capacidad de adaptarse a los requisitos de un cliente en particular, por ejemplo, lo que le permite crear plantillas de visualización especiales para CRD, sus vistas de tabla, cambiar estilos CSS;
- herramientas para seguir estudiando la línea de comandos (por ejemplo, mostrar comandos
kubectl
completos listos para copiar);
Fuera de los
objetivos no resueltos por Kubernetes Web View, hay:
- abstraer objetos de Kubernetes;
- gestión de aplicaciones (por ejemplo, gestión de despliegue, gráficos Helm, etc.);
- operaciones de escritura (deben realizarse a través de herramientas de CI / CD y / o GitOps seguras);
- hermosa interfaz (JavaScript, temas, etc.);
- visualizaciones (ver kube-ops-view );
- análisis de costos (ver kube-resource-report ).
¿Cómo ayuda Kubernetes Web View a soportar y responder a incidentes?
Apoyo
- Todos los enlaces son permanentes , lo que facilita el intercambio de información con colegas.
- Puede crear sus propias vistas , por ejemplo, mostrar todas las implementaciones y pods con una etiqueta específica en dos grupos específicos (se pueden especificar varios nombres de grupos y tipos de recursos en el enlace, separados por comas).
- Puede hacer referencia a líneas específicas en el archivo YAML del objeto, lo que indica posibles problemas en la especificación del objeto.
Búsqueda de clústeres en la vista web de KubernetesRespuesta a incidentes
- La búsqueda global le permite buscar objetos en todos los grupos.
- Las vistas de lista pueden mostrar todos los objetos con un determinado estado / columna en todos los grupos (por ejemplo, necesitamos encontrar todos los pods con el estado "Pendiente").
- Las listas de objetos se pueden descargar en formato de tabulación delimitada (TSV) para su posterior análisis.
- Los enlaces externos personalizables le permiten cambiar a los paneles correspondientes y otras herramientas.
Vista web de Kubernetes: una lista de pods con estado pendiente en todos los clústeresSi desea probar Kubernetes Web View, le recomiendo que se familiarice con la
documentación o vea la
versión de demostración en vivo .
Por supuesto, la interfaz podría ser mejor, pero por ahora Kubernetes Web View es una herramienta para "usuarios avanzados" que no evitan manipular manualmente las rutas URL si es necesario. Si tiene comentarios / adiciones / deseos, ¡contácteme
en Twitter !
Este artículo es una breve descripción de las premisas que llevaron a la creación de Kubernetes Web View. ¡Otros lo seguirán!
( Nota traducida : deben esperarse en el blog del autor ).PD del traductor
Lea también en nuestro blog: