Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)

Nota. transl.: O autor do material orixinal é Henning Jacobs de Zalando. Creou unha nova interface web para traballar con Kubernetes, que se sitúa como "kubectl para a web". Por que apareceu un novo proxecto de código aberto e que criterios non cumprían as solucións existentes: le o seu artigo.

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)

Nesta publicación, reviso as distintas interfaces web de Kubernetes de código aberto, expoño os meus requisitos para unha IU universal e explico por que desenvolvín Kubernetes WebView — unha interface deseñada para facilitar a compatibilidade e resolución de problemas de varios clústeres á vez.

Casos de uso

En Zalando atendemos a un gran número de usuarios de Kubernetes (900+) e clusters (100+). Hai un par de casos de uso comúns que se beneficiarían dunha ferramenta web dedicada:

  1. comunicación cos compañeiros de apoio;
  2. responder aos incidentes e investigar as súas causas.

Apoiar

Segundo a miña experiencia, as comunicacións de soporte adoitan ser así:

— Axuda, o noso servizo XYZ non está dispoñible.
- Que ves cando actúas kubectl describe ingress ...?

Ou algo parecido para CRD:

— Teño algún problema co servizo de identificación...
- Que produce o comando? kubectl describe platformcredentialsset ...?

Esa comunicación adoita reducirse a introducir varias variacións do comando kubectl para identificar o problema. Como resultado, ambas as partes da conversa vense obrigadas a cambiar constantemente entre o terminal e o chat web, ademais de observar unha situación diferente.

Polo tanto, gustaríame que a interface web de Kubernetes permitise o seguinte:

  • os usuarios poderían intercambiar ligazóns e observa o mesmo;
  • axudaría evitar os erros humanos en soporte: por exemplo, iniciar sesión no clúster incorrecto na liña de comandos, erros tipográficos nos comandos da CLI, etc.;
  • permitiría xera as túas propias opinións para enviar aos compañeiros, é dicir, engadir columnas de etiquetas, mostrar moitos tipos de recursos nunha mesma páxina;
  • Idealmente, esta ferramenta web debería permitirche configurar ligazóns "profundas" a seccións específicas de YAML (por exemplo, sinalando un parámetro incorrecto que está a provocar fallos).

Resposta e análise de incidencias

Responder a incidentes de infraestrutura require conciencia da situación, a capacidade de avaliar o impacto e buscar patróns en clusters. Algúns exemplos da vida real:

  • Un servizo de produción crítico está a ter problemas e cómpre facelo atopar todos os recursos de Kubernetes por nome en todos os clústeressolucionar problemas;
  • os nós comezan a caer ao escalar e necesitas atopar todos os pods co estado "Pendente" en todos os clústerespara avaliar o alcance do problema;
  • usuarios individuais están informando dun problema con DaemonSet implantado en todos os clústeres e necesitan descubrilo O problema é total?.

A miña solución estándar nestes casos é algo así for i in $clusters; do kubectl ...; done. Obviamente, é posible desenvolver unha ferramenta que proporcione capacidades similares.

Interfaces web de Kubernetes existentes

O mundo de código aberto das interfaces web para Kubernetes non é moi grande*, polo que tentei recompilar máis información usando chilro:

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)

*A miña explicación sobre o número limitado de interfaces web para Kubernetes: os servizos na nube e os provedores de Kubernetes adoitan ofrecer os seus propios frontends, polo que o mercado da "boa" interface de usuario gratuíta de Kubernetes é relativamente pequeno.

A través dun tuit co que souben K8 Dash, Kubernator и Octante. Vexámolos e outras solucións de código aberto existentes, intentemos entender cales son.

K8 Dash

"K8Dash é a forma máis sinxela de xestionar un clúster de Kubernetes".

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)

K8 Dash Parece ben e séntese rápido, pero ten unha serie de desvantaxes para os casos de uso enumerados anteriormente:

  • Funciona só dentro dos límites dun clúster.
  • A clasificación e o filtrado son posibles, pero non teñen ligazóns permanentes.
  • Non hai soporte para as definicións de recursos personalizadas (CRD).

Kubernator

