Visão geral das GUIs para Kubernetes

Visão geral das GUIs para Kubernetes

Para funcionar totalmente com o sistema, é importante conhecer os utilitários de linha de comando: no caso do Kubernetes, é o kubectl. Por outro lado, GUIs bem projetadas e bem pensadas podem funcionarоa maioria das tarefas usuais e abre oportunidades adicionais nos sistemas operacionais.

No ano passado publicamos uma tradução uma breve visão geral da UI da web para Kubernetes, dedicado ao anúncio da interface web Kubernetes WebView. O autor desse artigo e do próprio utilitário, Henning Jacobs, da empresa Zalando, posicionou o novo produto como um “kubectl para a web”. Ele queria criar uma ferramenta com recursos convenientes para interação em formato de suporte técnico (por exemplo, mostrar rapidamente um problema com um link da web) e para responder a incidentes, procurando problemas em vários clusters ao mesmo tempo. Sua ideia ainda está sendo desenvolvida hoje (principalmente pelo próprio autor).

Atendendo a muitos clusters Kubernetes de diferentes tamanhos, também estamos interessados ​​na capacidade de fornecer aos clientes uma ferramenta de trabalho visual. Ao escolher uma interface adequada, os seguintes recursos foram fundamentais para nós:

  • apoio à diferenciação dos direitos dos utilizadores (RBAC);
  • visualização do estado do namespace e das primitivas padrão do Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • obter acesso à linha de comando dentro do pod;
  • visualizar registros de pod;
  • visualizar o status dos pods (describe status);
  • removendo vagens.

Outras funções, como visualizar recursos consumidos (por pods/controladores/namespaces), criar/editar primitivas K8s, não são relevantes em nosso fluxo de trabalho.

Começaremos a revisão com o clássico Kubernetes Dashboard, que é adotado como nosso padrão. Como o mundo não para (o que significa que novas GUIs estão surgindo no Kubernetes), falaremos também sobre suas alternativas atuais, resumindo tudo em uma tabela comparativa no final do artigo.

NB: Na revisão não iremos repetir as soluções que já foram consideradas em último artigo, no entanto - para fins de integridade - as opções relevantes dele (K8Dash, Octant, Kubernetes Web View) estão incluídas na tabela final.

1. Painel Kubernetes

  • Página de documentação;
  • repositório (mais de 8000 estrelas do GitHub);
  • Licença: Apache 2.0;
  • Resumindo: “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.”

Visão geral das GUIs para Kubernetes

Este é um painel de uso geral coberto pelos autores do Kubernetes na documentação oficial (mas não implantável padrão). Destina-se às necessidades de operação diária e depuração de aplicações em um cluster. Nós o usamos aqui como uma ferramenta visual leve e completa que nos permite fornecer aos desenvolvedores o acesso necessário e suficiente ao cluster. Suas capacidades cobrem todas as necessidades que surgem no processo de utilização do cluster (em Este artigo demonstramos algumas características do painel). Como você pode facilmente adivinhar, isso significa que ele atende a todos os requisitos listados acima.

Entre as principais funcionalidades do Kubernetes Dashboard:

  • Navegação: Visualize os principais objetos K8s por namespace.
  • Se você tiver direitos de administrador, o painel mostrará nós, namespaces e volumes persistentes. Estatísticas sobre uso de memória e processador, alocação de recursos, métricas, status, eventos, etc. estão disponíveis para nós.
  • Visualize aplicativos implantados no namespace por tipo (Deployment, StatefulSet etc.), conexões entre eles (ReplicaSet, Horizontal Pod Autoscaler), estatísticas e informações gerais e personalizadas.
  • Visualize serviços e Ingress, bem como suas conexões com pods e endpoints.
  • Visualize objetos de arquivo e armazenamentos: Volume Persistente e Declaração de Volume Persistente.
  • Visualize e edite ConfigMap e Secret.
  • Ver registros.
  • Acesso à linha de comando em contêineres.

Uma desvantagem significativa (mas não para nós) é que não há suporte para operação em vários clusters. O projeto é desenvolvido ativamente pela comunidade e oferece suporte às funções atuais com o lançamento de novas versões e especificações da API Kubernetes: a versão mais recente do painel é v2.0.1 22 de maio de 2020 – Testado para compatibilidade com Kubernetes 1.18.

2. lente

Visão geral das GUIs para Kubernetes

O projeto está posicionado como um ambiente de desenvolvimento integrado (IDE) completo para Kubernetes. Além disso, é otimizado para trabalhar com muitos clusters e um grande número de pods rodando neles (testado em 25 mil pods).

