
Para o pleno funcionamento do sistema, é essencial ter conhecimento das utilidades de linha de comando: no caso do Kubernetes, é o kubectl. Por outro lado, interfaces gráficas bem projetadas podem realizar a maior parte das tarefas comuns e abrir oportunidades adicionais na operação dos sistemas.maiorNo ano passado, publicamos a tradução de
uma pequena visão geral da interface web . O autor daquele artigo e da própria ferramenta é Henning Jacobs, da empresa Zalando, que posicionou a novidade como "kubectl para a web". Ele queria criar uma ferramenta com funcionalidades convenientes para interação no formato de suporte técnico (por exemplo, mostrar rapidamente um problema com um link) e para responder a incidentes, buscando problemas em muitos clusters ao mesmo tempo. Sua criação continua a se desenvolver atualmente (principalmente, por iniciativa do próprio autor). Atendendo a diversos clusters Kubernetes de diferentes escalas, também estamos interessados na possibilidade de oferecer aos clientes uma ferramenta de trabalho visual. Ao escolher a interface adequada, as seguintes funcionalidades foram cruciais para nós:
suporte para controle de acesso baseado em funções (RBAC);
- visualização do estado dos namespaces e dos primitivas padrão do Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
- acesso à linha de comando dentro do pod;
- visualização dos logs dos pods;
- visualização do estado dos pods (
- describe status
remoção de pods.); - Outras funções, como visualização dos recursos consumidos (em relação a pods/controladores/namespaces), criação/edição de primitivas do K8s, não são relevantes para nosso fluxo de trabalho.
Começaremos a visão geral com o Kubernetes Dashboard clássico, aceito como padrão por nós. Como o mundo não para (o que significa que novos GUI para Kubernetes estão sempre surgindo), também falaremos sobre suas alternativas atuais, resumindo tudo em uma tabela comparativa no final do artigo.
: Na visão geral, não iremos repetir as soluções já discutidas em
NB, no entanto — para uma visão completa — opções relevantes dela (K8Dash, Octant, Kubernetes Web View) estão incluídas na tabela final. 1. Kubernetes Dashboard
Página de documentação
- ;
- Licença: Apache 2.0;
- Licença: Apache 2.0;
- Em resumo: "Uma interface web universal para clusters Kubernetes. Ela permite que os usuários gerenciem aplicações em execução no cluster e solucionem problemas, além de gerenciar o próprio cluster."

Este é um painel de uso geral, considerado pelos autores do Kubernetes na documentação oficial. (embora por padrão). Ele é projetado para as necessidades do dia a dia e depuração de aplicações no cluster. Usamos ele como uma ferramenta visual leve e completa, permitindo fornecer aos desenvolvedores o acesso necessário e suficiente ao cluster. Seus recursos atendem a todas as suas necessidades que surgem durante o uso do cluster. (no demonstramos alguns recursos do painel). Como é fácil de adivinhar, isso significa que ele atende a todos os nossos requisitos listados acima.
Entre as principais funcionalidades do Kubernetes Dashboard:
- Navegação: visualização dos principais objetos K8s em relação aos namespaces.
- Com direitos de administrador, o painel mostra nós, namespaces e volumes persistentes. Para os nós, estão disponíveis estatísticas de uso de memória, CPU, alocação de recursos, métricas, status, eventos, etc.
- Visualização de aplicações implantadas nos namespaces, por tipo (Deployment, StatefulSet, etc.), conexões entre elas (ReplicaSet, Horizontal Pod Autoscaler), estatísticas gerais e personalizadas e informações.
- Visualização de serviços e Ingresss, bem como suas conexões com pods e endpoints.
- Visualização de objetos de arquivos e armazenamento: Persistent Volume e Persistent Volume Claim.
- Visualização e edição de ConfigMap e Secret.
- Visualização de logs.
- Acesso ao terminal de comando em contêineres.
Uma desvantagem significativa (no entanto, não para nós) — não há suporte para operação em múltiplos clusters. O projeto está ativamente sendo desenvolvido pela comunidade e suporta funções atuais com o lançamento de novas versões e especificações da API do Kubernetes: a versão mais recente do painel — de 22 de maio de 2020 — foi testada quanto à compatibilidade com o Kubernetes 1.18.
2. Lens
- ;
- ;
- (~4800 estrelas no GitHub);
- Licença: MIT;
- Em resumo: "Kubernetes IDE."

