{"id":38369,"date":"2019-10-31T22:23:18","date_gmt":"2019-10-31T19:23:18","guid":{"rendered":"https:\/\/prohoster.info\/blog\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes\/"},"modified":"2019-10-31T22:23:18","modified_gmt":"2019-10-31T19:23:18","slug":"anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes","title":{"rendered":"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Nota do tradutor.<\/b>: Autor do material original \u2014 Henning Jacobs da Zalando. Ele criou uma nova interface web para trabalhar com Kubernetes, que \u00e9 posicionada como \u00abkubectl para a web\u00bb. Por que o novo projeto Open Source surgiu e quais crit\u00e9rios n\u00e3o foram atendidos pelas solu\u00e7\u00f5es j\u00e1 existentes \u2014 leia em seu artigo.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/82abbfbfaeb30adb000b749cc97809e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNesta publica\u00e7\u00e3o, analiso v\u00e1rias interfaces web de Kubernetes com c\u00f3digo aberto, apresento minhas exig\u00eancias para uma UI universal e explico por que desenvolvi <noindex><a rel=\"nofollow\" href=\"https:\/\/codeberg.org\/hjacobs\/kube-web-view\/\">Visualiza\u00e7\u00e3o Web do Kubernetes<\/a><\/noindex> \u2014 uma interface destinada a facilitar o suporte e a resolu\u00e7\u00e3o de problemas em m\u00faltiplos clusters ao mesmo tempo.<\/p>\n<h2>Casos de uso<\/h2>\n<p>\nNa Zalando, atendemos a um grande n\u00famero de usu\u00e1rios do Kubernetes (mais de 900) e clusters (mais de 100). Existem alguns casos t\u00edpicos de uso onde uma ferramenta web especializada seria muito \u00fatil:<\/p>\n<ol>\n<li> comunica\u00e7\u00e3o com colegas durante o suporte;<\/li>\n<li> resposta a incidentes e investiga\u00e7\u00e3o de suas causas.<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Suporte<\/h3>\n<p>\nNa minha experi\u00eancia, a comunica\u00e7\u00e3o durante o suporte muitas vezes acontece da seguinte maneira:<\/p>\n<p><i>\u2014 Ajude-me, nosso servi\u00e7o XYZ est\u00e1 indispon\u00edvel!<br \/>\n\u2014 O que voc\u00ea v\u00ea ao executar <code>kubectl describe ingress ...<\/code>?<\/i><\/p>\n<p>Ou algo semelhante para CRD:<\/p>\n<p><i>\u2014 Estou com algum problema com o servi\u00e7o de autentica\u00e7\u00e3o...<br \/>\n\u2014 O que a equipe retorna quando utiliza <code>kubectl describe platformcredentialsset ...<\/code>?<\/i><\/p>\n<p>Esse tipo de comunica\u00e7\u00e3o geralmente se resume a inserir v\u00e1rias varia\u00e7\u00f5es do comando <code>kubectl<\/code> para tentar identificar o problema. Como resultado, ambas as partes da conversa s\u00e3o for\u00e7adas a ficar alternando entre o terminal e o chat web, al\u00e9m de presenciar situa\u00e7\u00f5es diferentes.<\/p>\n<p>Portanto, gostaria que o frontend web do Kubernetes permitisse o seguinte:<\/p>\n<ul>\n<li> que os usu\u00e1rios pudessem <b>trocar links<\/b> e visualizar a mesma coisa;<\/li>\n<li> ajudasse a <b>evitar erros humanos<\/b> no suporte: por exemplo, entrar no cluster errado no terminal, erros de digita\u00e7\u00e3o nos comandos da CLI, etc.;<\/li>\n<li> permitisse <b>gerar views personalizadas<\/b> para enviar a colegas, ou seja, adicionar colunas de r\u00f3tulos, exibir m\u00faltiplos tipos de recursos em uma \u00fanica p\u00e1gina;<\/li>\n<li> idealmente, essa ferramenta web deveria permitir criar <b>links \"profundos\" para se\u00e7\u00f5es espec\u00edficas do YAML<\/b> (por exemplo, indicar um par\u00e2metro errado que est\u00e1 causando falhas).<\/li>\n<\/ul>\n<p><\/p>\n<h3>Resposta a incidentes e an\u00e1lise<\/h3>\n<p>\nA rea\u00e7\u00e3o a incidentes na infraestrutura requer consci\u00eancia situacional, capacidade de avaliar impactos e a busca por padr\u00f5es em clusters. Alguns exemplos da vida real:<\/p>\n<ul>\n<li> um servi\u00e7o de produ\u00e7\u00e3o cr\u00edtico est\u00e1 enfrentando problemas e voc\u00ea precisa <b>encontrar todos os recursos Kubernetes pelo nome em todos os clusters<\/b>, para solucionar as falhas;<\/li>\n<li> os n\u00f3s come\u00e7am a falhar durante a escalabilidade, e voc\u00ea precisa <b>encontrar todos os pods com status \"Pending\" em todos os clusters<\/b>, para avaliar a extens\u00e3o do problema;<\/li>\n<li> usu\u00e1rios individuais relatam um problema com um DaemonSet implantado em todos os clusters, e \u00e9 necess\u00e1rio descobrir se <b>o problema \u00e9 de car\u00e1ter abrangente.<\/b>.<\/li>\n<\/ul>\n<p>\nMinha solu\u00e7\u00e3o padr\u00e3o nesses casos \u00e9 algo como <code>for i in $clusters; do kubectl ...; done<\/code>. \u00c9 evidente que pode-se desenvolver uma ferramenta que forne\u00e7a capacidades semelhantes.<\/p>\n<h2>As interfaces web existentes do Kubernetes<\/h2>\n<p>\nO mundo Open Source de interfaces web para Kubernetes n\u00e3o \u00e9 muito grande*, ent\u00e3o eu tentei coletar informa\u00e7\u00f5es adicionais atrav\u00e9s de <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/try_except_\/status\/1153543128365850625\">Twitter<\/a><\/noindex>:<\/p>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/75c26a70ec886700db2a81b57d672538.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>* Minha explica\u00e7\u00e3o para o n\u00famero limitado de interfaces web para Kubernetes: servi\u00e7os em nuvem e fornecedores de Kubernetes geralmente oferecem seus pr\u00f3prios front-ends, portanto, o mercado para 'boas' interfaces Kubernetes gratuitas \u00e9 relativamente pequeno.<\/i><\/p>\n<p>Com um tweet eu fiquei sabendo de <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/herbrandson\/k8dash\">K8Dash<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/smpio\/kubernator\">Kubernator<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vmware\/octant\">Octant<\/a><\/noindex>. Vamos dar uma olhada neles e em outras solu\u00e7\u00f5es Open Source existentes, tentando entender o que eles representam.<\/p>\n<h2>K8Dash<\/h2>\n<p>\n<i>\"K8Dash \u00e9 a maneira mais simples de gerenciar um cluster Kubernetes.\"<\/i><\/p>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/112e362486a294a1a39706fc32124889.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/herbrandson\/k8dash\">K8Dash<\/a><\/noindex> parece bom e tem um desempenho r\u00e1pido, mas possui v\u00e1rias desvantagens para os cen\u00e1rios de uso mencionados:<\/p>\n<ul>\n<li> Funciona somente dentro de um \u00fanico cluster.<\/li>\n<li> Classifica\u00e7\u00e3o e filtragem s\u00e3o poss\u00edveis, mas n\u00e3o t\u00eam links permanentes.<\/li>\n<li> Falta suporte a Custom Resource Definitions (CRDs).<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kubernator<\/h2>\n<p>\n<i>\"Kubernator \u00e9 uma interface alternativa para Kubernetes. Ao contr\u00e1rio do painel de alto n\u00edvel do Kubernetes Dashboard, ele proporciona controle de baixo n\u00edvel e uma excelente vis\u00e3o de todos os objetos no cluster, permitindo a cria\u00e7\u00e3o de novos, edi\u00e7\u00e3o deles e resolu\u00e7\u00e3o de conflitos. Sendo uma aplica\u00e7\u00e3o totalmente cliente (como kubectl), n\u00e3o requer backend al\u00e9m do pr\u00f3prio servidor API do Kubernetes, e tamb\u00e9m considera as regras de acesso ao cluster.\"<\/i><\/p>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/230115c88206d57443067a5b44ee9f31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c9 uma descri\u00e7\u00e3o bastante precisa <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/smpio\/kubernator\">Kubernetes<\/a><\/noindex>Infelizmente, ele carece de algumas funcionalidades:<\/p>\n<ul>\n<li> Gerencia somente um cluster.<\/li>\n<li> N\u00e3o h\u00e1 modo de visualiza\u00e7\u00e3o em forma de lista (ou seja, n\u00e3o \u00e9 poss\u00edvel listar todos os pods com status \"Pending\").<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kubernetes Dashboard<\/h2>\n<p>\n<i>\"O Kubernetes Dashboard \u00e9 uma interface web universal para clusters Kubernetes. Ele permite aos usu\u00e1rios gerenciar aplicativos em execu\u00e7\u00e3o no cluster e solucionar problemas, assim como gerenciar o pr\u00f3prio cluster.\"<\/i><\/p>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/10b37d00ed4c6cbb05a0eb9069a4371f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInfelizmente, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/dashboard\">Kubernetes Dashboard<\/a><\/noindex> isso n\u00e3o ajuda muito nas minhas atividades de suporte e resposta a incidentes, porque ele:<\/p>\n<ul>\n<li> n\u00e3o possui links permanentes, por exemplo, quando filtro recursos ou mudo a ordem de classifica\u00e7\u00e3o;<\/li>\n<li> n\u00e3o h\u00e1 uma maneira simples de filtrar por status \u2014 por exemplo, ver todos os pods com status \"Pending\";<\/li>\n<li> suporta apenas um cluster;<\/li>\n<li> n\u00e3o suporta CRD (essa fun\u00e7\u00e3o est\u00e1 em desenvolvimento);<\/li>\n<li> n\u00e3o h\u00e1 colunas personalizadas (por exemplo, colunas com r\u00f3tulos como <code>kubectl -L<\/code>).<\/li>\n<\/ul>\n<p><\/p>\n<h2>Kubernetes Operational View (kube-ops-view)<\/h2>\n<p>\n<i>\"Uma painel de monitoramento para espa\u00e7os de clusters K8s.\"<\/i><\/p>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/0d63fcce4d54fbf5b40b15ad195e8ba7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hjacobs\/kube-ops-view\">Kubernetes Operational View<\/a><\/noindex> uma abordagem totalmente diferente: esta ferramenta mostra somente os n\u00f3s do cluster e os pods usando WebGL, sem quaisquer detalhes textuais dos objetos. \u00c9 \u00f3tima para uma vis\u00e3o geral r\u00e1pida do estado do cluster (\"os pods est\u00e3o caindo?\")*, mas n\u00e3o serve para os casos de uso mencionados anteriormente em suporte e resposta a incidentes.<\/p>\n<p><i>* <b>Nota do tradutor.<\/b>: Nesse sentido, voc\u00ea tamb\u00e9m pode se interessar pelo nosso plugin <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/grafana-statusmap\">grafana-statusmap<\/a><\/noindex>, que discutimos mais detalhadamente em <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/423851\/\">este artigo<\/a><\/noindex>.<\/i><\/p>\n<h2>Kubernetes Resource Report (kube-resource-report)<\/h2>\n<p>\n<i>\"Coletar informa\u00e7\u00f5es sobre solicita\u00e7\u00f5es de recursos dos pods e do cluster Kubernetes, compar\u00e1-las com o consumo de recursos e gerar HTML est\u00e1tico.\"<\/i><\/p>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/11e64094ca3fb317959ab03ec7c07e0d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hjacobs\/kube-resource-report\/\">Kubernetes Resource Report<\/a><\/noindex> gera relat\u00f3rios HTML est\u00e1ticos sobre o uso de recursos e a distribui\u00e7\u00e3o de custos por equipes\/aplicativos em clusters. O relat\u00f3rio \u00e9 em certa medida \u00fatil para suporte e resposta a incidentes, pois permite encontrar mais rapidamente o cluster onde o aplicativo est\u00e1 implantado.<\/p>\n<p><i><b>Nota do tradutor.<\/b>: Na visualiza\u00e7\u00e3o das informa\u00e7\u00f5es sobre a distribui\u00e7\u00e3o de recursos e seus custos, pode tamb\u00e9m ser \u00fatil o servi\u00e7o e ferramenta <noindex><a rel=\"nofollow\" href=\"https:\/\/kubecost.com\/\">Kubecost<\/a><\/noindex>, cuja vis\u00e3o geral n\u00f3s <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/466659\/\">publicamos recentemente<\/a><\/noindex>.<\/i><\/p>\n<h2>Octant<\/h2>\n<p>\n<i>\"Uma plataforma web extens\u00edvel para desenvolvedores, destinada a proporcionar uma melhor compreens\u00e3o da complexidade dos clusters Kubernetes.\"<\/i><\/p>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/0f949ec05a6b403e7093ee38648eb493.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vmware\/octant\">Octant<\/a><\/noindex>, criado no VMware, \u00e9 um novo produto que conheci recentemente. Com ele, \u00e9 f\u00e1cil explorar o cluster na m\u00e1quina local (inclusive com visualiza\u00e7\u00f5es), no entanto, ele aborda a quest\u00e3o do suporte e resposta a incidentes apenas de forma limitada. Desvantagens do Octant:<\/p>\n<ul>\n<li> N\u00e3o h\u00e1 busca nos clusters.<\/li>\n<li> Funciona apenas na m\u00e1quina local (n\u00e3o \u00e9 implantado no cluster).<\/li>\n<li> N\u00e3o \u00e9 poss\u00edvel classificar\/filtrar objetos (apenas o seletor de r\u00f3tulos \u00e9 suportado).<\/li>\n<li> N\u00e3o \u00e9 poss\u00edvel definir colunas personalizadas.<\/li>\n<li> N\u00e3o \u00e9 poss\u00edvel exibir a lista de objetos por namespaces.<\/li>\n<\/ul>\n<p>\nEu tamb\u00e9m tive problemas com a estabilidade do Octant em clusters Zalando: em alguns CRD, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/vmware\/octant\/issues\/72\">ele falhou.<\/a><\/noindex>.<\/p>\n<h2>Apresento o Kubernetes Web View<\/h2>\n<p>\n<i>o 'kubectl para a web'.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/e7b0eb0650de76516bbe05305b9dea9b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDepois de analisar as op\u00e7\u00f5es de interfaces dispon\u00edveis para Kubernetes, decidi criar uma nova: <noindex><a rel=\"nofollow\" href=\"https:\/\/codeberg.org\/hjacobs\/kube-web-view\/\">Visualiza\u00e7\u00e3o Web do Kubernetes<\/a><\/noindex>. Afinal, eu s\u00f3 precisava de todo o poder <code>kubectl<\/code> na web, ou seja:<\/p>\n<ul>\n<li> disponibilidade de todas as opera\u00e7\u00f5es (somente leitura) nas quais os usu\u00e1rios preferem usar o kubectl;<\/li>\n<li> todos os URLs devem ser permanentes e representar a p\u00e1gina na forma original, para que os colegas possam compartilh\u00e1-los e us\u00e1-los em outras ferramentas;<\/li>\n<li> suporte a todos os objetos Kubernetes, o que permitir\u00e1 resolver problemas de qualquer tipo;<\/li>\n<li> as listas de recursos devem ser baix\u00e1veis para trabalho posterior (em planilhas, ferramentas de CLI como <code>grep<\/code>) e armazenamento (por exemplo, para postmortems);<\/li>\n<li> suporte \u00e0 filtragem de recursos por r\u00f3tulos (semelhante a <code>kubectl get .. -l<\/code>);<\/li>\n<li> capacidade de criar listas combinadas de diferentes tipos de recursos (semelhante a <code>kubectl get all<\/code>) para obter uma vis\u00e3o operacional geral entre os colegas (por exemplo, durante a resposta a incidentes);<\/li>\n<li> capacidade de adicionar 'deep links' personaliz\u00e1veis e inteligentes a outras ferramentas, como pain\u00e9is de monitoramento, registradores, reposit\u00f3rios de aplicativos, etc., para facilitar a busca\/resolu\u00e7\u00e3o de erros e a resposta a incidentes;<\/li>\n<li> o frontend deve ser o mais simples poss\u00edvel (HTML limpo), para evitar problemas acidentais, como JavaScript travado;<\/li>\n<li> suporte a m\u00faltiplos clusters para facilitar a intera\u00e7\u00e3o durante consultorias remotas (por exemplo, para memorizar apenas uma URL);<\/li>\n<li> sempre que poss\u00edvel, a an\u00e1lise situacional deve ser facilitada (por exemplo, com links para download de recursos em todos os clusters\/namespaces);<\/li>\n<li> recursos adicionais para a cria\u00e7\u00e3o de links flex\u00edveis e extra\u00e7\u00e3o de informa\u00e7\u00f5es textuais, por exemplo, para que se possa indicar a colegas uma se\u00e7\u00e3o espec\u00edfica na descri\u00e7\u00e3o do recurso (linha em YAML);<\/li>\n<li> capacidade de ajuste \u00e0s necessidades de um cliente espec\u00edfico, como permitir a cria\u00e7\u00e3o de templates personalizados de exibi\u00e7\u00e3o para CRD, suas pr\u00f3prias visualiza\u00e7\u00f5es tabulares, altera\u00e7\u00e3o de estilos CSS;<\/li>\n<li> ferramentas para estudo adicional no terminal (por exemplo, mostrando comandos completos <code>kubectl<\/code>, prontos para c\u00f3pia);<\/li>\n<\/ul>\n<p>\nFora das tarefas abordadas no Kubernetes Web View <i>(n\u00e3o objetivos)<\/i> permaneceram:<\/p>\n<ul>\n<li> abstra\u00e7\u00e3o de objetos do Kubernetes;<\/li>\n<li> gerenciamento de aplicativos (por exemplo, gerenciamento de deployments, charts do Helm, etc.);<\/li>\n<li> opera\u00e7\u00f5es de grava\u00e7\u00e3o (devem ser realizadas atrav\u00e9s de ferramentas seguras de CI\/CD e\/ou GitOps);<\/li>\n<li> interface bonita (JavaScript, temas, etc.);<\/li>\n<li> visualiza\u00e7\u00f5es (veja <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hjacobs\/kube-ops-view\">kube-ops-view<\/a><\/noindex>);<\/li>\n<li> an\u00e1lise de custos (veja <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hjacobs\/kube-resource-report\/\">kube-resource-report<\/a><\/noindex>).<\/li>\n<\/ul>\n<p>\nComo o Kubernetes Web View ajuda na manuten\u00e7\u00e3o e resposta a incidentes?<\/p>\n<h3>Suporte<\/h3>\n<p><\/p>\n<ul>\n<li> <b>Todos os links s\u00e3o permanentes<\/b>, facilitando a troca de informa\u00e7\u00f5es com colegas.<\/li>\n<li> \u00c9 poss\u00edvel criar <b>suas pr\u00f3prias visualiza\u00e7\u00f5es<\/b>, por exemplo, listar todos os Deployments e Pods com um r\u00f3tulo espec\u00edfico em dois clusters espec\u00edficos (v\u00e1rios nomes de clusters e tipos de recursos podem ser especificados no link, separados por v\u00edrgulas).<\/li>\n<li> \u00c9 poss\u00edvel referenciar <b>linhas espec\u00edficas em um arquivo YAML<\/b> de um objeto, apontando para potenciais problemas na especifica\u00e7\u00e3o do objeto.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/9e0b3ab31181f8d93323c413d9185888.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Busca por clusters no Kubernetes Web View<\/i><\/p>\n<h3>Resposta a incidentes<\/h3>\n<p><\/p>\n<ul>\n<li> <b>Busca global<\/b> <i>(global search)<\/i> permite pesquisar objetos em todos os clusters.<\/li>\n<li> <b>Visualiza\u00e7\u00f5es em formato de lista<\/b> podem exibir todos os objetos com um determinado estado\/coluna em todos os clusters (por exemplo, precisamos encontrar todos os pods com status \"Pending\").<\/li>\n<li> <b>Listas de objetos podem ser baixadas<\/b> no formato de valores separados por tabula\u00e7\u00e3o (TSV) para an\u00e1lise posterior.<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/kube-web-view.readthedocs.io\/en\/latest\/customization.html#external-links\">Links externos personaliz\u00e1veis<\/a><\/noindex> permitem alternar para pain\u00e9is de monitoramento correspondentes e outras ferramentas.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"An\u00fancio da interface web Kubernetes Web View (e uma breve revis\u00e3o de outras UIs web para Kubernetes)\" src=\"\/wp-content\/uploads\/2019\/09\/ac275aa6b234988f40a2d0cde2ac4870.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kubernetes Web View: lista de pods com status \"Pending\" em todos os clusters<\/i><\/p>\n<p>Se deseja experimentar o Kubernetes Web View, recomendo conferir <noindex><a rel=\"nofollow\" href=\"https:\/\/kube-web-view.readthedocs.io\/\">documenta\u00e7\u00e3o<\/a><\/noindex> ou assistir \u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/kube-web-view.demo.j-serv.de\/\">vers\u00e3o demo ao vivo<\/a><\/noindex>.<\/p>\n<p>Claro, a interface poderia ser melhor, mas enquanto isso, o Kubernetes Web View \u00e9 uma ferramenta para \"usu\u00e1rios avan\u00e7ados\" que n\u00e3o t\u00eam medo de manipular os caminhos de URL manualmente, se necess\u00e1rio. Se voc\u00ea tiver coment\u00e1rios\/adicionais\/sugest\u00f5es, por favor, entre em contato <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/try_except_\">comigo no Twitter<\/a><\/noindex>!<\/p>\n<p>Este artigo \u00e9 um breve relato sobre as premissas que levaram \u00e0 cria\u00e7\u00e3o do Kubernetes Web View. Outros artigos seguir\u00e3o! <i>(<b>Nota do tradutor.<\/b>: Eles devem ser esperados em <noindex><a rel=\"nofollow\" href=\"https:\/\/srcco.de\/\">o blog do autor<\/a><\/noindex>.)<\/i><\/p>\n<h2>P.S. do tradutor<\/h2>\n<p>\nConfira tamb\u00e9m em nosso blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/426985\/\">kubebox e outras interfaces de console para Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/462707\/\">Ferramentas para desenvolvedores de aplicativos executados no Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/news\/t\/467433\/\">Uma ferramenta de linha de comando chamada kubelive foi lan\u00e7ada para intera\u00e7\u00e3o com Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/330198\/\">Utilit\u00e1rios \u00fateis ao trabalhar com Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468041\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u2014 Henning Jacobs \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00abkubectl \u0434\u043b\u044f \u0432\u0435\u0431\u0430\u00bb. \u041f\u043e\u0447\u0435\u043c\u0443 \u043d\u043e\u0432\u044b\u0439 Open Source-\u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0438 \u043a\u0430\u043a\u0438\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c \u043d\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u043b\u0438 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u2014 \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0432 \u0435\u0433\u043e \u0441\u0442\u0430\u0442\u044c\u0435. \u0412 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b Kubernetes \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28800,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38369","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u2014 Henning Jacobs \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00abkubectl \u0434\u043b\u044f \u0432\u0435\u0431\u0430\u00bb.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u043d\u043e\u043d\u0441 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Kubernetes Web View (\u0438 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0434\u0440\u0443\u0433\u0438\u0445 web UI \u0434\u043b\u044f Kubernetes) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u2014 Henning Jacobs \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00abkubectl \u0434\u043b\u044f \u0432\u0435\u0431\u0430\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:23:18+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:23:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 An\u00fancio da interface web Kubernetes Web View (e uma breve vis\u00e3o geral de outras UIs web para Kubernetes) | ProHoster","description":"Nota do tradutor: O autor do material original \u00e9 Henning Jacobs da Zalando. Ele criou uma nova interface web para trabalhar com Kubernetes, que \u00e9 posicionada como \"kubectl para web\".","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u043d\u043e\u043d\u0441 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Kubernetes Web View (\u0438 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0434\u0440\u0443\u0433\u0438\u0445 web UI \u0434\u043b\u044f Kubernetes) | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0410\u0432\u0442\u043e\u0440 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u2014 Henning Jacobs \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00abkubectl \u0434\u043b\u044f \u0432\u0435\u0431\u0430\u00bb.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/anons-veb-interfejsa-kubernetes-web-view-i-kratkij-obzor-drugih-web-ui-dlya-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:23:18+00:00","article:modified_time":"2019-10-31T19:23:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38369","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 21:44:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:10:24","updated":"2026-01-23 21:44:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/38369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=38369"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/38369\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/28800"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=38369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=38369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=38369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}