Principais recursos/capacidades do Lens:

  • Um aplicativo independente que não requer instalação de nada dentro do cluster (mais precisamente, o Prometheus é necessário para obter todas as métricas, mas você também pode usar uma instalação existente para isso). A instalação “principal” é realizada em um computador pessoal rodando Linux, macOS ou Windows.
  • Gerenciamento de vários clusters (centenas de clusters suportados).
  • Visualização do estado do cluster em tempo real.
  • Gráficos e tendências de uso de recursos com histórico baseado no Prometheus integrado.
  • Acesso à linha de comando de contêineres e nós de cluster.
  • Suporte total para Kubernetes RBAC.

Lançamento atual - 3.5.0 datado de 16 de junho de 2020. A versão inicial foi criada na Kontena, e hoje toda a propriedade intelectual foi transferida para uma organização especial Laboratórios Lakeland, chamada de “uma associação de geeks e tecnólogos nativos da nuvem”, responsável por “preservar e disponibilizar software de código aberto e produtos Kontena”.

Lens é o segundo projeto mais popular no GitHub na categoria GUI para Kubernetes, atrás apenas do próprio Kubernets Dashboard. Todas as outras soluções de código aberto que não estão na categoria CLI* são significativamente inferiores em popularidade.

*Veja sobre K9s na parte bônus da análise.

3. Kubernético

Visão geral das GUIs para Kubernetes

Este é um aplicativo proprietário instalado em um computador pessoal (são suportados Linux, macOS, Windows). Seus autores prometem uma substituição completa do utilitário de linha de comando e, com ele, não há necessidade de lembrar comandos e até um aumento de dez vezes na velocidade operacional.

Um dos recursos interessantes da ferramenta é o suporte integrado para gráficos Helm, mas uma das desvantagens é a falta de métricas de desempenho do aplicativo.

Principais recursos do Kubernetic:

  • Exibição conveniente do status do cluster. Uma tela para visualizar todos os objetos do cluster relacionados e suas dependências; estado pronto vermelho/verde para todos os objetos; modo de visualização de status do cluster com atualizações de status em tempo real.
  • Botões de ação rápida para excluir e dimensionar o aplicativo.
  • Suporte para operação de vários clusters.
  • Trabalho fácil com namespaces.
  • Suporte para gráficos e repositórios Helm (incluindo os privados). Instalação e gerenciamento de gráficos na interface web.

O custo atual do produto é um pagamento único de 30 euros pela sua utilização por uma pessoa para qualquer número de namespaces e clusters.

4. Kubevio

  • site;
  • apresentação;
  • repositório (~500 estrelas do GitHub);
  • Licença: Apache 2.0
  • Resumindo: “O Kubevious torna os clusters Kubernetes, a configuração do aplicativo e a visibilidade do status do aplicativo seguros e fáceis de entender.”

Visão geral das GUIs para Kubernetes

A ideia do projeto é criar uma ferramenta projetada para analisar e depurar configurações de aplicações implantadas em um cluster. Os autores focaram principalmente na implementação desses recursos, deixando coisas mais gerais para depois.

Principais recursos e funções do Kubevious:

  • Visualize o cluster de maneira centrada na aplicação: objetos interconectados na interface são agrupados em uma hierarquia.
  • Exiba visualmente as dependências nas configurações e as consequências em cascata de suas alterações.
  • Exibe erros de configuração de cluster: uso incorreto de rótulos, portas perdidas, etc. (A propósito, se você estiver interessado neste recurso, preste atenção em Polarissobre o qual nós já escreveu.)
  • Além do ponto anterior, está disponível a detecção de recipientes potencialmente perigosos, ou seja, ter muitos privilégios (atributos hostPID, hostNetwork, hostIPC, montagem docker.sock etc).
  • Um sistema avançado de pesquisa de clusters (não apenas por nomes de objetos, mas também por suas propriedades).
  • Ferramentas para planejamento de capacidade e otimização de recursos.
  • “Máquina do tempo” integrada (a capacidade de ver alterações ocorridas anteriormente na configuração dos objetos).
  • Gerenciando RBAC usando uma tabela resumida interconectada de Roles, RoleBindings, ServiceAccounts.
  • Funciona apenas com um cluster.