"Kubernator é unha IU alternativa para Kubernetes. A diferenza do Kubernetes Dashboard de alto nivel, ofrece un control de baixo nivel e unha excelente visibilidade de todos os obxectos do clúster coa posibilidade de crear outros novos, editalos e resolver conflitos. Ao ser unha aplicación totalmente do lado do cliente (como kubectl), non require ningún backend que non sexa o propio servidor da API de Kubernetes e tamén respecta as regras de acceso ao clúster.

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)

Esta é unha descrición bastante precisa Kubernator. Desafortunadamente, carece dalgunhas características:

  • Atende só a un clúster.
  • Non hai un modo de vista de lista (é dicir, non podes mostrar todos os pods co estado "Pendente").

Panel de control de Kubernetes

"Kubernetes Dashboard é unha interface web universal para clústeres de Kubernetes. Permite aos usuarios xestionar e solucionar problemas de aplicacións que se executan nun clúster, así como xestionar o propio clúster".

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)

Desafortunadamente, Panel de control de Kubernetes Realmente non axuda coas miñas actividades de apoio e resposta a incidentes porque:

  • non hai ligazóns permanentes, por exemplo cando filtro recursos ou cambio a orde de clasificación;
  • non hai un xeito sinxelo de filtrar por estado; por exemplo, ver todos os pods co estado "Pendente";
  • só se admite un clúster;
  • Os CRD non son compatibles (esta función está en desenvolvemento);
  • sen columnas personalizadas (como columnas etiquetadas por tipo kubectl -L).

Vista operativa de Kubernetes (kube-ops-view)

"System Dashboard Observer para K8s Cluster Space".

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)

У Vista operativa de Kubernetes Un enfoque completamente diferente: esta ferramenta só mostra os nodos e pods do clúster mediante WebGL, sen ningún detalle de obxectos textuais. É ideal para obter unha visión xeral rápida da saúde do clúster (están caendo os pods?)*, pero non é adecuado para os casos de uso de soporte e resposta a incidentes descritos anteriormente.

* Nota. transl.: Neste sentido, tamén che pode interesar o noso complemento grafana-statusmap, do que falamos con máis detalle en Este artigo.

Informe de recursos de Kubernetes (informe-recurso-kube)

"Recolle as solicitudes de recursos de clúster de pod e Kubernetes, compáraas co consumo de recursos e xera HTML estático".

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)

Informe de recursos de Kubernetes xera informes HTML estáticos sobre o uso de recursos e a distribución de custos entre os equipos/aplicacións en clústeres. O informe é algo útil para o soporte e a resposta a incidentes porque permite atopar rapidamente o clúster onde se implanta a aplicación.

Nota. transl.: Un servizo e unha ferramenta tamén poden ser útiles para ver información sobre a asignación de recursos e os seus custos entre os provedores de nube. Kubecost, que revisamos publicado recentemente.

Octante

"Unha plataforma web extensible para desenvolvedores deseñada para proporcionar unha maior comprensión da complexidade dos clústeres de Kubernetes".

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)

Octante, creado por VMware, é un produto novo do que aprendín hai relativamente pouco tempo. Coa súa axuda, é conveniente explorar o clúster nunha máquina local (incluso hai visualizacións), pero só aborda os problemas de soporte e resposta a incidentes de forma limitada. Desvantaxes de Octant:

  • Non hai busca de clúster.
  • Funciona só na máquina local (non se implementa nun clúster).
  • Non se poden ordenar/filtrar obxectos (só se admite o selector de etiquetas).
  • Non pode especificar columnas personalizadas.
  • Non pode enumerar obxectos por espazo de nomes.

Tamén tiven problemas coa estabilidade de Octant con clusters de Zalando: nalgúns CRD estaba caendo.

Presentación de Kubernetes Web View

"kubectl para a web".

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)