O projeto se posiciona como um ambiente de desenvolvimento integrado (IDE) completo para Kubernetes. Além disso, ele é otimizado para trabalhar com múltiplos clusters e um grande número de pods em execução (testado em 25 mil pods).
Principais características/funcionalidades do Lens:
- Aplicativo autônomo, que não requer a instalação de nada dentro do cluster (na verdade, para obter todas as métricas será necessário o Prometheus, mas é possível utilizar uma instalação já existente). A instalação "principal" é feita em um computador pessoal executando Linux, macOS ou Windows.
- Gerenciamento multi-cluster (suporta centenas de clusters).
- Visualização do estado do cluster em tempo real.
- Gráficos de uso de recursos e tendências com histórico baseado no Prometheus incorporado.
- Acesso ao terminal dos contêineres e nos nós do cluster.
- Suporte total ao Kubernetes RBAC.
Lançamento atual — a partir de 16 de junho de 2020. A versão inicial foi criada na empresa Kontena, e hoje toda a propriedade intelectual foi transferida para uma organização especial , chamada de "união de geeks nativos da nuvem e tecnólogos", que são responsáveis pela "manutenção e disponibilidade de software e produtos open source da Kontena."
Lens — o segundo projeto mais popular no GitHub da categoria GUI para Kubernetes, "perdendo" apenas para o próprio Kubernetes Dashboard. Todas as outras soluções open source que não pertencem à categoria CLI* são significativamente menos populares.
* Veja sobre K9s na parte bônus da revisão.
3. Kubernetic
- ;
- ;
- (200+ estrelas no GitHub);
- Licença: proprietária;
- Resumidamente: "Gerenciamento de cluster feito fácil."

Este é um aplicativo proprietário, que é instalado em um computador pessoal (suporta Linux, macOS, Windows). Seus autores prometem uma substituição completa da ferramenta de linha de comando, juntamente com a eliminação da necessidade de memorizar comandos e um aumento de dez vezes na velocidade de operação.
Uma das características interessantes da ferramenta é o suporte embutido a Helm charts, enquanto uma das desvantagens é a falta de métricas de desempenho de aplicativos.
Principais recursos do Kubernetic:
- Exibição amigável do estado do cluster. Uma tela para visualizar todos os objetos relacionados ao cluster e suas dependências; estado de prontidão vermelho/verde para todos os objetos; modo de visualização do estado do cluster com atualização de status em tempo real.
- Botões de ação rápida para excluir e escalar aplicativos.
- Suporte para operações multi-cluster.
- Trabalho simples com namespaces.
- Suporte a gráficos Helm 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 para o uso por uma pessoa em qualquer número de namespaces e clusters.
4. Kubevious
- ;
- ;
- (~500 estrelas no GitHub);
- Licença: Apache 2.0
- Em resumo: "Kubevious torna clusters Kubernetes, a configuração de aplicações e a visualização do seu estado seguras e fáceis de compreender."

A ideia do projeto é criar uma ferramenta destinada à análise e depuração de configurações de aplicações implantadas em clusters. Os autores se concentraram, primeiro de tudo, na implementação dessas funcionalidades, deixando aspectos mais gerais para depois.
Principais características e funções do Kubevious:
- Visualização do cluster de uma maneira orientada a aplicações: objetos inter-relacionados na interface são agrupados, formando uma hierarquia.
- Visualização clara das dependências nas configurações e das consequências em cascata das suas mudanças.
- Exibição de erros de configuração do cluster: uso incorreto de rótulos, portas perdidas, etc. (A propósito, se você está interessado nessas funcionalidades, preste atenção em , sobre o qual nós .)
- Além do ponto anterior, a detecção de contêineres potencialmente perigosos está disponível, ou seja, que têm privilégios excessivos (atributos
hostPID,hostNetwork,hostIPC, montagemdocker.socke assim por diante). - Sistema avançado de pesquisa no cluster (não apenas por nomes de objetos, mas também por suas propriedades).
- Ferramentas para planejamento de capacidade e otimização de recursos.
- Uma "máquina do tempo" integrada (capacidade de ver mudanças de configuração anteriores dos objetos).
- Gerenciamento RBAC através de uma tabela resumo 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 há um período de estabilização ou desaceleração no desenvolvimento. Se as versões anteriores foram lançadas com frequência, a última versão ( de 15 de abril de 2020) ficou aquém do ritmo inicial de desenvolvimento. Provavelmente, isso está relacionado ao pequeno número de colaboradores: na história do repositório, há apenas 4, e todo o trabalho real é feito por uma única pessoa.
5. Kubewise
- ;
- Licença: proprietária (se tornará Open Source);
- Em resumo: "Um cliente multiplataforma simples para Kubernetes."

