Como usar a tecnologia de contêineres Docker com produtos e serviços da F5

Resumo executivo

A evolução das necessidades de TI e o surgimento de estratégias ágeis de desenvolvimento e implantação levaram ao aparecimento da "conteinerização", uma alternativa à virtualização completa de máquinas, na qual uma aplicação é encapsulada em um contêiner com seu próprio ambiente operacional. A conteinerização é uma solução atraente que permite aos desenvolvedores realizar iterações com mais rapidez. Ela também oferece benefícios adicionais que reduzem a sobrecarga associada às máquinas virtuais, permitindo maior utilização dos recursos no data center definido por software (SDDC).

Embora a conteinerização não seja um conceito novo, o Docker, desenvolvido pela Docker, Inc., tem sido amplamente apontado como a implementação preferencial devido ao amplo apoio do setor, à padronização e à abrangência de seus recursos. Nas palavras da empresa, o Docker é "uma plataforma aberta para criar, distribuir e executar aplicações distribuídas. Ele oferece a programadores, equipes de desenvolvimento e engenheiros de operações o conjunto comum de ferramentas de que precisam para aproveitar a natureza distribuída e interconectada das aplicações modernas". Dessa forma, o Docker simplifica o gerenciamento do ciclo de vida das aplicações, do desenvolvimento à implantação, e permite a portabilidade das aplicações. Essa simplificação é fundamental para as empresas, considerando que há várias opções de hospedagem para uma aplicação, seja na nuvem pública ou em uma infraestrutura de nuvem privada.

Este documento apresenta a abordagem da F5 para o uso de contêineres em sua tecnologia e para o suporte ao Docker na entrega e segurança de aplicações. Antes de discutirmos essa estratégia, é importante reconhecer os desafios dos data centers e entender por que essas tecnologias são essenciais para a próxima geração de entrega de aplicações empresariais.

Observação: este documento destina-se a tomadores de decisão de TI, arquitetos e desenvolvedores. Pressupõe-se que o leitor tenha conhecimento prévio sobre tecnologia de virtualização, desenvolvimento de software e o processo do ciclo de vida de versões.

Desafios da infraestrutura de data center

Diversos estudos recentes sobre os principais desafios da infraestrutura de data centers identificaram um conjunto consistente de necessidades para a evolução do data center:

  • Métodos mais rápidos de implantação de aplicações
  • Um processo aprimorado de gerenciamento do fluxo de trabalho
  • Maior disponibilidade e utilização de recursos computacionais
  • Maior agilidade para mover cargas de trabalho conforme necessário

À medida que surgem novas tendências no desenvolvimento de aplicações, os clientes corporativos estão mudando sua visão do modelo de gerenciamento do ciclo de vida das aplicações para o seguinte:

  • Os aplicativos de última geração são cada vez mais desenvolvidos com uma abordagem "cloud first".
  • O Linux se tornou o sistema operacional (SO) padrão de fato para o desenvolvimento em nuvem.
  • Aplicações em nuvem de última geração:
    • São projetados para não manter estado e utilizar uma arquitetura de microsserviços com baixo acoplamento.
    • Utilizam frameworks que permitem que os serviços sejam desenvolvidos de forma independente, sem dependências de versões de software ou de outros serviços.
  • As empresas estão adotando cada vez mais a automação por meio de ferramentas de gerenciamento de configuração (como Puppet, Chef e Ansible) e da orquestração de DevOps para aumentar a agilidade no lançamento de software.
  • À medida que as empresas desenvolvem novas aplicações e migram as existentes para nuvens públicas, a portabilidade é fundamental para evitar a dependência de um fornecedor. Embora a tecnologia de máquinas virtuais (VMs) ofereça certo nível de abstração, cada hipervisor implementa seu ambiente de maneira diferente e, portanto, não é totalmente portável.

O Docker busca solucionar esses desafios e, por isso, consolidou-se como uma tecnologia líder e atraente para a virtualização da infraestrutura.

Visão geral do Docker