O projeto tem uma história muito curta (o primeiro lançamento ocorreu em 11 de fevereiro de 2020) e parece que houve um período de estabilização ou desaceleração no desenvolvimento. Se as versões anteriores foram lançadas com frequência, então a versão mais recente (v0.5 datado de 15 de abril de 2020) ficou aquém do ritmo inicial de desenvolvimento. Isto provavelmente se deve ao pequeno número de colaboradores: na história do repositório existem apenas 4 deles, e todo o trabalho propriamente dito é realizado por uma pessoa.

5. Kubewise

  • Página do projeto;
  • Licença: proprietária (se tornará Open Source);
  • Resumindo: “Um cliente simples e multiplataforma para Kubernetes.”

Visão geral das GUIs para Kubernetes

Um novo produto da VMware, originalmente criado como parte de um hackathon interno (em junho de 2019). Instalado em um computador pessoal, funciona com base Elétron (suportado por Linux, macOS e Windows) e requer kubectl v1.14.0 ou posterior.

Principais recursos do Kubewise:

  • Interação de interface com as entidades Kubernetes mais comumente usadas: nós, namespaces, etc.
  • Suporte para vários arquivos kubeconfig para diferentes clusters.
  • Terminal com a capacidade de definir uma variável de ambiente KUBECONFIG.
  • Gerando arquivos kubeconfig personalizados para um determinado namespace.
  • Recursos avançados de segurança (RBAC, senhas, contas de serviço).

Até o momento o projeto possui apenas um lançamento - versão 1.1.0 datado de 26 de novembro de 2019. Além disso, os autores planejaram lançá-lo imediatamente como Open Source, mas devido a problemas internos (não relacionados a questões técnicas) não conseguiram fazê-lo. Em maio de 2020, os autores estão trabalhando no próximo lançamento e devem iniciar o processo de código aberto ao mesmo tempo.

6. Console OpenShift

Visão geral das GUIs para Kubernetes

Apesar de esta interface web fazer parte da distribuição OpenShift (lá ela é instalada usando operador especial), autores forneceram a capacidade de instalá-lo/usá-lo em instalações regulares (vanilla) do Kubernetes.

O OpenShift Console está em desenvolvimento há muito tempo, por isso incorporou muitas funções. Mencionemos os principais:

  • Uma abordagem compartilhada da interface - duas “perspectivas” dos recursos disponíveis no Console: para administradores e para desenvolvedores. Modo Perspectiva do desenvolvedor agrupa objetos de uma forma mais compreensível para os desenvolvedores (por aplicativo) e concentra a interface na resolução de tarefas típicas como implantação de aplicativos, rastreamento do status de construção/implantação e até mesmo edição de código por meio do Eclipse Che.
  • Gerencie cargas de trabalho, rede, armazenamento e direitos de acesso.
  • Separação lógica para cargas de trabalho de projetos e aplicativos. Em uma das versões mais recentes - v4.3 - apareceu специальный Painel do projeto, exibindo os dados usuais (número e status de implantações, pods, etc.; consumo de recursos e outras métricas) em uma seção transversal de projetos.
  • Exibição atualizada em tempo real do status do cluster e das alterações (eventos) ocorridas nele; visualizando registros.
  • Visualize dados de monitoramento baseados em Prometheus, Alertmanager e Grafana.
  • Gerenciando operadores representados em Operador Hub.
  • Gerenciar compilações executadas via Docker (de um repositório especificado com um Dockerfile) S2I ou utilitários externos arbitrários.

NB: Não adicionamos outros à comparação Distribuições Kubernetes (por exemplo, muito menos famoso Kubesphere): apesar de a interface gráfica neles poder ser muito avançada, ela geralmente vem como parte da pilha integrada de um grande sistema. Porém, se você acha que faltam algumas soluções totalmente funcionais na instalação do vanilla K8s, informe-nos nos comentários.

bônus

1. Portainer no Kubernetes em beta

  • site;
  • repositório (~100 estrelas do GitHub);
  • Licença: Zlib(?) (igual ao projeto pai).

Um projeto da equipe Portainer, que desenvolveu a popular interface de mesmo nome para trabalhar com Docker. Como o projeto está em fase inicial de desenvolvimento (a primeira e única versão beta saiu 16 de abril de 2020), não avaliamos seus recursos. No entanto, pode ser do interesse de muitos: se isso soa como você, acompanhe o desenvolvimento.

2. Painel de gelo

  • site;
  • Licença: proprietária;
  • Resumindo: “Editor Visual Kubernetes”.

Visão geral das GUIs para Kubernetes

