Gerenciamento eficiente de infraestrutura Docker com Portainer.io

Gerenciamento eficiente de infraestrutura Docker com Portainer.io

O gerenciamento de uma infraestrutura com docker se dá quase que exclusivamente via terminal, mas quando surge a necessidade de apresentar a infraestrutura para a equipe, ou para toda a empresa, chegamos ao consenso que uma tela preta com letrinhas brancas não é algo chamativo.

A Portainer.io criou então uma aplicação web de código livre que permite ver toda sua infraestrutura no seu navegador WEB, e não só isso, ela também permite gerenciar containers e realizar manutenções de forma simples e prática. Outra funcionalidade bem bacana são as integrações nativas com repositórios on-line, como GitHub e GitLab, assim o gerenciamento da sua infraestrutura através do seu código fica muito mais intuitivo e pode promover conhecimento de sua equipe sobre toda a infraestrutura, com telas e informações via web.

Instalação

Para instalar o portainer basta acessar o site portainer.io para ter acesso a todas as instruções de instalação, utilizando qualquer sistema operacional suportado pela aplicação. Em nosso ambiente utilizaremos como base um Linux na distribuição OpenSuse. Para a segurança da aplicação será necessário criar um volume para que os dados sejam persistidos no container, desse modo, mesmo que por algum motivo o container seja perdido, seus dados estarão sempre salvos em um volume local, essa ação permite que você tenha sempre as informações de sua estrutura independente do container.

Vamos criar o volume?

$ docker volume create portainer_data

Volume portainer_data criado com sucesso!

Agora podemos iniciar o container da nossa aplicação com o comando abaixo:

$ docker run -d -p 9000:9000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.9.3

Configuração

Iniciamos nossa aplicação, agora podemos então acessar nossa interface web no endereço http://{ip-do-container/ou ip-externo}:9000 e começaremos a configurar nosso ambiente!

Logo no primeiro acesso a aplicação solicita para criarmos um usuário administrador e de uma senha forte para este novo usuário

Tela de criação de usuário

Tela de criação de usuário

Nesta página também é possível restaurar um backup gerado de outro portainer, essa situação é muito importante quando temos ambientes remotos o que o torna bastante oneroso uma nova configuração.

Após a criação do usuário a página de configuração inicial é exibida, nela vamos conectar ao ambiente docker, que pode ser local ou também pode ser ambientes remotos, para nosso laboratório utilizaremos a opção de escolha por ambiente local.

Tela inicial

Tela inicial

Assim que clicamos em adicionar o sistema identifica o ambiente e faz uma varredura por toda infraestrutura e traz para nós quantas Stacks possuímos, quantos containers existem, quantos estão ativos e quantos estão parados, nesta página serão exibidos em forma de card todos os ambientes que você está gerenciando através dessa instância.

Página Home

Página Home

O Portainer se destaca pela forma como são apresentadas as informações, de maneira simples ele cria um dashboard com informações resumidas de todo ambiente, muitas informações são exibida nesse Dashboard como informações de volumes e de imagens, quantidade de Stacks e quantidade de redes criadas.
Dashboard Portainer

Dashboard Portainer

Automação

Para mostrar como essa ferramenta não é somente uma interface bonitinha o Portainer consegue automatizar e gerenciar seus containers, através da Stack você pode criar Deploys de suas aplicações versionando seus arquivos em repositórios online, criar templates customizados, ou realizando um upload de seu arquivo compose para dentro do Portainer manualmente através de um upload.

Chega de teoria e vamos para a prática!

Vamos construir algumas aplicações e colocar para nosso Portainer realizar o deploy através de uma nova stack, neste arquivo teremos um WordPress, MySQL e o JuiceShop.

$ vim docker-teste.yml

O template padrão do Portainer só consegue ler arquivos em formato YAML, portanto não se esqueçam de salvar o arquivo com a extensão correta.

Copie e cole este código dentro desse arquivo criado:
version: "3.9" 

