Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)

Observação. trad.: O autor do material original é Henning Jacobs da Zalando. Ele criou uma nova interface web para trabalhar com Kubernetes, que é posicionada como “kubectl para a web”. Por que surgiu um novo projeto de código aberto e quais critérios as soluções existentes não atenderam - leia seu artigo.

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)

Nesta postagem, reviso as várias interfaces da web de código aberto do Kubernetes, descrevo meus requisitos para uma UI universal e explico por que desenvolvi Kubernetes WebView — uma interface projetada para facilitar o suporte e a solução de problemas de vários clusters ao mesmo tempo.

Casos de uso

Na Zalando atendemos um grande número de usuários de Kubernetes (900+) e clusters (100+). Existem alguns casos de uso comuns que se beneficiariam de uma ferramenta web dedicada:

  1. comunicação com colegas para suporte;
  2. responder a incidentes e investigar suas causas.

apoio

Na minha experiência, as comunicações de suporte geralmente são assim:

— Socorro, nosso serviço XYZ não está disponível!
- O que você vê quando se apresenta kubectl describe ingress ...?

Ou algo semelhante para CRD:

— Estou com algum problema com o serviço de identificação...
— O que o comando produz? kubectl describe platformcredentialsset ...?

Essa comunicação geralmente se resume a inserir várias variações do comando kubectl para identificar o problema. Como resultado, ambas as partes da conversa são forçadas a alternar constantemente entre o terminal e o chat web, além de observarem uma situação diferente.

Portanto, gostaria que o front-end da web do Kubernetes permitisse o seguinte:

  • os usuários poderiam trocar links e observe a mesma coisa;
  • ajudaria evite erros humanos no suporte: por exemplo, login no cluster errado na linha de comando, erros de digitação em comandos CLI, etc.;
  • permitiria gerar suas próprias visualizações enviar para colegas, ou seja, adicionar colunas de tags, exibir vários tipos de recursos em uma página;
  • Idealmente, esta ferramenta web deve permitir que você defina links "profundos" para seções específicas do YAML (por exemplo, apontando um parâmetro incorreto que está causando falhas).

Resposta e análise de incidentes

A resposta a incidentes de infraestrutura requer consciência situacional, capacidade de avaliar o impacto e de procurar padrões em clusters. Alguns exemplos da vida real:

  • Um serviço de produção crítico está com problemas e você precisa encontre todos os recursos do Kubernetes por nome em todos os clusterspara solucionar problemas;
  • nós começam a cair durante o dimensionamento e você precisa encontre todos os pods com status “Pendente” em todos os clustersavaliar a extensão do problema;
  • usuários individuais estão relatando um problema com o DaemonSet implantado em todos os clusters e precisam descobrir O problema é total?.

Minha solução padrão nesses casos é algo como for i in $clusters; do kubectl ...; done. Obviamente, é possível desenvolver uma ferramenta que forneça capacidades semelhantes.

Interfaces da web existentes do Kubernetes

O mundo de código aberto das interfaces web para Kubernetes não é muito grande*, então tentei reunir mais informações usando Twitter:

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)

*Minha explicação para o número limitado de interfaces da web para Kubernetes: serviços em nuvem e fornecedores de Kubernetes geralmente oferecem seus próprios front-ends, portanto, o mercado para “boas” interfaces de usuário gratuitas do Kubernetes é relativamente pequeno.

Através de um tweet eu aprendi sobre K8Dash, Kubernator и Oitante. Vejamos eles e outras soluções Open Source existentes, vamos tentar entender o que são.

K8Dash

“K8Dash é a maneira mais simples de gerenciar um cluster Kubernetes.”

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)

K8Dash Parece bom e rápido, mas tem uma série de desvantagens para os casos de uso listados acima:

  • Funciona apenas dentro dos limites de um cluster.
  • A classificação e a filtragem são possíveis, mas não possuem links permanentes.
  • Não há suporte para CRDs (definições de recursos personalizados).

Kubernator