Os contêineres permitem a virtualização no nível do sistema operacional, isolando cada aplicação como um processo do sistema operacional. Esse conceito existe de várias formas em sistemas operacionais como o BSD, com Jails; o Oracle Solaris, com Zones; e, mais recentemente, o Linux, com LXC. O Docker se baseia no LXC e adicionou uma solução simplificada para permitir que os desenvolvedores criem, empacotem e implantem aplicações em infraestruturas de nuvem sem a necessidade de um hipervisor.

Os seguintes recursos diferenciam o Docker de outras tecnologias de contêineres:

  • Uma camada leve de abstração (o mecanismo do Docker) sobre o sistema operacional para gerenciar o isolamento e a comunicação em rede entre aplicações.
  • Uma interface de programação de aplicações (API) documentada para simplificar a implantação de aplicações baseadas em Linux.
  • O Docker Registry para compartilhar aplicações com outros usuários e desenvolvedores.
  • Portabilidade de aplicações entre hosts compatíveis com Docker, sejam eles físicos, virtuais ou hospedados na nuvem.
  • Um sistema de arquivos de união que disponibiliza um sistema de arquivos comum a todos os contêineres Docker.
  • Um ecossistema de empresas parceiras que fornecem serviços e softwares de valor agregado, permitindo que o Docker se integre perfeitamente a uma ampla variedade de fluxos de trabalho de desenvolvimento.

O que é um sistema de arquivos de união?

Um sistema de arquivos de união permite que cada contêiner forneça seus próprios serviços específicos, mesmo que o caminho e o nome do arquivo coincidam com os de um arquivo subjacente. Por exemplo, um contêiner pode precisar da versão 2.6 de uma biblioteca Python, enquanto outro pode exigir uma versão mais recente. O sistema de arquivos subjacente pode fornecer a versão 2.6, atendendo assim às necessidades de um dos contêineres. No entanto, o contêiner que exige a versão mais recente pode fornecê-la como parte de sua imagem. Isso reduz o tamanho das imagens de contêiner, pois elas precisam conter apenas o que é estritamente necessário para sua execução.

Resumo da conteinerização com Docker e da tecnologia de máquinas virtuais

O diagrama da Figura 1 ilustra os componentes usados nas implantações de aplicações com VMs e Docker. Observe que, neste exemplo, a abordagem com VMs utiliza dois sistemas operacionais convidados para dar suporte a duas aplicações. Em comparação, o Docker requer apenas um sistema operacional host para alcançar a mesma densidade de aplicações e, naturalmente, faz isso com uma sobrecarga menor.

Figura 1: Comparação entre máquinas virtuais e contêineres Docker em um único host.

A tabela a seguir apresenta uma comparação entre os recursos de máquinas virtuais (VMs) e do Docker.

Docker em máquinas virtuais

Como mencionado anteriormente, o principal objetivo do Docker é simplificar o gerenciamento do ciclo de vida das aplicações. Embora executar o Docker diretamente no hardware seja certamente uma opção atraente, há vantagens em executá-lo em hipervisores. Entre elas estão a capacidade de criar snapshots e realizar migrações em tempo real de uma máquina virtual inteira — recursos que podem ser requisitos essenciais para a recuperação de desastres sem perder o estado das operações em andamento.

As principais soluções de gerenciamento e orquestração de infraestrutura, como VMware vRealize Suite e OpenStack, e nuvens públicas, como AWS e Azure, oferecem suporte ao Docker em um determinado tipo de hipervisor, mas disponibilizam um ambiente comum ao contêiner Docker, permitindo a portabilidade dos aplicativos independentemente do ambiente. Esse tipo de modelo de implantação heterogêneo permite que os clientes comecem a usar o Docker e aproveitem os benefícios de realizar iterações mais rapidamente, sem precisar alterar a infraestrutura subjacente.

Ao adotar uma única VM e um único sistema operacional por host, os clientes também podem obter benefícios no uso de recursos, pois a VM não precisa disputar recursos. Esse aumento de eficiência se deve ao fato de que a memória e o disco local podem ser alocados a esse único sistema operacional, enquanto o hipervisor não precisa mais arbitrar entre vários sistemas operacionais.

Visão geral técnica da rede do Docker