Despois de analizar as opcións de interface dispoñibles para Kubernetes, decidín crear unha nova: Kubernetes WebView. Despois de todo, de feito, só necesito todo o poder kubectl na web, a saber:

  • dispoñibilidade de todas as operacións (só lectura) para as que os usuarios prefiren usar kubectl;
  • todos os URL deben ser permanentes e representar a páxina na súa forma orixinal para que os compañeiros poidan compartilos e utilizalos noutras ferramentas;
  • soporte para todos os obxectos de Kubernetes, o que che permitirá resolver calquera tipo de problema;
  • As listas de recursos deberían poderse descargar para seguir traballando (en follas de cálculo, ferramentas CLI como grep) e almacenamento (por exemplo, para autopsias);
  • soporte para seleccionar recursos por etiqueta (similar a kubectl get .. -l);
  • a capacidade de crear listas combinadas de varios tipos de recursos (similares a kubectl get all) para obter unha imaxe operativa común entre os compañeiros (por exemplo, durante unha resposta a un incidente);
  • a posibilidade de engadir ligazóns profundas intelixentes personalizadas a outras ferramentas como paneis de control, rexistradores, rexistros de aplicacións, etc. para facilitar a resolución de problemas/solución de erros e a resposta a incidencias;
  • O frontend debe ser o máis sinxelo posible (HTML puro) para evitar problemas aleatorios, como JavaScript conxelado;
  • soporte para varios clústeres para simplificar a interacción durante a consulta remota (por exemplo, para lembrar só un URL);
  • Se é posible, debería simplificarse a análise da situación (por exemplo, con ligazóns para descargar recursos para todos os clústeres/espazos de nomes);
  • oportunidades adicionais para crear ligazóns flexibles e resaltar información de texto, por exemplo, para que poida apuntar os compañeiros a unha sección específica na descrición do recurso (unha liña en YAML);
  • a capacidade de personalizar os requisitos dun cliente específico, por exemplo, o que lle permite crear modelos de visualización especiais para CRD, as súas propias vistas de táboa e cambiar os estilos CSS;
  • ferramentas para unha exploración máis profunda na liña de comandos (por exemplo, mostrando comandos completos kubectl, listo para copiar);

Máis aló das tarefas resoltas en Kubernetes Web View (non goles) quedou:

  • abstracción de obxectos Kubernetes;
  • xestión de aplicacións (por exemplo, xestión de implantación, gráficos Helm, etc.);
  • operacións de escritura (deben facerse mediante ferramentas seguras CI/CD e/ou GitOps);
  • fermosa interface (JavaScript, temas, etc.);
  • visualización (ver vista kube-ops);
  • análise de custos (ver informe-recurso-kube).

Como axuda Kubernetes Web View coa asistencia e a resposta a incidentes?

Apoiar

  • Todas as ligazóns son permanentes, o que facilita o intercambio de información cos compañeiros.
  • Podes crear as túas ideas, por exemplo, amosa todos os Despliegues e Pods cunha etiqueta específica en dous clústeres específicos (na ligazón pódense especificar varios nomes de clúster e tipos de recursos, separados por comas).
  • Podes consultar liñas específicas nun ficheiro YAML obxecto, indicando problemas potenciais na especificación do obxecto.

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)
Busca por clústeres en Kubernetes Web View

Resposta ao incidente

  • Busca global (busca global) permítelle buscar obxectos en todos os clústeres.
  • Vistas de lista pode mostrar todos os obxectos cun determinado estado/columna en todos os clústeres (por exemplo, necesitamos atopar todos os pods co estado "Pendente").
  • Pódense descargar listas de obxectos en formato de valores separados por tabulacións (TSV) para a súa posterior análise.
  • Ligazóns externas personalizables Permítelle cambiar a paneis relacionados e outras ferramentas.

Anuncio da vista web de Kubernetes (e unha breve visión xeral doutras interfaces de usuario web para Kubernetes)
Kubernetes Web View: lista de pods co estado "Pendente" en todos os clústeres

Se queres probar Kubernetes Web View, recoméndoche que o fagas documentación ou mira demostración en directo.

Por suposto, a interface podería ser mellor, pero polo de agora Kubernetes Web View é unha ferramenta para "usuarios avanzados" que non evitan manipular as rutas URL manualmente se é necesario. Se tes algún comentario/engadido/suxestión, póñase en contacto comigo en Twitter!

Este artigo é unha breve historia dos antecedentes que levaron á creación de Kubernetes Web View. Seguirán máis! (Nota. transl.: Deberían esperarse en blogue do autor.)

PSdo tradutor

Lea tamén no noso blog:

Fonte: www.habr.com

Engadir un comentario