Como começar a gerenciar um cluster Kubernetes com o Portainer
O Portainer é uma das interfaces de gerenciamento de contêineres mais populares. Embora o Portainer tenha começado focando no Docker e no Docker Compose, ele também trabalha com clusters gerenciados por orquestradores, incluindo Docker Swarm e Kubernetes.
Neste artigo, você aprenderá como conectar o Portainer a um cluster Kubernetes. Você poderá usar o Portainer para visualizar e interagir com objetos do Kubernetes, como Pods, Deployments e ConfigMaps. O Portainer também pode implantar gráficos do Helm e expor algumas informações básicas no nível do cluster. É uma alternativa viável ao painel oficial e outras opções como o Lens para gerenciamento simples do Kubernetes.
Implantando o Portainer em seu cluster
Certifique-se de ter acesso a um cluster Kubernetes em funcionamento antes de prosseguir. Você pode provisionar um usando [um serviço de nuvem gerenciado] ou executar o seu próprio localmente usando uma solução como MicroK8s ou Minikube. Você também precisará ter o Helm instalado para simplificar o processo de instalação do Portainer.
Adicione o repositório Portainer ao Helm usando os seguintes comandos:
$ helm repo add portainer https://portainer.github.io/k8s/
$ helm repo update
Em seguida, execute um dos seguintes comandos para implantar o aplicativo Portainer.
Exponha o Portainer com um NodePort
$ helm install --create-namespace -n portainer portainer portainer/portainer
Este é o método mais simples. Você poderá acessar o Portainer por HTTP usando a porta 30777 no nó que executa o Portainer Pod. O tráfego HTTPS será atendido na porta 30779 usando um certificado autoassinado. Consulte a documentação do Portainer se desejar fornecer seu próprio certificado SSL ao implantar com este método.
Exponha o Portainer com um balanceador de carga
$ helm install --create-namespace -n portainer portainer portainer/portainer \
--set service.type=LoadBalancer
Este método é semelhante ao NodePort, mas usará um balanceador de carga na frente de seus nós. Visite a porta 9000 no IP do balanceador de carga para acessar o Portainer por HTTP. HTTPS é suportado na porta 9443.
Exponha o Portainer com uma rota de entrada
helm install --create-namespace -n portainer portainer portainer/portainer \
--set service.type=ClusterIP \
--set ingress.enabled=true \
--set ingress.annotations.'kubernetes\.io/ingress\.class'=nginx \
--set ingress.annotations."nginx\.ingress\.kubernetes\.io/backend-protocol"=HTTPS \
--set ingress.hosts[0].host=portainer.example.com \
--set ingress.hosts[0].paths[0].path="/"
Este método expõe o Portainer usando uma rota do Ingress. Você precisará de um controlador Ingress como o NGINX Ingress dentro do seu cluster. Modifique as variáveis host
e path
no comando para customizar a rota Portainer. Neste exemplo, você poderá acessar o Portainer visitando portainer.example.com
, depois de configurar um registro DNS apropriado.
A configuração de uma rota Ingress é a melhor maneira de atender o Portainer a longo prazo, pois oferece suporte ao balanceamento de carga entre os nós e permite atribuir um domínio específico. As opções NodePort ou LoadBalancer são opções mais simples quando você está experimentando clusters que não têm um controlador Ingress disponível.
Depois de concluir sua implantação, carregue o Portainer em seu navegador visitando o host apropriado do Ingress ou o endereço IP e o número da porta. Preencha a tela de configuração para criar sua conta de usuário.
O Portainer agora estará pronto para uso com seu cluster Kubernetes – a implantação direta no Kubernetes descobre automaticamente seu ambiente. Clique no botão “Get Started” para concluir a instalação.
Adicionando um cluster Kubernetes a uma instalação existente do Portainer
Você pode adicionar um cluster Kubernetes a uma instalação existente do Portainer. Você pode optar por executar o Portainer fora do seu host para não consumir recursos do cluster.
Comece fazendo login em sua instância do Portainer. Clique no link “Ambientes” na parte inferior da barra lateral esquerda. Clique no botão azul Adicionar ambiente na parte superior da tela.
Em seguida, pressione o bloco “Kubernetes” e, em seguida, o botão “Start Wizard” na parte inferior da tela.
A próxima tela mostrará as instruções de instalação do agente Portainer Kubernetes. Este componente é instalado dentro de seu cluster. O Portainer se comunica com o agente para extrair as informações do Kubernetes e aplicar as ações solicitadas.
Você pode escolher entre implantar o agente com um NodePort ou um LoadBalancer. Selecione a guia apropriada e copie o comando exibido. Execute isso em seu terminal para adicionar o Portainer Agent ao seu cluster. O Portainer Agent é protegido por uma assinatura digital que recebe na primeira vez que o aplicativo Portainer faz contato. O Agente rejeitará comunicações de clientes que não forneçam a assinatura correta.
Em seguida, preencha os campos “Nome” e “URL do ambiente” exibidos na IU da Web do Portainer. Você pode escolher qualquer nome que identifique seu cluster.
Se você estiver usando uma conexão NodePort, a URL do ambiente deve ser a porta 30778 no endereço IP do seu Node. Para conexões LoadBalancer, encontre o IP externo do balanceador de carga executando kubectl get services -n portainer
. O agente será exposto na porta 9001 neste IP.
$ kubectl get services -n portainer
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
portainer portainer-agent LoadBalancer 10.245.110.27 139.59.198.245 9001:30343/TCP
Clique no botão Conectar para concluir sua conexão. Você deve ver um alerta pop-up verde que confirma que o ambiente foi adicionado. Pressione o botão “Concluir” na parte inferior da tela para retornar à lista de ambientes.
Usando o Portainer para gerenciar o Kubernetes
A tela inicial do Portainer exibe todos os seus ambientes configurados. Podem ser clusters do Kubernetes, instalações locais do Docker Engine ou qualquer outro endpoint compatível. Clique em seu cluster para começar a gerenciá-lo.
A tela do painel do cluster fornece uma visão geral do número de recursos em seu cluster. Atualmente, o Portainer se concentra em interações com Namespaces, aplicativos (seus pods e implantações), ConfigMaps e segredos e volumes. Ele fornece uma camada de abstração sobre alguns conceitos do Kubernetes.
Clique no bloco Aplicativos ou no link da barra lateral para visualizar seus pods e implantações em execução. A tela mostra todos os aplicativos em seu cluster, incluindo a imagem que eles estão usando e sua URL externa quando uma rota do Ingress é configurada.
Você pode adicionar um novo aplicativo fazendo upload de um arquivo de manifesto do Kubernetes ou clicando no botão “Adicionar aplicativo com formulário” para configurar seus pods interativamente.
O Portainer também oferece um resumo básico da utilização de recursos do seu cluster. Clique no item da barra lateral “Cluster” para visualizar os nós em seu cluster e suas reservas de memória e CPU.
Por fim, a tela de configuração do cluster, acessada em Cluster > Configuração, controla os recursos do Portainer para habilitar seu ambiente Kubernetes. Você pode usar isso para informar ao Portainer quais balanceadores de carga, controladores Ingress e classes de armazenamento devem ser disponibilizados aos usuários. Outras configurações incluem a capacidade de alterar se os overcommits de recursos são permitidos (onde mais recursos podem ser solicitados do que o cluster pode fornecer) e a ativação da API de métricas para acessar informações de utilização mais detalhadas. Isso requer que a API de métricas já esteja instalada em seu cluster.
Resumo
O Portainer é uma das interfaces de gerenciamento de contêineres mais populares. As versões modernas do Portainer têm suporte integrado para clusters Kubernetes. Você pode implantar o Portainer dentro do seu cluster ou usar o agente Portainer para conectar o Kubernetes a uma instância de aplicativo existente.
Depois de configurar, você pode usar o Portainer para visualizar e interagir com Kubernetes Pods e outros objetos. Isso pode ser mais conveniente do que executar comandos Kubectl complexos em seu terminal. O Portainer permite agregar todos os seus ambientes de contêiner em uma plataforma, desde clusters Kubernetes até instalações Docker de nó único.