A rede permite criar redes virtuais no Docker Engine que abrangem vários hosts. Os contêineres podem ser conectados a essas redes onde quer que estejam, proporcionando controle total sobre a topologia da rede e sobre quais contêineres podem se comunicar com quais outros elementos da rede. Além disso, o sistema que gerencia as redes pode ser substituído por um plug-in, permitindo a integração com qualquer sistema de rede desejado sem a necessidade de modificar a aplicação.

Para comportar uma alta densidade de contêineres em um determinado host, é importante entender o mecanismo pelo qual cada contêiner se conecta à rede. Por padrão, o Docker fornece a cada contêiner um endereço privado que só pode ser acessado diretamente por outro contêiner localizado no mesmo host.

Para que os serviços possam acessar um contêiner a partir de outro host, o tráfego deve ser roteado pela função de Tradução de Endereços de Rede (NAT) do Docker, baseada em iptables. Um exemplo é mostrado na Figura 2.

Figura 2: Os serviços são roteados pela função de NAT baseada em iptables do Docker para acessar um contêiner em outro host.

A interface do host (Eth0) é exposta usando outro endereço (neste caso, outro endereço RFC1918, 192.168.10.10). Cada contêiner Docker recebe automaticamente um endereço no espaço 172.x.x/16 quando é iniciado. Para que um contêiner se comunique de forma bidirecional com entidades externas ao seu host, é necessário atribuir a ele um conjunto explícito de regras por meio do iptables.

No exemplo mostrado na Figura 2, as regras foram configuradas para permitir que os contêineres se comuniquem por meio de um mapeamento de IP e porta, expondo o contêiner A como 192.168.10.10/porta 80 e o contêiner B como 192.168.10.10/porta 81. No entanto, o contêiner C só pode se comunicar com os outros dois contêineres usando o endereçamento 172.17.0.x.

O Docker também oferece suporte a IPv6 e permite o uso de endereços totalmente roteáveis. Isso possibilita que os contêineres se comuniquem com outros em hosts diferentes sem a necessidade de mapeamento de endereços. No entanto, isso funciona apenas com IPv6 e, portanto, pode ter aplicabilidade limitada em alguns ambientes.

SDN e Docker

Muitos data centers definidos por software usam o conceito de redes definidas por software (SDN) para implantar seus sistemas convidados com flexibilidade. A SDN permite configurar túneis de rede isolados para locatários independentes no mesmo hardware físico. Ela também pode ser útil para fornecer uma camada 2 encapsulada em túnel dentro de um data center em nuvem que, de outra forma, seria totalmente roteado. A rede do Docker é baseada no conceito de Docker Bridge, que pode ser conectada a um Open vSwitch para permitir a interoperabilidade com tecnologias como VXLAN ou GRE.

O uso do Open vSwitch dessa forma permite a segregação de rede de camada 2 para multilocação, além de oferecer opções de conexão com outros ambientes virtualizados. Por exemplo, é provável que um data center que utilize o Docker ainda use máquinas virtuais para serviços essenciais aos quais devem ser reservados recursos dedicados conhecidos. Esses serviços podem incluir serviços de entrega de aplicações ou recursos de alto desempenho, como bancos de dados e nós de processamento. Esses recursos podem ser conectados à rede por meio de tecnologias como VXLAN ou GRE, para que o tráfego de um locatário não fique visível para outro.

O dimensionamento de aplicações nesse tipo de ambiente exige serviços de ADC que também sejam compatíveis nativamente com os protocolos de tunelamento. A F5 oferece recursos multi-tenant de VXLAN e GRE, permitindo que funções como balanceamento de carga, descarregamento de SSL, firewall, segurança de aplicações, NAT e serviços de DNS sejam disponibilizadas aos clientes na rede por meio de um túnel. Além disso, a F5 oferece interoperabilidade entre diferentes tipos de encapsulamento de túnel, incluindo VLANs 802.1Q.

Figura 3: A F5 oferece interoperabilidade entre tipos de encapsulamento de túneis, incluindo VLANs 802.1Q.