“Kubernator é uma UI alternativa para Kubernetes. Ao contrário do painel Kubernetes de alto nível, ele fornece controle de baixo nível e excelente visibilidade de todos os objetos no cluster, com a capacidade de criar novos, editá-los e resolver conflitos. Por ser um aplicativo inteiramente do lado do cliente (como o kubectl), ele não requer nenhum back-end além do próprio servidor API Kubernetes e também respeita as regras de acesso ao cluster.”

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)

Esta é uma descrição bastante precisa Kubernator. Infelizmente, faltam alguns recursos:

  • Atende apenas um cluster.
  • Não há modo de visualização de lista (ou seja, você não pode exibir todos os pods com status “Pendente”).

Painel do Kubernetes

“Kubernetes Dashboard é uma interface web universal para clusters Kubernetes. Ele permite que os usuários gerenciem e solucionem problemas de aplicativos em execução em um cluster, bem como gerenciem o próprio cluster.”

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)

Infelizmente, Painel do Kubernetes realmente não ajuda em minhas atividades de suporte e resposta a incidentes porque:

  • não há links permanentes, por exemplo, quando filtro recursos ou altero a ordem de classificação;
  • não há uma maneira fácil de filtrar por status - por exemplo, ver todos os pods com status “Pendente”;
  • apenas um cluster é compatível;
  • CRDs não são suportados (este recurso está em desenvolvimento);
  • nenhuma coluna personalizada (como colunas rotuladas por tipo kubectl -L).

Visão operacional do Kubernetes (kube-ops-view)

"Observador do painel do sistema para espaço de cluster K8s."

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)

У Visão operacional do Kubernetes Uma abordagem completamente diferente: esta ferramenta mostra apenas nós e pods de cluster usando WebGL, sem quaisquer detalhes textuais do objeto. É ótimo para uma rápida visão geral da integridade do cluster (os pods estão caindo?)*, mas não é adequado para os casos de uso de suporte e resposta a incidentes descritos acima.

* Observação. trad.: Nesse sentido, você também pode se interessar pelo nosso plugin grafana-statusmap, sobre o qual falamos com mais detalhes em Este artigo.

Relatório de recursos do Kubernetes (kube-resource-report)

“Colete solicitações de recursos de pod e cluster Kubernetes, compare-as com o consumo de recursos e gere HTML estático.”

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)

Relatório de recursos do Kubernetes gera relatórios HTML estáticos sobre uso de recursos e distribuição de custos entre equipes/aplicativos em clusters. O relatório é um tanto útil para suporte e resposta a incidentes porque permite encontrar rapidamente o cluster onde o aplicativo está implantado.

Observação. trad.: Um serviço e uma ferramenta também podem ser úteis na visualização de informações sobre a alocação de recursos e seus custos entre provedores de nuvem Kubecost, que revisamos publicado recentemente.

Oitante

"Uma plataforma web extensível para desenvolvedores projetada para fornecer maior compreensão da complexidade dos clusters Kubernetes."

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)

Oitante, criado pela VMware, é um novo produto que aprendi há relativamente pouco tempo. Com sua ajuda, é conveniente explorar o cluster em uma máquina local (existem até visualizações), mas ele aborda questões de suporte e resposta a incidentes apenas de forma limitada. Desvantagens do Octante:

  • Nenhuma pesquisa de cluster.
  • Funciona apenas na máquina local (não é implantado em um cluster).
  • Não é possível classificar/filtrar objetos (somente o seletor de rótulo é compatível).
  • Você não pode especificar colunas personalizadas.
  • Você não pode listar objetos por namespace.

Também tive problemas com a estabilidade do Octant com clusters Zalando: em alguns CRDs ele estava caindo.

Apresentando o Kubernetes Web View

"kubectl para a web".

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)

