Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)

Nota. traducir: 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ó un nuevo proyecto de código abierto y qué criterios no cumplían las soluciones existentes: lea su artículo.

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)

En esta publicación, reviso las diversas interfaces web de código abierto de Kubernetes, expongo mis requisitos para una interfaz de usuario universal y explico por qué desarrollé Vista web de Kubernetes — 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 damos servicio a un gran número de usuarios de Kubernetes (más de 900) y clústeres (más de 100). Hay un par de casos de uso comunes que se beneficiarían de una herramienta web dedicada:

  1. comunicación con colegas para obtener apoyo;
  2. responder a incidentes e investigar sus causas.

Apoyar

En mi experiencia, las comunicaciones de soporte suelen tener este aspecto:

— ¡Ayuda, nuestro servicio XYZ no está disponible!
— ¿Qué ves cuando actúas? kubectl describe ingress ...?

O algo similar para CRD:

— Tengo algún problema con el servicio de identificación...
— ¿Qué produce el comando? kubectl describe platformcredentialsset ...?

Esta comunicación generalmente se reduce a ingresar varias variaciones del comando. kubectl para poder identificar el problema. Como resultado, ambas partes de la conversación se ven obligadas a cambiar constantemente entre el terminal y el chat web, además de observar una situación diferente.

Por lo tanto, me gustaría que la interfaz web de Kubernetes permita lo siguiente:

  • los usuarios podrían intercambiar enlaces y observar lo mismo;
  • ayudaría evitar errores humanos en soporte: por ejemplo, iniciar sesión en el clúster incorrecto en la línea de comando, errores tipográficos en los comandos CLI, etc.;
  • permitiría genera tus propias vistas enviar a colegas, es decir, agregar columnas de etiquetas, mostrar muchos tipos de recursos en una página;
  • Idealmente, esta herramienta web debería permitirle configurar enlaces "profundos" a secciones específicas de YAML (por ejemplo, señalar un parámetro incorrecto que está provocando fallos).

Respuesta y análisis de incidentes.

Responder a incidentes de infraestructura requiere conciencia situacional, la capacidad de evaluar el impacto y buscar patrones en grupos. Algunos ejemplos de la vida real:

  • Un servicio de producción crítico está teniendo problemas y es necesario encuentre todos los recursos de Kubernetes por nombre en todos los clústerespara solucionar problemas;
  • Los nodos comienzan a caer al escalar y necesitas encontrar todos los pods con el estado "Pendiente" en todos los clústeresevaluar el alcance del problema;
  • Los usuarios individuales informan un problema con DaemonSet implementado en todos los clústeres y necesitan resolverlo. ¿El problema es total?.

Mi solución estándar en tales casos es algo como for i in $clusters; do kubectl ...; done. Obviamente, es posible desarrollar una herramienta que proporcione capacidades similares.

Interfaces web de Kubernetes existentes

El mundo de código abierto de las interfaces web para Kubernetes no es muy grande*, así que intenté recopilar más información utilizando Twitter:

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)

*Mi explicación para el número limitado de interfaces web para Kubernetes: los servicios en la nube y los proveedores de Kubernetes generalmente ofrecen sus propias interfaces, por lo que el mercado de una "buena" interfaz de usuario gratuita de Kubernetes es relativamente pequeño.

A través de un tweet me enteré K8Dash, Kubernador и Octante. Veámoslas y otras soluciones de código abierto existentes, intentemos comprender qué son.

K8Dash

"K8Dash es la forma más sencilla de gestionar un clúster de Kubernetes".

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)

K8Dash Se ve bien y se siente rápido, pero tiene una serie de desventajas para los casos de uso enumerados anteriormente:

  • Funciona sólo dentro de los límites de un grupo.
  • Es posible ordenar y filtrar, pero no tienen enlaces permanentes.
  • No hay soporte para definiciones de recursos personalizados (CRD).

Kubernador