Novo produto da VMware, inicialmente criado durante um hackathon interno (em junho de 2019). É instalado em um computador pessoal, funcionando com base em (suporta Linux, macOS e Windows) e requer kubectl na versão v1.14.0 ou superior.
Principais recursos do Kubewise:
- Interação na interface com as entidades mais utilizadas do Kubernetes: nós, namespaces, etc.
- Suporte a vários arquivos kubeconfig para diferentes clusters.
- Terminal com a capacidade de definir variáveis de ambiente.
KUBECONFIG. - Geração de arquivos kubeconfig personalizados para um namespace específico.
- Recursos avançados de segurança (RBAC, senhas, contas de serviço).
Até agora, o projeto tem apenas uma versão — a versão de 26 de novembro de 2019. Embora os autores planejassem lançá-la como Open Source desde o início, não conseguiram fazê-lo devido a problemas internos (não relacionados a questões técnicas). Em maio de 2020, os autores estavam trabalhando na próxima versão e ao mesmo tempo deveriam iniciar o processo de abertura do código.
6. Console OpenShift
- ;
- (~150 estrelas no GitHub);
- Licença: Apache 2.0;
- Em resumo: "UI para clusters OpenShift."

Embora essa interface web faça parte da distribuição OpenShift (onde é instalada usando um ), os autores a possibilidade de sua instalação/utilização também em instalações Kubernetes normais (vanilla).
O Console OpenShift está em desenvolvimento há um bom tempo, incorporando muitos recursos. Vamos mencionar os principais:
- Abordagem compartilhada da interface — duas "perspectivas" disponíveis no Console: para administradores e para desenvolvedores. O modo Developer perspective agrupa objetos de forma mais compreensível para os desenvolvedores (por aplicações) e orienta a interface para resolver tarefas típicas, como o deploy de aplicações, acompanhamento do status de builds/deploys e até edição de código através do Eclipse Che.
- Gerenciamento de cargas de trabalho, rede, armazenamento, permissões de acesso.
- Divisão lógica das cargas de trabalho em projetos e aplicativos. Em uma das últimas versões — v4.3 — um Project dashboard, exibindo dados familiares (números e status de deployments, pods, etc.; consumo de recursos e outras métricas) em relação aos projetos.
- Atualização em tempo real do estado do cluster, com as mudanças (eventos) ocorridas; visualização dos logs.
- Visualização de dados de monitoramento, com base em Prometheus, Alertmanager e Grafana.
- Gerenciamento de operadores, apresentados em .
- Gerenciamento de builds que são executados via Docker (do repositório especificado com Dockerfile), ou utilitários externos arbitrários.
NB: Não incluímos na comparação outros Distribuições Kubernetes (por exemplo, muito menos conhecidas ): embora a interface gráfica possa ser muito avançada, geralmente vem como parte de um stack integrado de um grande sistema. Contudo, se você acredita que faltam soluções plenamente funcionais na instalação vanilla do K8s, nos avise nos comentários.
Bônus
1. Portainer no Kubernetes em versão beta
- ;
- (~100 estrelas no GitHub);
- Licença: Zlib(?) (é a mesma do projeto principal).
Projeto da equipe do Portainer, que desenvolveu a popular interface de trabalho com Docker. Como o projeto está em estágio inicial de desenvolvimento (primeira e única versão beta em 16 de abril de 2020), não avaliamos suas funcionalidades. No entanto, pode ser de interesse para muitos: se for o seu caso, fique atento ao desenvolvimento.
2. IcePanel
- ;
- Licença: proprietária;
- Em resumo: "Editor visual para Kubernetes".