Este jovem aplicativo de desktop tem como objetivo visualizar e gerenciar recursos do Kubernetes em tempo real com uma interface simples de arrastar e soltar. Os objetos atualmente suportados são Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap e Secret. Eles prometem adicionar suporte ao Helm em breve. As principais desvantagens são que o código é fechado (espera-se abrindo "de alguma forma") e falta de suporte para Linux (até agora apenas versões para Windows e macOS estão disponíveis, embora isso provavelmente seja apenas uma questão de tempo).

3.k9s

  • site;
  • Demonstração;
  • repositório (~7700 estrelas do GitHub);
  • Licença: Apache 2.0;
  • Resumindo: “Uma interface de console para Kubernetes que permite gerenciar seu cluster com estilo”.

Visão geral das GUIs para Kubernetes

O utilitário só foi incluído na parte bônus da análise porque oferece uma GUI de console. No entanto, os autores literalmente tiraram o máximo proveito do terminal, oferecendo não apenas uma interface conveniente, mas também 6 temas predefinidos e um sistema desenvolvido de atalhos de teclado e aliases para comandos. Sua abordagem completa não se limitou à aparência: as capacidades do k9s são agradavelmente impressionantes: gerenciamento de recursos, exibição do estado do cluster, exibição de recursos em uma visão hierárquica com dependências, visualização de logs, suporte a RBAC, expansão de capacidades através de plugins... Tudo isso agradou a ampla comunidade K8s: quantidade O projeto estrela do GitHub é quase tão bom quanto o painel oficial do Kubernetes!

4. Painéis de controle de aplicativos

E no final da revisão - uma minicategoria separada. Inclui duas interfaces web projetadas não para gerenciamento complexo de clusters Kubernetes, mas para gerenciar o que está implantado neles.

Como você sabe, uma das ferramentas mais maduras e difundidas para implantação de aplicações complexas no Kubernetes é o Helm. Durante o período de sua existência, muitos pacotes (gráficos Helm) foram acumulados para fácil implantação muitos aplicativos populares. Portanto, é bastante lógico que apareçam ferramentas visuais apropriadas para ajudar a gerenciar o ciclo de vida dos gráficos.

4.1. Monóculo

  • repositório (mais de 1300 estrelas do GitHub);
  • Licença: Apache 2.0;
  • Resumindo: “Aplicativo da Web para pesquisar e descobrir gráficos Helm em vários repositórios. Serve de base para o projeto do hub Helm."

Visão geral das GUIs para Kubernetes

Este desenvolvimento dos autores do Helm é instalado no Kubernetes e executado dentro de um cluster, executando a tarefa atribuída. No entanto, atualmente o projeto não está em desenvolvimento. Seu principal objetivo é apoiar a existência do Helm Hub. Para outras necessidades, os autores recomendam o Kubeapps (veja abaixo) ou o Red Hat Automation Broker (parte do OpenShift, mas que também não está mais em desenvolvimento).

4.2. Kubeapps

Visão geral das GUIs para Kubernetes

Produto da Bitnami, que também é instalado em um cluster Kubernetes, mas difere do Monocular pelo foco inicial em trabalhar com repositórios privados.

Principais recursos e funcionalidades do Kubeapps:

  • Visualize e instale gráficos do Helm de repositórios.
  • Verifique, atualize e remova aplicativos baseados em Helm instalados no cluster.
  • Suporte para trabalhar com repositórios de gráficos personalizados e privados (suporta ChartMuseum e JFrog Artifactory).
  • Visualize e trabalhe com serviços externos - do Catálogo de Serviços e dos Agentes de Serviços.
  • Publicação de aplicativos instalados usando o mecanismo Service Catalog Bindings.
  • Suporte para autenticação e separação de direitos usando RBAC.

Mesa final

Abaixo está uma tabela resumo na qual tentamos resumir e agregar as principais capacidades das interfaces visuais existentes para facilitar a comparação:

Visão geral das GUIs para Kubernetes
(Versão online da tabela disponível no Google Docs.)

Conclusão

As interfaces gráficas para Kubernetes são um nicho bastante específico e jovem. No entanto, está a desenvolver-se de forma muito ativa: já é possível encontrar soluções bastante maduras e soluções muito jovens que ainda têm espaço para crescer. Eles atendem a uma variedade de aplicações, oferecendo recursos e aparência que atendem a quase todos os gostos. Esperamos que esta análise o ajude a escolher a ferramenta que melhor atende às suas necessidades atuais.

PS

Obrigado kvaps para os dados do OpenShift Console para a tabela de comparação!

Leia também em nosso blog:

Fonte: habr.com

Adicionar um comentário