Introdução

Imagine uma ferramenta que lhe permite ver, gerenciar e otimizar todos os aspectos de seus clusters Kubernetes mediante uma interface gráfica intuitiva, em vez de comandos complexos. O Kubernetes Dashboard faz exatamente isso, simplificando o processo de implantação, escalonamento e gerenciamento de aplicações conteinerizadas. Ele oferece uma interface web amigável, onde é possível visualizar logs, métricas e relatórios de erros em um só lugar, além de realizar atualizações contínuas, escalar Pods, e gerenciar serviços e recursos com facilidade. Sendo uma solução gratuita e open source, mantida pela Cloud Native Computing Foundation, o Kubernetes Dashboard é um recurso essencial para administradores que desejam maximizar a eficiência e visibilidade de seus clusters.

Instalação

O Kubernetes Dashboard atualmente suporta apenas a instalação baseada no Helm, por ser mais rápida e nos dar um melhor controle sobre todas as dependências necessárias para que o Dashboard funcione. O Chart passou por uma reformulação recente, agora, por padrão, o Kong, sem banco de dados, é usado como um gateway que conecta todos os nossos containers e expõe a interface do usuário. Os usuários podem então usar qualquer controlador de ingress ou proxy na frente do gateway Kong. 

# Adiciona o repositório kubernetes-dashboard

helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/

# Deploy do Helm Chart

helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard --version 7.5.0

Vale ressaltar que a instalação básica não cria os objetos necessários para o total controle do cluster (RBAC). Adicionalmente precisamos seguir os seguintes passos:

Criação da Service Account

Criaremos a Service Account com o nome admin-user no mesmo namespace de instalação do Chart:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

Criação da ClusterRoleBinding

A instalação padrão do Kubernetes sempre apresenta a ClusterRole de nome cluster-admin. A usaremos como objeto de referência para dar as permissões à Service Account recém criada. Deste modo, basta criar a ClusterRoleBinding:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

Criação do Token de autenticação:

Mostrarei duas formas para criação desse Token. A primeira cria um Token efêmero, com duração de uma hora. A segunda cria um Token sem data de expiração.

Para a criação do Token efêmero, usaremos o seguinte comando:

kubectl -n kubernetes-dashboard create token admin-user

Para a criação do Token definitivo, precisaremos criar uma secret:

apiVersion: v1
kind: Secret
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/service-account.name: "admin-user"   
type: kubernetes.io/service-account-token

Depois da criação, colete o token gerado com o seguinte comando:

kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d

Tenha cuidado ao armazenar ou repassar esse Token, haja visto que ele dá permissão total no cluster. Caso você queira restringir o acesso, basta utilizar outra ClusterRole com permissões reduzidas.

Acesso

Uma vez seguidos todos os passos anteriores, basta executar o comando de port-foward do service de nome kubernetes-dashboard-kong-proxy:

kubectl port-forward -n kubernetes-dashboard svc/kubernetes-dashboard-kong-proxy 8080:443

E, finalmente, acesso o seguinte endereço local no seu navegador:

https://localhost:8080/

Caso se utilize o nginx ingress controller no seu cluster, você pode configurar o objeto ingress via values do Helm Chart.

Banner

Boas Práticas

Como qualquer aplicação que seja instalada no cluster, é sempre importante seguir boas práticas para garantir estabilidade, resiliência e segurança.

  • Sempre use HTTPS para criptografar o tráfego entre o cliente e o Dashboard, utilizando certificados TLS assinados por uma autoridade certificadora confiável.

  • Implemente Network Policies do Kubernetes para restringir o tráfego de e para o Dashboard.

  • Configure a expiração de tokens para reduzir o risco de uso indevido de tokens e rotacione regularmente tokens e credenciais.

  • Habilite o registro de auditoria para o servidor da API do Kubernetes para rastrear o acesso ao Dashboard e as mudanças. Monitore os logs em busca de atividades suspeitas.

  • Mantenha a versão do K8s Dashboard atualizada para aproveitar os patches de segurança e melhorias. Verifique regularmente se há atualizações e aplique-as prontamente.

  • Colete as métricas básicas e personalizadas, através do objeto Service Monitor do Prometheus (presente no Helm Chart), para monitorar a aplicação.

Conclusão

O Kubernetes Dashboard é uma solução poderosa e gratuita para visualizar e gerenciar seu cluster K8s a partir de uma interface baseada na web. Ele não vem com o K8s "pronto para uso" e deve ser instalado adicionalmente. Certifique-se de seguir as melhores práticas de segurança e restringir as permissões RBAC ao dashboard.

Pra você que prefere, também gravei um vídeo deste passo-a-passo que você confere aqui:

Existem muitas alternativas populares disponíveis, então certifique-se de verificar para avaliar e escolher a certa para suas necessidades.

Não deixe de acompanhar nosso blog, estamos sempre compartilhando conteúdos interessantes e ouça também o Kubicast, o podcast que traz conhecimento em um formato diferente.

Social

Fale conosco

Almeda Campinas 802, CJ 12, Jardim Paulista,

São Paulo - SP, 01404-001

Faça parte do time

Nossos conteúdos

Social

Fale conosco

Almeda Campinas 802, CJ 12, Jardim Paulista,

São Paulo - SP, 01404-001

Faça parte do time

Nossos conteúdos

Social

Fale conosco

Almeda Campinas 802, CJ 12, Jardim Paulista,

São Paulo - SP, 01404-001

Faça parte do time

Nossos conteúdos