“Kubernator es una interfaz de usuario alternativa para Kubernetes. A diferencia del panel de Kubernetes de alto nivel, proporciona control de bajo nivel y excelente visibilidad de todos los objetos del clúster con la capacidad de crear otros nuevos, editarlos y resolver conflictos. Al ser una aplicación completamente del lado del cliente (como kubectl), no requiere ningún backend más que el propio servidor API de Kubernetes y también respeta las reglas de acceso al clúster”.

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)

Esta es una descripción bastante precisa. Kubernador. Desafortunadamente, carece de algunas características:

  • Sirve solo a un grupo.
  • No hay un modo de vista de lista (es decir, no se pueden 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 gestionar y solucionar problemas de aplicaciones que se ejecutan en un clúster, así como gestionar el propio clúster”.

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)

Desafortunadamente, Panel de Kubernetes realmente no ayuda con mis actividades de soporte y respuesta a incidentes porque:

  • no hay enlaces permanentes, por ejemplo cuando filtro recursos o cambio el orden de clasificación;
  • no existe una manera fácil de filtrar por estado; por ejemplo, ver todos los pods con el estado "Pendiente";
  • sólo se admite un clúster;
  • Los CRD no son compatibles (esta característica está en desarrollo);
  • sin columnas personalizadas (como columnas etiquetadas por tipo kubectl -L).

Vista operativa de Kubernetes (kube-ops-view)

"Observador del panel del sistema para el espacio del clúster K8".

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)

У Vista operativa de Kubernetes Un enfoque completamente diferente: esta herramienta solo muestra los nodos y pods del clúster usando WebGL, sin ningún detalle textual del objeto. Es excelente para obtener una descripción general rápida del estado del clúster (¿se están cayendo los pods?)*, pero no es adecuado para los casos de uso de soporte y respuesta a incidentes descritos anteriormente.

* Nota. traducir: En este sentido, también te puede interesar nuestro plugin mapa-estado-grafana, del que hablamos con más detalle en este artículo.

Informe de recursos de Kubernetes (kube-resource-report)

"Recopile solicitudes de recursos de clústeres de Kubernetes y pods, compárelas con el consumo de recursos y genere HTML estático".

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)

Informe de recursos de Kubernetes genera informes HTML estáticos sobre el uso de recursos y la distribución de costos entre equipos/aplicaciones en clústeres. El informe es algo útil para soporte y respuesta a incidentes porque le permite encontrar rápidamente el clúster donde está implementada la aplicación.

Nota. traducir: Un servicio y una herramienta también pueden ser útiles para ver información sobre la asignación de recursos y sus costos entre los proveedores de la nube. Costo de Kube, que revisamos publicado recientemente.

Octante

"Una plataforma web extensible para desarrolladores diseñada para proporcionar una mayor comprensión de la complejidad de los clústeres de Kubernetes".

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)

Octante, creado por VMware, es un producto nuevo que conocí hace relativamente poco tiempo. Con su ayuda, es conveniente explorar el clúster en una máquina local (incluso hay visualizaciones), pero aborda los problemas de soporte y respuesta a incidentes solo de forma limitada. Desventajas del octante:

  • Sin búsqueda de clústeres.
  • Funciona solo en la máquina local (no se implementa en un 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 con la estabilidad de Octant con los clusters de Zalando: en algunos CRD él estaba cayendo.

Presentamos la vista web de Kubernetes

"kubectl para la web".

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)