No exemplo mostrado na Figura 3, as camadas principais da aplicação, como um banco de dados, podem estar localizadas em uma parte do data center diferente daquela onde estão os recursos usados para hospedar instâncias do Docker. Nesse caso, a rede do locatário pode usar GRE ou VXLAN para isolar e interligar as duas sub-redes que, de outra forma, seriam fisicamente distintas.

Uma solução BIG-IP pode ser integrada de forma transparente à rede no nível do locatário por meio da criação de um endpoint de túnel VXLAN (VTEP) na instância BIG-IP. Assim, ela passa a fazer parte da rede do locatário, com conectividade às instâncias do Docker e de máquinas virtuais.

A partir da versão 1.7, o Docker passou a oferecer alguns recursos experimentais que ampliam os recursos básicos de rede do Docker com conceitos de SDN. A arquitetura de plug-ins oferece uma excelente oportunidade para incorporar os serviços de rede e de entrega de aplicações da F5 a diversos novos casos de uso, incluindo firewall de última geração com contêineres cientes das aplicações, análise de fluxos de contêineres e aplicação de políticas, além do gerenciamento de tráfego por fluxo.

Direcionamento da F5 sobre a conteinerização com Docker

A F5 oferece uma variedade de produtos para viabilizar a virtualização. Como líder do mercado de ADC, com o mais amplo portfólio do setor em serviços de entrega e segurança de aplicações de L4 a L7, a F5 explora constantemente tecnologias inovadoras e as estende às plataformas BIG-IP, pois todas compartilham uma estrutura subjacente comum. A Figura 4 mostra a variedade de produtos oferecidos pela F5, desde hardware personalizado até ofertas completas de serviços de L4 a L7 baseadas em nuvem e fornecidas como serviço. A plataforma BIG-IP está bem posicionada para oferecer suporte a aplicações executadas em contêineres Docker.

Figura 4: A F5 oferece uma linha completa de serviços de entrega e segurança de aplicações em uma plataforma unificada.

Evolução da plataforma F5 com o Docker

Como mencionado acima, a F5 reconhece os benefícios do Docker em diferentes casos de uso. No entanto, a implantação em uma infraestrutura conteinerizada ainda está em estágio inicial, e há várias opções para descoberta de serviços (como Consul, etcd e Mesos-DNS), orquestração e gerenciamento do ciclo de vida dos serviços de contêineres (incluindo Mesos, OpenStack, Kubernetes, Docker e Cloud Foundry). Embora os serviços de rede sejam um aspecto essencial desse ecossistema, é importante haver uma integração estreita com o ambiente de orquestração para garantir uma implantação fluida. Essa integração também é fundamental para disponibilizar os serviços de L4 a L7 de forma transparente aos usuários que implantam aplicações baseadas em microsserviços em uma infraestrutura conteinerizada. A abordagem da F5 visa proporcionar uma experiência consistente tanto nos serviços quanto na visualização em implantações em bare metal, virtualizadas ou conteinerizadas.

A primeira parte da solução do problema é fornecer serviços de rede para o tráfego norte-sul (N-S), ou seja, o tráfego dos “microsserviços voltados para o cliente”. A maioria das principais plataformas de orquestração gerencia a implantação, o dimensionamento e a disponibilização da conectividade dos serviços em contêineres para o mundo externo. Ao viabilizar uma integração estreita com as principais plataformas de orquestração de contêineres, a F5 garante que os microsserviços N-S possam ser descobertos automaticamente pelos sistemas BIG-IP, que podem então gerenciar o tráfego desses serviços. Por exemplo, o Mesosphere Marathon e o Kubernetes oferecem a opção de atribuir “rótulos” aos serviços. Esses rótulos podem ser usados para descobrir serviços voltados para o cliente (quando iniciados, encerrados ou dimensionados), que podem ser adicionados automaticamente como membros de pool ao sistema BIG-IP.

O uso da abordagem acima com hardware BIG-IP ou edições virtuais (VEs) permite centralizar funções críticas com aceleração por hardware, como:

  • Descarregamento de SSL com gerenciamento centralizado de certificados.
  • Aceleração, como compactação, otimização de TCP e SPDY/HTTP2.
  • Firewall avançado com proteção contra ataques DoS.
  • Fluência em aplicações para impedir ataques à camada de aplicação.
  • Visibilidade de todas as conexões de rede de entrada e saída.
  • Depuração significativamente aprimorada por meio de registros inteligentes e detecção de anomalias.

