O que é o Rancher? É pra criar gado?

Thiago Barradas
thiagobarradas
Published in
6 min readAug 5, 2018
Logo do Rancher

Não. Não estamos falando do Rancho do Zé João. Não dessa vez. Hoje, o objetivo é falar um pouquinho sobre o Rancher, plataforma para gerenciamento de infraestrutura baseada em contêineres (leia-se docker 🐳).

Um ponto bem bacana de citar, é que o Rancher é uma plataforma opensource e o seu código fonte posse ser acessado no GitHub, ou seja, você pode utilizar o código como fonte de estudo, entender a fundo como funciona a plataforma, contribuir com o projeto, reportar problemas e solicitar, por gentileza, novas features, entre outros benefícios já conhecidos em projetos opensources.

Este artigo é baseado na versão estável 1.6 do Rancher. A primeira release da versão 2.0 foi liberada há poucos dias e em breve, conforme a adoção da nova versão, também falarei sobre ela por aqui.

Principais funcionalidades do Rancher

  • Alta Disponibilidade: Você pode utilizar o serviço do Rancher no modo Single Node ou High Availability, ou seja, apenas um nó (indicado para testes ou homologação) ou em Cluster (indicado para rodar em produção). Para rodar no modo HA, basicamente é necessário que todos os nós se comuniquem com o mesmo banco de dados MySQL e que você tenha um balanceador de carga.
  • Interface de gerenciamento: Uma das grandes vantagens de se utilizar o Rancher é total domínio de tudo através de uma interface simples e intuiti-va. Através dessa interface, você consegue configurar e controlar todas as funcionalidades listadas abaixo.
Interface do Rancher logo após sua instalação.
  • Multi ambientes: Você pode separar os seus serviços por Environments (basicamente um ambiente segmentado dos outros). Em cada ambiente, você terá hosts (que são nós para a execução dos contêineres), e esses hosts são exclusivos para cada environment. Serviços em ambientes diferentes não são acessíveis diretamente um ao outro. Normalmente os ambientes são criados para separar desenvolvimento, de homologação, de produção, separar serviços que estão sendo executados em datacenter/cloud diferentes.
  • Multi orquestradores: Ao criar um environment (explicado anteriormente) você pode escolher qual orquestrador o Rancher utilizará por debaixo dos panos. Você pode escolher entre Cattle, Kubernetes, Mesos e Swarm.
  • Integração com principais clouds: Se você estiver utilizando clouds como Amazon, Azure, DigitalOcean ou Packets, você pode adicionar novos hosts de maneira pratica, basicamente definindo o tipo da máquina e colocando, de acordo com o serviço, sua chave de acesso ou credenciais de integração. Isso permite que você adicione novos hosts de maneira rápida. Não é possível adicionar hosts de maneira automática quando o uso de CPU e memória estiverem altos. Porém é possível criar uma URL de webhook que faz o scale up ou scale down. Tornar a adição/remoção de hosts automáticos de acordo com o uso de recursos, dependeria de um terceiro serviço, para analisar as métricas de hardware e acionar a URL de webhook ou executar esse comando via a API do Rancher.
  • Serviços: Cada serviço nada mais é do que a execução de um ou mais contêineres com um único objetivo, mesmo que para isso sejam necessários alguns contêineres adicionais, providos por diversas imagens. Ao criar um serviços, ele faz parte de uma stack (um tipo de separação virtual) que está dentro de um environment. Durante a criação é possível fazer toda configuração do contêiner, como variáveis de ambiente, entry point, definir volumes, networking, segurança e limitações de recursos, health check, entre outros. Um serviço também tem seu escalonamento definido, ou global (uma instância em cada host) ou um número pré definido. É possível fazer o scale up e scale down clicando em um botão de “+” ou “-”, que ocorre de maneira bem rápida ou através da API do Rancher ou webhooks de escalonamento. Assim como nos hosts, o escalonamento a partir de métricas de uso de recursos não existe diretamente pelo Rancher, sendo necessário um terceiro serviço para isso.