Este aplicativo desktop jovem foi criado para visualizar recursos Kubernetes em tempo real e gerenciá-los com uma interface simples no estilo arrastar e soltar. Atualmente, os objetos suportados incluem Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap e Secret. Em breve, promete-se adicionar suporte ao Helm. As principais desvantagens são o código fechado (com expectativa de abertura "de alguma forma") 3. k9s
(~7700 estrelas no GitHub);
- ;
- ;
- Em resumo: "Interface de console para Kubernetes, permitindo gerenciar o cluster com estilo".
- Licença: Apache 2.0;
- Em resumo: "Interface de console para Kubernetes que permite gerenciar o cluster de forma elegante."

A ferramenta apareceu apenas na seção bônus da análise porque oferece uma interface gráfica de console. No entanto, os desenvolvedores literalmente extrairam o máximo do terminal, oferecendo não apenas uma interface conveniente, mas também 6 temas pré-definidos, um sistema avançado de atalhos de teclado e aliases para comandos. A abordagem cuidadosa deles não se limitou à aparência: as capacidades do k9s são impressionantes: gerenciamento de recursos, exibição do estado do cluster, apresentação de recursos em uma estrutura hierárquica com dependências, visualização de logs, suporte a RBAC, extensão de funcionalidades através de plugins… Tudo isso agradou à ampla comunidade K8s: a quantidade de estrelas do projeto no GitHub é quase equivalente ao do painel oficial do Kubernetes!
4. Painéis de controle de aplicativos
E para concluir a análise — uma mini-categoria separada. Nela estão duas interfaces web, destinadas não para o gerenciamento abrangente de clusters Kubernetes, mas para o gerenciamento do que é implantado neles.
Como é bem sabido, uma das ferramentas mais maduras e amplamente utilizadas para o deployment de aplicativos complexos em Kubernetes é o Helm. Ao longo de seu tempo de existência, uma série de pacotes (Helm charts) foram acumulados para uma implantação simples . Portanto, é bastante lógico que tenham surgido ferramentas visuais correspondentes, permitindo gerenciar o ciclo de vida dos charts.
4.1. Monocular
- (1300+ estrelas no GitHub);
- Licença: Apache 2.0;
- Em resumo: "Um aplicativo web para buscar e descobrir Helm charts em diversos repositórios. Serve como base para o projeto Helm hub."

Este desenvolvimento dos criadores do Helm é instalado no Kubernetes e funciona dentro de um único cluster, cumprindo sua função proposta. No entanto, atualmente, o projeto quase não está em desenvolvimento. Seu principal propósito é manter 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 também já não está em desenvolvimento).
4.2. Kubeapps
- ;
- ;
- (~2100 estrelas no GitHub);
- Licença: Apache 2.0
- Em resumo: "Seu painel de aplicativos para Kubernetes".

Produto da Bitnami, que também é instalado no cluster Kubernetes, mas se diferencia do Monocular por seu foco inicial no trabalho com repositórios privados.
Principais recursos e características do Kubeapps:
- Visualizar e instalar Helm charts de repositórios.
- Verificar, atualizar e remover aplicativos baseados em Helm, instalados no cluster.
- Suporte para trabalhar com repositórios personalizados e privados de charts (suporta ChartMuseum e JFrog Artifactory).
- Visualização e trabalho com serviços externos — a partir do Catálogo de Serviços e dos Brokers de Serviços.
- Publicação de aplicativos instalados utilizando o mecanismo de Vínculos do Catálogo de Serviços.
- Suporte à autenticação e separação de direitos por meio do RBAC.
Tabela final
Abaixo está uma tabela resumida na qual tentamos consolidar e agregar as principais funcionalidades das interfaces visuais existentes para facilitar a comparação:
(A versão online da tabela .)
Conclusão
As interfaces gráficas para Kubernetes são um nicho bastante específico e jovem. No entanto, estão se desenvolvendo muito ativamente: já é possível encontrar tanto soluções bastante maduras quanto algumas bem novas, que ainda têm muito a evoluir. Elas são voltadas para diferentes opções de uso, oferecendo funcionalidades e aparência praticamente para todos os gostos. Esperamos que esta revisão ajude a encontrar uma ferramenta que atenda da melhor forma às necessidades atuais.
P.S.
Agradecemos pelas informações sobre a OpenShift Console para a tabela de comparação!
Confira também em nosso blog:
- «»;
- «»;
- «»;
- «».
Fonte: habr.com