Após analisar as opções de interface disponíveis para Kubernetes, decidi criar uma nova: Kubernetes WebView. Afinal, na verdade, eu só preciso de todo o poder kubectl na web, a saber:

  • disponibilidade de todas as operações (somente leitura) para as quais os usuários preferem usar o kubectl;
  • todas as URLs devem ser permanentes e representar a página em sua forma original para que colegas possam compartilhá-las e utilizá-las em outras ferramentas;
  • suporte para todos os objetos Kubernetes, o que permitirá resolver qualquer tipo de problema;
  • listas de recursos devem poder ser baixadas para trabalhos futuros (em planilhas, ferramentas CLI como grep) e armazenamento (por exemplo, para necropsias);
  • suporte para seleção de recursos por rótulo (semelhante a kubectl get .. -l);
  • a capacidade de criar listas combinadas de vários tipos de recursos (semelhantes a kubectl get all) obter uma imagem operacional comum entre colegas (por exemplo, durante uma resposta a incidente);
  • a capacidade de adicionar links diretos inteligentes personalizados a outras ferramentas, como painéis, registradores, registros de aplicativos, etc. facilitar a solução de problemas/resolução de erros e a resposta a incidentes;
  • O frontend deve ser o mais simples possível (HTML puro) para evitar problemas aleatórios, como JavaScript congelado;
  • suporte para múltiplos clusters para simplificar a interação durante consultoria remota (por exemplo, para lembrar apenas uma URL);
  • Se possível, a análise situacional deve ser simplificada (por exemplo, com links para download de recursos para todos os clusters/namespaces);
  • oportunidades adicionais para criar links flexíveis e destacar informações de texto, por exemplo, para que você possa direcionar colegas para uma seção específica na descrição do recurso (uma linha em YAML);
  • a capacidade de personalizar de acordo com os requisitos de um cliente específico, por exemplo, permitindo criar modelos de exibição especiais para CRDs, suas próprias visualizações de tabela e alterar estilos CSS;
  • ferramentas para exploração adicional na linha de comando (por exemplo, mostrando comandos completos kubectl, pronto para copiar);

Além das tarefas resolvidas no Kubernetes Web View (não objetivos) permaneceu:

  • abstração de objetos Kubernetes;
  • gerenciamento de aplicativos (por exemplo, gerenciamento de implantação, gráficos Helm, etc.);
  • operações de gravação (devem ser feitas por meio de ferramentas seguras de CI/CD e/ou GitOps);
  • interface bonita (JavaScript, temas, etc.);
  • visualização (ver kube-ops-view);
  • análise de custos (ver relatório de recurso kube).

Como o Kubernetes Web View ajuda no suporte e na resposta a incidentes?

apoio

  • Todos os links são permanentes, o que facilita a troca de informações com os colegas.
  • Você pode criar suas ideias, por exemplo, exiba todas as implantações e pods com um rótulo específico em dois clusters específicos (vários nomes de cluster e tipos de recursos podem ser especificados no link, separados por vírgulas).
  • Você pode consultar linhas específicas em um arquivo YAML objeto, indicando possíveis problemas na especificação do objeto.

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)
Pesquise por clusters no Kubernetes Web View

Resposta a Incidentes

  • Pesquisa global (pesquisa global) permite pesquisar objetos em todos os clusters.
  • Visualizações de lista pode exibir todos os objetos com um determinado estado/coluna em todos os clusters (por exemplo, precisamos encontrar todos os pods com o status “Pendente”).
  • Listas de objetos podem ser baixadas em formato de valor separado por tabulação (TSV) para análise posterior.
  • Links externos personalizáveis Permite alternar para painéis relacionados e outras ferramentas.

Anúncio do Kubernetes Web View (e uma breve visão geral de outras UIs da web para Kubernetes)
Kubernetes Web View: lista de pods com status “Pendente” em todos os clusters

Se você quiser experimentar o Kubernetes Web View, recomendo dar uma olhada documentação ou olhar para demonstração ao vivo.

Claro, a interface poderia ser melhor, mas por enquanto o Kubernetes Web View é uma ferramenta para “usuários avançados” que não hesitam em manipular caminhos de URL manualmente, se necessário. Se você tiver algum comentário/adição/sugestão, entre em contato comigo no Twitter!

Este artigo é um breve histórico dos antecedentes que levaram à criação do Kubernetes Web View. Mais virão! (Observação. trad.: Eles devem ser esperados em blog do autor.)

PSdo tradutor

Leia também em nosso blog:

Fonte: habr.com

Adicionar um comentário