F5 e tradução de IPv4 para IPv6 com suporte a DNS

As soluções da F5 permitem dimensionar aplicações em contêineres, bem como realizar a tradução de IPv4 para IPv6 e de DNS entre a infraestrutura Docker e a rede externa. Para utilizar uma infraestrutura de contêineres Docker totalmente roteável, as organizações precisarão não apenas de uma função de rede eficiente para a tradução de IPv4 para IPv6, mas também de suporte à tradução de solicitações DNS. A infraestrutura de contêineres Docker pode operar exclusivamente em IPv6, completamente isolada do IPv4 e, ainda assim, manter uma via transparente de conectividade com o IPv4.

Figura 5: Os sistemas BIG-IP executam DNS64 e NAT64 para permitir a conectividade de IPv6 com IPv4.

No exemplo mostrado na Figura 5, os serviços NAT64 e DNS64 foram provisionados (novamente, de qualquer forma, física ou virtual). O contêiner Docker tenta se conectar a www.example.com, para o qual, neste exemplo, não existe um endereço IPv6.

O sistema BIG-IP está configurado como o resolvedor de DNS da instalação da plataforma Docker. Ele está configurado com um endereço IPv6 para o próprio resolvedor de DNS, bem como com um endereço de prefixo IPv6 especial (mostrado em vermelho) para a tradução de IPv4 para IPv6.

Depois que o dispositivo BIG-IP recebe a consulta DNS IPv6, ele primeiro realiza uma operação recursiva para verificar se há um endereço IPv6 disponível. No entanto, neste exemplo, o servidor DNS autoritativo de www.example.com responde à solicitação AAAA com um registro vazio. Em seguida, o dispositivo BIG-IP realiza uma consulta IPv4 e recebe um registro A do DNS. Ele adiciona o endereço de prefixo especial ao início do endereço IPv4 e envia o resultado de volta ao cliente Docker.

O cliente Docker agora tem seu endereço resolvido e inicia uma conexão TCP. Como o Docker está usando o prefixo especial, a função NAT64 reconhece que é necessário realizar a tradução de IPv6 para IPv4.

A função NAT64 cria uma associação para a conexão entre o endereço IPv6 do Docker, o endereço NAT64 com o prefixo especial para esse servidor IPv4 e o servidor IPv4. A solicitação de conexão é enviada ao servidor IPv4. Todas as respostas desse servidor, que responde via IPv4, são traduzidas pela função NAT64 para permitir a conectividade entre o contêiner Docker e o servidor IPv4.

F5 e fluxos de tráfego leste-oeste

A próxima etapa crítica para criar uma integração estreita é fornecer serviços para o tráfego leste-oeste (E-W), ou seja, os dados que trafegam entre microsserviços que exigem serviços de ADC. Considerando a necessidade de ativar serviços em segundos e a natureza efêmera dos microsserviços, a abordagem da F5 é habilitar um ADC leve. (Para serviços avançados, como autenticação ou proteção no nível da aplicação, na camada 7, o tráfego será redirecionado para a instância do BIG-IP na borda N-S.)

O número de serviços conteinerizados em uma arquitetura de microsserviços será muito maior do que em uma arquitetura tradicional, com vários caminhos de comunicação entre os microsserviços. Um provável efeito colateral dessa arquitetura é o aumento da complexidade, o que pode dificultar a solução de problemas de desempenho. Por exemplo, se uma aplicação apresentar baixo desempenho, é importante ter visibilidade de ponta a ponta entre os diferentes serviços, desde a borda N-S. Portanto, uma abordagem de visualização centralizada, capaz de correlacionar os padrões de tráfego entre o sistema BIG-IP no domínio N-S e o ADC leve no domínio E-W, é extremamente importante para a solução de problemas.