Detalhes de um serviço
  • Catálogo de serviços: O catálogo de serviço trás diversas ferramentas pré configuradas para rápida instalação na sua stack. Por exemplo, RabbitMQ, Kafka, Prometheus, Grafana, Let’s Encrypt, Jenkins, GoCD, Bitbucket, Github, entre outros. Você também pode criar o seu próprio catálogo e adicionar a sua lista. Com isso, você deixar seus serviços prontos para serem implantados em poucos cliques, sem necessidade de muitas configurações.
  • Load balancer: Após criar um serviço você precisa que ele responda como apenas um serviço, independentemente se ele possui um contêiner ou mil contêineres. O Rancher possui integrado a sua plataforma um balanceador de carga próprio, que utiliza o HA Proxy por trás, capaz de fazer todo trabalho de roteamento e distribuição das requisições pelos contêineres do serviço.
Visualização de grafo de uma stack usando load balancer
  • Repositórios de imagens: Se você tem o seu próprio repositório de imagens, você pode adicionar ao Rancher e a partir daí, todos os hosts terão acesso a suas imagens privadas, inclusive os hosts adicionados posteriomente.
  • Storage: É possível associar um servidor de arquivos (NFS) para trabalhar em conjunto com o cluster e de maneira inteligente, criar volumes compartilhados por todos os nós / serviços / contêineres. Desse modo, é possível até mesmo pensar em executar um serviço que necessita de persistência de dados como o MongoDB ou RabbitMQ, garantindo um persistência externa, compartilhada, com backup, etc.
  • Controle de acesso integrado: O acesso dos usuários do Rancher pode ser integrado de diversas maneiras ou utilizar o próprio sistema de usuários do Rancher. Via integração, pode utilizar o AD, Azure AD, OpenLDAP, GitHub (com permissões associadas a pessoas, organizações, etc). O acesso dos usuários pode ser quebrado em níveis de acesso diferente de acordo com as roles permitidas pelo Rancher.
Configurando o controle de acesso
  • Logs de auditoria: Sempre que necessário é possíveis verificar qual usuário executou uma ação e todos os dados relativos a esta ação. O log de auditoria permite que, além da visibilidade sobre tudo que acontece no cluster, você tenha dados suficientes para eventuais auditorias HIPAA ou PCI DSS, por exemplo.
  • API de gerenciamento e webhooks: Tudo falado até aqui e todas outras funcionalidades não faladas, são possíveis de serem executados através da API do Rancher. Via API, é possível escalar seus hosts, serviços, iniciar processos de upgrade (deploy), efetiva-los ou fazer rollback, obter métricas de environments, hosts, stacks, etc. Também é possível configurar URL de webhook para fazer o upgrade de serviços, escalonamento de hosts e serviços.
  • Acesso ao Contêiner: Diretamente pela interface você pode acessar os logs do contêiner (ao invés de entrar host e executar o comando docker logs XXX -f) ou até mesmo acessar o bash do contêiner (ao invés de docker exec -it XXX bash), deixando essa interação bastante dinâmica. Para ter cuidado com os acessos e com chaves secretas, o Rancher tem uma área específica durante a criação de um serviço para a inserção de dados sensíveis como secrets dentro do contêiner.
Logs e acesso ao bash do contêiner

Considerações

Apesar de pequenas limitações como o escalonamento automático, o Rancher atende bem o que se propõe a fazer, oferecendo muitos recursos e tornando fácil e prático para qualquer pessoa criar e gerenciar uma infraestrutura baseada em contêineres e, em geral, dispensando outras ferramentas.

O nível de maturidade do projeto é suficiente para a confiabilidade de implementa-lo em produção, tendo em vista os diversos casos de uso que já existem e o utilizam desta maneira e a continuidade do projeto.

Se você procurava por uma ferramenta, gratuita, prática e com uma interface amigável, você achou.

Para fazer parte e interagir diretamente com a comunidade, você pode entrar no grupo de usuários de Rancher no Slack acessando https://slack.rancher.io.

Te vejo por lá e até a próxima.

--

--

Thiago Barradas
thiagobarradas

Microsoft MVP, Elastic Contributor. Entusiasta de novas tecnologias e arquiteto de software na Stone. Cultuador do hábito de formar cabeças pensantes.