Docker e Flannel
Veremos nesse artigo, como é possível utilizar o Flannel para criar um ambiente de multihost no Docker. Para quem não conhece ainda, o Flannel é backend para rede desenvolvido pela CoreOS, com o intuito de facilitar a administração dos clusters de Docker e da rede de cada container. Nesse artigo, abordaremos desde a instalação e configuração básica, até um exemplo prático de utilização.
Introdução
Oi pessoal!
A intenção hoje, é chamar a atenção para um dos recursos que está presente no Docker e que, às vezes, passa despercebido para muitos dos utilizadores dessa tecnologia, que é trabalhar com rede. Com a ascensão do Docker 1.12, ficou ainda mais fácil mudar a forma de trabalhar com rede; você pode integrar o Docker com diversos plugins e tecnologias, hoje veremos como utilizar o Flannel para ser seu backend de rede.
Para quem não conhece, o Flannel é um projeto que foi inicialmente desenvolvido pela CoreOS, mas que atualmente é mantido, além da própria empresa, pela comunidade. Ele utiliza um serviço de chave-valor para persistir as informações sobre alocação de ip entre hosts e containers, por padrão ele utiliza o Etcd (que por coincidência é desenvolvido e mantido pela CoreOS também), veja abaixo algumas das características do Flannel e a diferença em relação ao Docker Network:
Vamos colocar a mão na massa?
A intenção hoje, é chamar a atenção para um dos recursos que está presente no Docker e que, às vezes, passa despercebido para muitos dos utilizadores dessa tecnologia, que é trabalhar com rede. Com a ascensão do Docker 1.12, ficou ainda mais fácil mudar a forma de trabalhar com rede; você pode integrar o Docker com diversos plugins e tecnologias, hoje veremos como utilizar o Flannel para ser seu backend de rede.
Para quem não conhece, o Flannel é um projeto que foi inicialmente desenvolvido pela CoreOS, mas que atualmente é mantido, além da própria empresa, pela comunidade. Ele utiliza um serviço de chave-valor para persistir as informações sobre alocação de ip entre hosts e containers, por padrão ele utiliza o Etcd (que por coincidência é desenvolvido e mantido pela CoreOS também), veja abaixo algumas das características do Flannel e a diferença em relação ao Docker Network:
Flannel Docker Overlay Network
Modelo VxLAN ou UDP VxLAN
Isolamento de aplicação CIDR Schema CIDR Schema
Protocolos suportados Todos Todos
Serviço de nome Não Não
Requer backend externo Sim Sim
Tipo de encriptação TLS Não
vNIC por Container Não Sim
Restrição de subnet por container Não Sim
Como podem notar, o Flannel tem algumas vantagens e desvantagens em relação ao Docker Network, destacam-se a comunicação encriptada que ele provê e não ter a possibilidade de criar subnet diferente por aplicação, ou seja, todos os containers fazem parte da mesma rede. Se você está pensando em utilizar Kubernetes, leve em consideração o Flannel, pois é um dos plugins mais utilizados com esse orquestrador.
Vamos colocar a mão na massa?