Instâncias de soluções F5 BIG-IP também podem ser inseridas entre aplicações para fornecer serviços de balanceamento de carga ou segurança, atendendo às preocupações de segurança relacionadas ao tráfego L-O. Por exemplo, um host Docker pode ser configurado para direcionar o tráfego de um contêiner por meio de um sistema BIG-IP para análise antes que ele entre em outro contêiner. Isso pode ser feito usando o BIG-IP Application Security Manager™ (ASM), que compreende o contexto das aplicações e pode detectar se o contêiner em questão está sofrendo um ataque, como a exploração de uma vulnerabilidade.

Abordagem em fases da F5 para a entrega de serviços do Docker

Atualmente, muitas implementações bem-sucedidas de clientes da F5 utilizam conteinerização em grande escala. Essas organizações atuam em diversos mercados verticais, incluindo os setores financeiro e de telecomunicações, além de provedores de SaaS. Atualmente, o papel das soluções da F5 nesses ambientes inclui o fornecimento de serviços de ADC para garantir aplicações rápidas, seguras e disponíveis. Esses serviços podem ser integrados para permitir o autoatendimento por proprietários de aplicações ou equipes de DevOps — ou para orquestrá-los por meio do sistema de gerenciamento de contêineres.

A F5 planeja estender esses serviços à própria infraestrutura conteinerizada para atender à descoberta de serviços, ao gerenciamento de tráfego Leste-Oeste (E-W) e à segurança. A F5 também planeja aproveitar a conteinerização em seu portfólio de produtos, utilizando a tecnologia em plataformas físicas, oferecendo serviços de software em contêineres e adotando a arquitetura conteinerizada na plataforma de serviços baseados em nuvem F5 Silverline®.

A tabela abaixo oferece uma visão geral das áreas que a F5 está explorando ou desenvolvendo ativamente:

Conclusão

O Docker oferece oportunidades claras para melhorar a eficiência dos data centers, sejam eles físicos ou baseados em nuvem. Ao mesmo tempo, quem adota o Docker pode ter mais confiança de que suas aplicações são portáveis para novos ambientes. Acima de tudo, o Docker permite que os desenvolvedores de aplicações se tornem mais ágeis e lancem aplicações no mercado com mais rapidez. Ao adaptar suas práticas de DevOps ao modelo do Docker, os clientes frequentemente aproveitam a oportunidade para introduzir novos fluxos de trabalho de autoatendimento, baseados em serviços padronizados menores, nos quais os desenvolvedores podem implantar suas aplicações.

O Docker permite que os aplicativos sejam dimensionados rapidamente por meio da instanciação de contêineres leves, e os produtos de entrega de aplicativos da F5 oferecem suporte completo a esses ambientes. Com as soluções F5 BIG-IP, os clientes podem orquestrar todo o ciclo de vida de um aplicativo. Isso pode ser feito por meio de APIs REST abrangentes para operações críticas, como criação e manutenção de VIPs, gerenciamento centralizado de SSL/certificados, serviços de firewall e segurança de aplicativos com alta disponibilidade em uma arquitetura multilocatário.

O Docker pode ser utilizado em diversos modelos, incluindo implantações em nuvens públicas e privadas. A F5 está na vanguarda do fornecimento de interoperabilidade e suporte para esses ambientes, oferecendo funcionalidades essenciais voltadas especificamente para OpenStack, VMware e os principais provedores de nuvem, como Amazon AWS e Microsoft Azure.

Os clientes que estão migrando para um modelo de DevOps mais avançado, no qual o Docker é um componente essencial, reconhecem que os possíveis ganhos operacionais dependem de uma plataforma escalável, segura, altamente disponível e tão ágil quanto exigem os novos fluxos de trabalho. Os produtos e serviços da F5 foram desenvolvidos para funcionar com o mais amplo conjunto de tecnologias e parceiros de tecnologia do setor, concretizando a visão do Docker. O compromisso da F5 com o Docker é respaldado por investimentos sólidos no roadmap e pelo aprimoramento contínuo dos produtos, a fim de garantir o sucesso daquele que se tornará um dos principais modelos de implantação para data centers definidos por software.

PUBLICADO EM 20 DE JUNHO DE 2016