As necessidades em evolução da TI e o advento de estratégias ágeis de desenvolvimento e implantação levaram ao surgimento da "containerização", uma alternativa à virtualização completa da máquina, na qual um aplicativo é encapsulado em um contêiner com seu próprio ambiente operacional. A conteinerização é uma solução atraente que permite que os desenvolvedores iterem mais rapidamente. Ele também oferece benefícios adicionais que abordam a sobrecarga associada às máquinas virtuais, permitindo maior utilização de 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 citado como a implementação preferida devido ao seu amplo suporte no setor, padronização e ampla gama de recursos. Nas palavras da empresa, o Docker é "uma plataforma aberta para criar, enviar e executar aplicativos distribuídos. Ele fornece aos programadores, equipes de desenvolvimento e engenheiros de operações a caixa de ferramentas comum necessária para aproveitar a natureza distribuída e em rede dos aplicativos modernos." Dessa forma, o Docker simplifica o gerenciamento do ciclo de vida do aplicativo, do desenvolvimento à implantação, e permite a portabilidade do aplicativo. Essa simplificação é fundamental para as empresas, considerando que há diversas opções de hospedagem para um aplicativo, seja na infraestrutura de nuvem pública ou privada.
Este artigo descreve a direção da F5 sobre o uso de contêineres na tecnologia F5 e para dar suporte ao Docker para entrega e segurança de aplicativos. Antes de discutir essa estratégia, é importante reconhecer os pontos problemáticos do data center e por que essas tecnologias são essenciais para a entrega de aplicativos empresariais de próxima geração.
Observação: Este documento é destinado a tomadores de decisões de TI, arquitetos e desenvolvedores. Presume-se que o leitor tenha conhecimento prévio sobre tecnologia de virtualização, desenvolvimento de software e processo de ciclo de vida de lançamento.
Vários estudos recentes sobre pontos problemáticos da infraestrutura do data center identificaram um conjunto consistente de necessidades para a evolução do data center:
À medida que novas tendências surgem no desenvolvimento de aplicativos, os clientes corporativos estão mudando sua visão do modelo de gerenciamento do ciclo de vida do aplicativo para o seguinte:
O Docker tenta abordar esses desafios e, portanto, surgiu como uma tecnologia líder e atraente para virtualizar a infraestrutura.
Os contêineres permitem a virtualização no nível do sistema operacional isolando cada aplicativo como um processo do sistema operacional. O conceito tem sido usado em muitas formas em sistemas operacionais como BSD com Jails, em Oracle Solaris com Zones e, mais recentemente, em Linux com LXC. O Docker é construído em LXC e adicionou o "botão fácil" para permitir que os desenvolvedores criem, empacotem e implantem aplicativos em infraestrutura de nuvem sem exigir um hipervisor.
Os seguintes recursos diferenciam o Docker de outras tecnologias de contêiner:
Um sistema de arquivos de união permite que cada contêiner forneça seus próprios serviços específicos para aquele contêiner, mesmo que o caminho e o nome do arquivo subjacentes colidam com 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 posterior. O sistema de arquivos subjacente pode fornecer a versão 2.6, caso em que um contêiner é satisfeito. No entanto, o contêiner que requer a versão mais recente pode fornecer isso como parte de sua imagem de contêiner. Isso resulta em uma pegada menor para imagens de contêiner, pois elas precisam conter apenas o que é estritamente necessário para serem executadas.
O diagrama na Figura 1 ilustra os componentes usados em implantações de VM e aplicativos Docker. Observe que, neste exemplo, a abordagem de VM tem dois sistemas operacionais convidados para dar suporte a dois aplicativos. Em comparação, o Docker requer apenas um sistema operacional host para atingir a mesma densidade de aplicativos, mas, é claro, tem uma sobrecarga menor para fazer isso.
A tabela a seguir mostra a comparação entre os recursos da VM e do Docker.
Máquina virtual | Docker | |
---|---|---|
Sobrecarga de armazenamento do aplicativo | Gigabytes de sobrecarga do sistema operacional por aplicativo. | Um sistema operacional comum para todos os contêineres. Pequena sobrecarga do mecanismo Docker (megabytes). |
Instanciação | Tempo de inicialização do sistema operacional e do aplicativo. | Somente no momento do início da aplicação. |
Alocação de recursos | Rígido e monolítico. CPUs virtuais normalmente são alocadas a núcleos de CPU físicos ou hyperthreads. O espaço em disco normalmente é pré-alocado para um host de VM. |
Flexível. Os contêineres do Docker podem ter limites de CPU alocados e podem compartilhar núcleos de CPU do host físico de forma muito eficiente. O uso de memória do Docker pode ser limitado se desejado, mas a memória usada pode ser alocada eficientemente entre processos no host e seus contêineres. O disco é compartilhado através do sistema de arquivos union. |
segurança | Excelente. As VMs vivem em mundos completamente separados, com pouco compartilhamento entre elas, a menos que seja deliberadamente permitido pelo ambiente de hospedagem. |
Bom. O kernel do sistema operacional impede que os contêineres acessem o espaço de memória uns dos outros. O sistema de arquivos de união fornece a cada contêiner uma visão somente leitura do contêiner compartilhado. Quando um contêiner modifica alguma coisa, ele recebe uma cópia específica desses dados, que é vista apenas por esse contêiner. |
Como mencionado anteriormente, o objetivo principal do Docker é simplificar o gerenciamento do ciclo de vida do aplicativo. Embora o Docker em bare metal seja certamente uma opção atraente, há benefícios em executar o Docker em hipervisores. Isso inclui a capacidade de fazer instantâneos e permitir migrações ao vivo de um convidado inteiro, os quais podem ser requisitos essenciais para recuperação de desastres sem perder o estado em andamento.
As principais soluções de gerenciamento e orquestração de infraestrutura, como VMware vRealize Suite, OpenStack e nuvens públicas, como AWS e Azure, oferecem suporte ao Docker em um determinado tipo de hipervisor, mas expõem um ambiente comum ao contêiner do Docker, permitindo a portabilidade do aplicativo independentemente do ambiente. Esse tipo de modelo de implantação heterogêneo permite que os clientes comecem a usar o Docker e obtenham os benefícios de poder iterar mais rapidamente sem precisar alterar a infraestrutura subjacente.
Ao migrar para uma única VM e sistema operacional por host, os clientes também podem obter benefícios de recursos, já que a VM não precisa competir por recursos. Esse aumento na eficiência se deve ao fato de que a memória e o disco local podem ser alocados para esse único sistema operacional, enquanto o hipervisor não precisa mais arbitrar entre vários sistemas operacionais.
A rede permite que você crie redes virtuais no Docker Engine que abrangem vários hosts. Os contêineres podem ser conectados a essas redes onde quer que estejam, fornecendo controle completo sobre a topologia da rede e quais contêineres podem se comunicar com quais outros elementos da rede. Além disso, o sistema que alimenta as redes pode ser trocado por um plug-in, permitindo a integração com qualquer sistema de rede desejado sem precisar modificar o aplicativo.
Para acomodar altas densidades de contêineres em qualquer host, é importante entender o mecanismo pelo qual cada contêiner se junta à rede. Pronto para uso, o Docker fornece a cada contêiner um endereço privado que pode ser acessado diretamente somente de outro contêiner que resida no mesmo host.
Para que os serviços cheguem a um contêiner de outro host, eles devem ser roteados por meio da função Network Address Translation (NAT) baseada em iptables do Docker. Um exemplo é mostrado na Figura 2.
A interface do host (Eth0) é exposta usando outro endereço (neste caso, outro endereço RFC1918, 192.168.10.10). Cada contêiner do Docker recebe um endereço no espaço 172.x.x/16 automaticamente quando é iniciado. Para que um contêiner se comunique com entidades fora de seu host de forma bidirecional, ele deve receber um conjunto explícito de regras por meio do iptables.
No exemplo mostrado na Figura 2, as regras foram configuradas de modo que os contêineres possam se comunicar 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. Entretanto, 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 suporta IPv6 e permite o uso de endereços totalmente roteáveis. Isso permite que os contêineres se comuniquem com outros em hosts diferentes sem a necessidade de mapeamento de endereços. No entanto, isso só funcionará para IPv6, portanto pode ter aplicabilidade limitada para alguns ambientes.
Muitos data centers definidos por software usam o conceito de rede definida por software (SDN) para implantar seus convidados de forma flexível. O SDN permite que túneis de rede isolados sejam configurados para locatários independentes no mesmo hardware físico. Também pode ser útil fornecer uma camada 2 em túnel dentro de um data center na nuvem que, de outra forma, seria totalmente roteado. A rede Docker é construída em torno do conceito da Docker Bridge, que pode ser anexada a um Open vSwitch para permitir a interoperabilidade com tecnologias como VXLAN ou GRE.
Usar o Open vSwitch dessa maneira permite a segregação de rede da camada 2 para multilocação, bem como opções de conexão a outros ambientes virtualizados. Por exemplo, é provável que um data center que utiliza o Docker ainda use máquinas virtuais para serviços essenciais para os quais recursos dedicados conhecidos devem ser reservados. Podem ser serviços de entrega de aplicativos 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 seja visível para outro.
O dimensionamento de aplicativos nesse tipo de ambiente requer serviços ADC que também podem participar nativamente dos protocolos de tunelamento. O F5 oferece recursos VXLAN e GRE multilocatário para que funções como balanceamento de carga, descarregamento de SSL, firewall, segurança de aplicativos, NAT e serviços de DNS possam ser fornecidos aos clientes na rede por meio de um túnel. Além disso, o F5 fornece interoperabilidade entre tipos de encapsulamento de túnel, incluindo VLANs 802.1Q.
No exemplo mostrado na Figura 3, as camadas principais do aplicativo, como um banco de dados, podem estar localizadas em uma parte diferente do data center do que os recursos usados para hospedar instâncias do Docker. Nesse caso, a rede de locatários pode usar GRE ou VXLAN para isolar e unir duas sub-redes fisicamente distintas.
Uma solução BIG-IP pode ser inserida perfeitamente na rede no nível do locatário criando um ponto de extremidade de túnel VXLAN (VTEP) na instância BIG-IP. Em seguida, ele se torna parte da rede de locatários com conectividade com o Docker e instâncias de máquina virtual.
A partir da versão 1.7, o Docker começou a oferecer alguns recursos experimentais que estendem os recursos básicos de rede do Docker com conceitos de SDN. A arquitetura de plug-in oferece uma oportunidade interessante para permitir que serviços de entrega de aplicativos e rede F5 sejam inseridos em uma variedade de novos casos de uso, incluindo firewall de última geração com contêineres fluentes em aplicativos, análise de fluxo de contêineres e aplicação de políticas, e gerenciamento de tráfego por fluxo.
A F5 oferece uma variedade de produtos para permitir a virtualização. Como líder de mercado de ADC com o mais amplo portfólio de serviços de segurança e entrega de aplicativos L4–L7 do setor, a F5 está constantemente explorando tecnologias inovadoras e estendendo essas tecnologias em plataformas BIG-IP, já que todas elas compartilham uma estrutura subjacente comum. A Figura 4 mostra a gama de ofertas de produtos da F5, desde hardware personalizado até ofertas completas de serviço baseadas em nuvem para serviços L4-L7. A plataforma BIG-IP está bem posicionada para dar suporte a aplicativos executados em contêineres Docker.
Como mencionado acima, o F5 reconhece os benefícios do Docker em diferentes casos de uso. No entanto, a implantação em infraestrutura em contêineres ainda é incipiente, e existem várias opções para descoberta de serviços (como Consul, etcd e Mesos-DNS), orquestração e gerenciamento do ciclo de vida de serviços de contêiner (que incluem Mesos, OpenStack, Kubernetes, Docker e Cloud Foundry). Embora os serviços de rede sejam um aspecto crítico desse ecossistema, é importante ter uma integração estreita com o ambiente de orquestração para garantir uma implantação perfeita. Essa integração também é vital para tornar os serviços L4-L7 disponíveis e transparentes para usuários que implantam aplicativos baseados em microsserviços em uma infraestrutura em contêineres. A abordagem do F5 visa fornecer uma experiência consistente em serviços, bem como visualização em implantações bare metal, virtualizadas ou em contêineres.
A primeira parte da solução do problema é fornecer serviços de rede para tráfego norte-sul (N-S) (ou seja, tráfego para os "microsserviços voltados para o lado do cliente"). A maioria das principais plataformas de orquestração lida com a implantação, dimensionamento e exposição da conectividade de serviços em contêineres para o mundo externo. Ao permitir 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 para esses serviços. Por exemplo, o Mesosphere Marathon e o Kubernetes oferecem a opção de “rotular” serviços. Esses rótulos podem ser usados para descobrir serviços voltados para o cliente (iniciar, desmontar ou dimensionar) e podem ser adicionados automaticamente como membros do pool ao sistema BIG-IP.
O uso da abordagem acima com hardware BIG-IP ou edições virtuais (VEs) permite a centralização de funções críticas com aceleração de hardware, como:
As soluções F5 oferecem a capacidade de dimensionar aplicativos em contêineres, bem como executar a tradução de IPv4 para IPv6 e DNS entre a infraestrutura do Docker e a rede externa. Para utilizar uma infraestrutura de contêiner Docker totalmente roteável, as organizações precisarão não apenas de uma função de rede IPv4 para IPv6 eficiente, mas também de suporte para traduzir solicitações de DNS. A infraestrutura de contêineres do Docker pode operar puramente em IPv6, completamente isolada do IPv4 e, ainda assim, manter um caminho perfeito para a conectividade IPv4.
No exemplo mostrado na Figura 5, os serviços NAT64 e DNS64 foram provisionados (novamente, em qualquer formato, físico ou virtual). O contêiner Docker tenta uma conexão com www.example.com, para o qual, neste exemplo, não existe nenhum endereço IPv6.
O sistema BIG-IP está configurado para ser o resolvedor DNS para a instalação da plataforma Docker. Ele é configurado com um endereço IPv6 para o próprio resolvedor de DNS, bem como um endereço de prefixo IPv6 especial (mostrado em vermelho) para tradução de IPv4 para IPv6.
Depois que o dispositivo BIG-IP recebe a consulta DNS IPv6, ele primeiro executa uma operação recursiva para verificar se um endereço IPv6 está disponível. Entretanto, neste exemplo, o servidor DNS autoritativo para www.example.com responde com um registro vazio para a solicitação AAAA. O dispositivo BIG-IP então executa uma consulta IPv4, para a qual recebe um registro DNS A. Ele acrescenta o endereço de prefixo especial ao endereço IPv4 e o envia 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 a tradução de IPv6 para IPv4 é necessária.
A função NAT64 cria uma ligação para a conexão entre o endereço IPv6 do Docker, o endereço NAT64 especialmente prefixado para este 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 conectividade entre o contêiner Docker e o servidor IPv4.
O próximo passo crítico para criar uma integração estreita é fornecer serviços para tráfego leste-oeste (E-W), ou seja, dados transmitidos entre microsserviços que exigem serviços ADC. Considerando a necessidade de iniciar serviços em segundos e a natureza efêmera dos microsserviços, a abordagem do F5 é habilitar um ADC leve. (Para serviços avançados, como autenticação ou L7, proteção em nível de aplicativo, o tráfego será redirecionado para a instância BIG-IP na borda N-S.)
O número de serviços em contêineres em uma arquitetura de microsserviços será muito maior do que em uma arquitetura tradicional, com múltiplos caminhos de comunicação entre microsserviços. O provável efeito colateral dessa arquitetura pode ser a complexidade, dificultando a solução de problemas de desempenho. Por exemplo, se um aplicativo estiver apresentando baixo desempenho, é importante ter visibilidade de ponta a ponta em diferentes serviços, desde a borda N-S. Portanto, uma abordagem de visualização centralizada que possa 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 crítica para a solução de problemas.
Instâncias das soluções F5 BIG-IP também podem ser inseridas entre aplicativos para fornecer balanceamento de carga ou serviços de segurança, abordando as preocupações de segurança do tráfego E-W. Por exemplo, um host Docker pode ser configurado para direcionar o tráfego de um contêiner para atravessar um sistema BIG-IP para análise antes de entrar em outro contêiner. Isso pode ser feito usando o BIG-IP Application Security Manager™ (ASM), que é fluente em aplicativos e pode detectar se o contêiner em questão está sob ataque, como exploração de uma vulnerabilidade.
Muitas implantações bem-sucedidas de clientes da F5 hoje utilizam a conteinerização em grande escala. Essas organizações abrangem muitos mercados verticais, incluindo provedores financeiros, de telecomunicações e de SaaS. A função das soluções F5 nesses ambientes atualmente inclui fornecer serviço ADC nesses ambientes para garantir aplicativos rápidos, seguros e disponíveis. Esses serviços podem ser integrados para permitir o autoatendimento para proprietários de aplicativos ou DevOps, ou para orquestrar esses serviços por meio do sistema de gerenciamento de contêineres.
A F5 planeja estender esses serviços para a própria infraestrutura em contêineres para abordar a descoberta de serviços, o gerenciamento de tráfego E-W e a segurança. A F5 também planeja alavancar a conteinerização em seu conjunto de produtos, aproveitando a tecnologia em plataformas físicas, oferecendo serviços de software em contêineres e usando a arquitetura em contêineres na plataforma de serviços baseada em nuvem F5 Silverline®.
A tabela abaixo fornece um vislumbre das direções que a F5 está explorando ou desenvolvendo ativamente:
Disponível hoje | Prazo Curto | Médio Prazo | Futuro |
---|---|---|---|
Os produtos BIG-IP garantem alta disponibilidade e escalabilidade de aplicativos de contêiner por meio de VIP para uma porta L4 e mapeamento de IP, com API REST completa para integração de orquestração. A gama completa de funções de disponibilidade, aceleração, cache e DNS pode ser implantada em ambientes Docker, juntamente com os principais recursos de proteção e mitigação de segurança do F5. Além disso, a F5 oferece plug-ins para permitir que todos os fatores de forma BIG-IP operem em ambientes Docker utilizando OpenStack. |
A plataforma F5 Silverline usará a capacidade de computação elástica para funcionalidade avançada de DDoS comportamental como parte do serviço de assinatura. Os novos recursos de rede do Docker permitirão a inserção de novos serviços para criação avançada de perfis de tráfego E-W, aplicação de políticas e análise de segurança, com funcionalidade de inspeção e visibilidade de tráfego. |
A F5 está explorando ativamente novos recursos para a tecnologia F5 vCMP ® para permitir alta densidade de VM e estabelecer a base para que o vCMP aproveite novos modelos de implantação, incluindo o Docker. |
A F5 busca expandir a presença de um gerenciador de computação elástico para uso do cliente, permitindo que soluções BIG-IP em qualquer formato aproveitem a funcionalidade de computação em contêineres para cargas de trabalho exigentes. O F5 oferece suporte a um padrão de contêiner aberto (OCS) para permitir que os serviços de virtualização do F5 sejam executados em vários formatos de contêiner. |
O Docker apresenta oportunidades claras para melhorar a eficiência do data center, seja ele físico ou baseado na nuvem. Ao mesmo tempo, os usuários do Docker podem ter mais certeza de que seus aplicativos são portáteis para novos ambientes. Fundamentalmente, o Docker permite que os desenvolvedores de aplicativos se tornem mais ágeis e entreguem os aplicativos ao mercado mais rapidamente. Ao evoluir seu DevOps para o modelo Docker, os clientes geralmente aproveitam a oportunidade para introduzir novos fluxos de trabalho para autoatendimento baseados em serviços padronizados menores nos quais os desenvolvedores podem colocar seus aplicativos.
O Docker permite que os aplicativos sejam escalonados rapidamente por meio de instanciação de contêineres leves, e os produtos de entrega de aplicativos da F5 oferecem suporte total a esses ambientes. Usando 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 nuvem pública e privada. A F5 está na vanguarda no fornecimento de interoperabilidade e suporte para esses ambientes, oferecendo funcionalidades essenciais que têm como alvo específico OpenStack, VMware e grandes provedores de nuvem, como Amazon AWS e Microsoft Azure.
Os clientes que estão migrando para um modelo DevOps evoluído, no qual o Docker é um componente importante, reconhecem que as melhorias operacionais que podem ser potencialmente obtidas dependem de uma plataforma que seja escalável, segura, altamente disponível e tão ágil quanto os novos fluxos de trabalho exigem. Os produtos e serviços da F5 são projetados para trabalhar com o mais amplo conjunto de tecnologias e parceiros de tecnologia do setor para cumprir a promessa da visão do Docker. O compromisso da F5 com o Docker é apoiado por investimentos sólidos no roteiro e melhoria contínua do produto para garantir o sucesso do que se tornará um dos modelos de implantação dominantes para o data center definido por software.