services:
  db:
   image: mysql:5.7
   volumes:
    - db_data:/var/lib/mysql
   restart: always
   environment:
    MYSQL_ROOT_PASSWORD: somewordpress
    MYSQL_DATABASE: wordpress
    MYSQL_USER: wordpress
    MYSQL_PASSWORD: wordpress

  wordpress:
   depends_on:
    - db
   image: wordpress:latest
   volumes:
    - wordpress_data:/var/www/html
   ports:
    - "8000:80"
   restart: always
   environment:
    WORDPRESS_DB_HOST: db
    WORDPRESS_DB_USER: wordpress
    WORDPRESS_DB_PASSWORD: wordpress
    WORDPRESS_DB_NAME: wordpress

  juiceshop:
   image: bkimminich/juice-shop
   ports:
    - "3000:3000"
   restart: always

volumes:
   db_data: {}
   wordpress_data: {}

Com o arquivo salvo podemos voltar para nossa aplicação, no menu lateral vamos selecionar a opção Stack e clicar em Add Stack.

Stack List

Stack List

Somos apresentados ao formulário de criação da Stack, nesta seção vamos preencher as informações para o deploy de nossas aplicações:

  • No campo Name daremos o nome para nossa Stack e sempre lembrando de utilizar letras minúsculas e somente os caracteres “_” e “-” são permitidos;
  • Em Build Method informaremos como serão inseridos as instruções para o deploy, neste caso como utilizaremos nosso arquivo criando anteriormente,  escolheremos a opção Upload;
  • Em Environment variables são informadas as variáveis de ambientes, dependendo de sua aplicação algumas variáveis globais são necessárias para que tenham interações entre elas, para nosso laboratório deixaremos o padrão;
  • A opção Access Control é onde definiremos quem poderá ter acesso a esta Stack, podem ser adicionados grupos ou pessoas para visualização ou até mesmo para gerenciar suas Stacks, em nosso teste definiremos somente o grupo Administrators.
Add Stack

Add Stack

Após o deploy você terá todas as usas aplicações rodando em sua Stack, podendo realizar alterações no compose e adicionando novos usuários que poderão ter acesso à esta estrutura via interface web.

Stack details

Stack details

 

Conclusão

Montamos um ambiente pequeno e apenas para o teste prático do funcionamento do Portainer, mas já conseguimos ver o quão poderosa essa ferramente pode ser e há inúmeras funcionalidades que você pode explorar e deixar ainda mais observável sua estrutura de virtualização com o docker.

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior React Native ou Flutter: Qual é a melhor tecnologia para desenvolvimento mobile?
Próxima Descubra como a Consultoria de TI pode otimizar seus processos empresariais

About author

Jeovany Batista
Jeovany Batista 8 posts

Formado em Segurança da Informação, trabalha com tecnologia há 11 anos, atualmente é Analista de Infraestrutura e Monitoramento na 4Linux, nas horas vagas se aventura na culinária e nos games. Entusiasta em opensource tools e no momento curtindo a distro OpenSuse!

View all posts by this author →

Você pode gostar também

Infraestrutura TI

Guia passo a passo para configurar o FreeIPA em CentOS e Ubuntu

Este post é o Segundo de uma série de posts sobre o FreeIPA. Se ainda não leu a Parte #1, onde instalamos e configuramos o servidor do FreeIPA , é

Segurança

Descubra o DevSecOps: Segurança e eficiência no desenvolvimento de software

Saudações pessoal! Hoje vamos explorar o fascinante mundo do “DevSecOps”. Talvez você já tenha ouvido falar desse termo, mas não tenha ideia do que ele realmente significa. Neste artigo, vamos

Infraestrutura TI

Guia Prático: Como Implementar uma Wiki em Ambiente Corporativo

Em ambientes corporativos, onde vários projetos são elaborados, algumas informações são muito importantes e muito específicas aos diretamente envolvidos, como configurações de ambiente e opções dos parâmetros. Neste contexto, a