Después de analizar las opciones de interfaz disponibles para Kubernetes, decidí crear una nueva: Vista web de Kubernetes. Después de todo, de hecho, sólo necesito todo el poder. kubectl en la web, a saber:

  • disponibilidad de todas las operaciones (de solo lectura) para las que los usuarios prefieren usar kubectl;
  • todas las URL deben ser permanentes y representar la página en su forma original para que los colegas puedan compartirlas y utilizarlas en otras herramientas;
  • soporte para todos los objetos de Kubernetes, lo que te permitirá solucionar cualquier tipo de problema;
  • Las listas de recursos deben poder descargarse para seguir trabajando (en hojas de cálculo, herramientas CLI como grep) y almacenamiento (por ejemplo, para autopsias);
  • soporte para seleccionar recursos por etiqueta (similar a kubectl get .. -l);
  • la capacidad de crear listas combinadas de varios tipos de recursos (similar a kubectl get all) obtener una imagen operativa común entre colegas (por ejemplo, durante la respuesta a un incidente);
  • la capacidad de agregar enlaces profundos inteligentes personalizados a otras herramientas, como paneles, registradores, registros de aplicaciones, etc. facilitar la resolución de problemas/errores y la respuesta a incidentes;
  • La interfaz debe ser lo más simple posible (HTML puro) para evitar problemas aleatorios, como JavaScript congelado;
  • soporte para múltiples clusters para simplificar la interacción durante la consulta remota (por ejemplo, para recordar solo una URL);
  • Si es posible, el análisis situacional debe 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 de texto, por ejemplo, para que pueda señalar a sus colegas una sección específica en la descripción del recurso (una línea en YAML);
  • la capacidad de personalizar según los requisitos de un cliente específico, por ejemplo, permitiéndole crear plantillas de visualización especiales para CRD, sus propias vistas de tabla y cambiar estilos CSS;
  • herramientas para una mayor exploración en la línea de comando (por ejemplo, mostrar comandos completos kubectl, listo para copiar);

Más allá de las tareas resueltas en Kubernetes Web View (sin objetivos) se mantuvo:

  • abstracción de objetos de Kubernetes;
  • gestión de aplicaciones (por ejemplo, gestión de implementación, gráficos Helm, etc.);
  • operaciones de escritura (deben realizarse a través de herramientas seguras de CI/CD y/o GitOps);
  • hermosa interfaz (JavaScript, temas, etc.);
  • visualización (ver vista-ops-kube);
  • análisis de costos (ver informe-de-recursos-de-kube).

¿Cómo ayuda Kubernetes Web View con el soporte y la respuesta a incidentes?

Apoyar

  • Todos los enlaces son permanentes., lo que facilita el intercambio de información con colegas.
  • puedes crear tus ideas, por ejemplo, muestra todas las implementaciones y pods con una etiqueta específica en dos clústeres específicos (se pueden especificar varios nombres de clúster y tipos de recursos en el enlace, separados por comas).
  • Puedes referirte a líneas específicas en un archivo YAML objeto, lo que indica problemas potenciales en la especificación del objeto.

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)
Buscar por clústeres en Kubernetes Web View

Respuesta al incidente

  • búsqueda global (búsqueda global) le permite buscar objetos en todos los grupos.
  • Vistas de lista Puede mostrar todos los objetos con un determinado estado/columna en todos los clústeres (por ejemplo, necesitamos encontrar todos los pods con el estado "Pendiente").
  • Se pueden descargar listas de objetos. en formato de valores separados por tabulaciones (TSV) para su posterior análisis.
  • Enlaces externos personalizables Le permite cambiar a paneles relacionados y otras herramientas.

Anuncio de la vista web de Kubernetes (y una breve descripción general de otras IU web para Kubernetes)
Vista web de Kubernetes: lista de pods con estado "Pendiente" en todos los clústeres

Si desea probar Kubernetes Web View, le recomiendo que consulte documentación o mira demo en vivo.

Por supuesto, la interfaz podría ser mejor, pero por ahora Kubernetes Web View es una herramienta para "usuarios avanzados" que no rehuyen manipular las rutas URL manualmente si es necesario. Si tiene algún comentario/adición/sugerencia, comuníquese con conmigo en twitter!

Este artículo es una breve historia de los antecedentes que llevaron a la creación de Kubernetes Web View. ¡Más seguirán! (Nota. traducir: Se deben esperar en blog del autor.)

PD del traductor

Lea también en nuestro blog:

Fuente: habr.com

Añadir un comentario