F5 e conteinerização

Introdução

As organizações enfrentam constantemente o dilema entre adotar mudanças tecnológicas para criar novas oportunidades de negócios e proteger a empresa contra novos desafios e riscos. Neste artigo, examinaremos a conteinerização e como a adoção dessa tecnologia nos produtos da F5 afeta profissionais de TI, arquitetos e tomadores de decisões empresariais.

Nos últimos 20 anos, a virtualização transformou a computação em servidores, permitindo que vários sistemas operacionais independentes fossem executados em uma única plataforma de hardware. Uma abordagem mais moderna é a conteinerização (ou virtualização do sistema operacional), que permite que vários aplicativos sejam executados em uma única instância de um sistema operacional host. Cada instância de aplicativo compartilha os arquivos binários e as bibliotecas instalados nessa única instância do sistema operacional. A Figura 1 compara essas abordagens.

Figura 1 - Comparação entre máquinas virtuais e contêineres

Ao contrário das máquinas virtuais (VMs), os contêineres podem compartilhar o mesmo sistema operacional, realizando a virtualização no nível do sistema operacional, em vez de no nível do hipervisor.

Não é de surpreender que os desenvolvedores gostem de contêineres, pois eles tornam o desenvolvimento e a implantação de aplicações, bem como a inicialização de microsserviços, processos rápidos e fáceis. A conteinerização também proporciona maior portabilidade, já que as aplicações em contêineres são mais fáceis de implantar em diferentes sistemas operacionais, plataformas de hardware e serviços de nuvem. Os contêineres consomem menos recursos do que as aplicações executadas diretamente em sistemas operacionais hospedados em servidores bare metal ou em máquinas virtuais.

Em geral, a maior parte das discussões (e da documentação) sobre contêineres se concentra na perspectiva da programação ou de DevOps. Como profissional de TI, arquiteto de sistemas ou responsável pela tomada de decisões de negócios, embora você reconheça a flexibilidade que a conteinerização pode proporcionar, talvez tenha preocupações legítimas sobre como essa mudança afetará a administração, o gerenciamento e o monitoramento de aplicativos e serviços em seu ambiente. Você também quer garantir que a conteinerização não afete negativamente a segurança da rede e dos aplicativos.

Como lidar com os desafios modernos de TI

Em um mercado cada vez mais competitivo, os sistemas modernos de TI devem proporcionar benefícios comerciais concretos. Para atender a esse requisito, é fundamental que os departamentos de TI possam ampliar seu portfólio de aplicações, projetando e criando arquiteturas que contemplem não apenas mais aplicações, mas aplicações com mais funcionalidades, melhor usabilidade e integração mais fácil.

O desafio para os diretores de TI é que seus departamentos precisam oferecer mais funcionalidades sem aumentar o quadro de funcionários. Hoje, os ganhos de produtividade não vêm da contratação de mais pessoas, mas dos avanços em tecnologia e automação, que permitem ampliar o número de aplicativos disponíveis para os clientes, mantendo uma equipe do mesmo tamanho.

A facilidade de implantação de contêineres representa mais um desafio. Os desenvolvedores precisam de treinamento e orientação para considerar tanto a escalabilidade quanto a segurança ao criar aplicações, e os profissionais de TI podem ajudá-los a alcançar esses objetivos. Nesse contexto, é preciso avaliar o impacto de plataformas de contêineres, como Kubernetes e Docker, no ambiente de produção e garantir que a necessidade de agilidade não gere resultados indesejáveis devido a práticas de segurança inadequadas ou à falta de consideração das cargas de produção.

Kubernetes é uma plataforma de código aberto para gerenciar serviços e cargas de trabalho em contêineres. O Kubernetes surgiu originalmente como o sistema de agendamento e orquestração de contêineres do Google, que posteriormente foi doado pela empresa à Cloud Native Computing Foundation, tornando o código-fonte aberto a todos. O Docker oferece um tipo semelhante de arquitetura e distribuição de código aberto, composto por um conjunto integrado de Software como Serviço (SaaS) e Plataforma como Serviço (PaaS).

Calculando o tempo para gerar valor

Um fator fundamental para gerar benefícios empresariais concretos é minimizar o tempo para obtenção de valor. Cada vez mais, fatores como desempenho e latência ficam em segundo plano diante da facilidade de implementação. Consequentemente, quando há dois componentes com funcionalidades praticamente idênticas, mas um oferece melhor desempenho enquanto o outro é mais fácil de integrar, as organizações tendem a escolher o componente que se integra mais facilmente ao ambiente atual. À medida que a complexidade do ambiente aumenta, essa tendência provavelmente continuará.

Determinando o valor

Ao considerar a implementação de uma tecnologia como a conteinerização, é necessário ter alguma forma de medir o valor proporcionado por essa nova abordagem. Os fatores que afetam esse valor normalmente incluem adequação, capacidade, esforço e custo. A equação a seguir apresenta um exemplo de como atribuir um valor relativo com base nesses fatores.

As unidades usadas na equação são irrelevantes; o importante é que sejam as mesmas para cada item avaliado.

Essa equação destaca que a tecnologia deve ser integrada de forma simples e que a familiaridade (ou seja, a facilidade de inserção) pode ser mais importante do que recursos ou desempenho de primeira linha. Consequentemente, o esforço de implantação exerce um efeito de equilíbrio nos cálculos do valor geral, o que pode fazer com que produtos menos avançados sejam mais atraentes para os clientes devido à facilidade de inserção.

Um exemplo desse efeito pode ser observado em duas soluções de monitoramento concorrentes. O Produto A tem especificações excelentes, com recursos de registro e geração de relatórios líderes da categoria. Ele incorpora segurança de nível militar e é altamente gerenciável. Infelizmente, sua interface de linha de comando proprietária, o suporte limitado a padrões abertos e a falta de recursos de integração dificultam sua instalação. Ele também é mais caro do que a maioria dos outros produtos disponíveis no mercado.

Em comparação, o Produto B está longe de oferecer os mesmos recursos de seu concorrente, embora ainda proporcione níveis aceitáveis de monitoramento e segurança. No entanto, ele supera o produto concorrente tanto em custo quanto em facilidade de instalação. Ao organizar as pontuações de cada produto, obtém-se a tabela abaixo, com notas de 1 a 10 para adequação, capacidade e esforço de instalação, sendo 1 a menor nota e 10 a maior.

Ao inserir esses números na equação acima, obtém-se a pontuação de valor indicada na última linha da tabela.

É possível perceber como o produto menos adequado e com menos recursos, mas que é cinco vezes mais fácil de instalar e custa metade do preço, oferece um valor estimado três vezes maior em comparação com seu concorrente líder de mercado. Muitas organizações compreendem essas considerações e estão usando cada vez mais a facilidade de instalação e integração como um fator essencial na adoção e implantação de novas tecnologias. Abordagens baseadas em contêineres podem reduzir significativamente o esforço de implantação e controlar os custos, mantendo ao mesmo tempo a adequação e os recursos.

Por que os contêineres estão se tornando cada vez mais populares?

Com os aplicativos gerando cada vez mais valor para os negócios, a conteinerização oferece uma solução lógica para os desafios das práticas de implementação de TI centradas em DevOps. Os contêineres proporcionam isolamento tanto da plataforma em que são executados quanto entre si, sem a sobrecarga de gerenciamento associada à execução de máquinas virtuais. Os desenvolvedores podem criar facilmente ambientes de aplicativos que contenham todos os binários e bibliotecas necessários, com os recursos de rede e gerenciamento integrados. A conteinerização também simplifica os testes e a implantação de aplicativos.

Os ambientes baseados em contêineres proporcionam maior aproveitamento de recursos do que os computadores virtuais, pois permitem aumentar significativamente o número de instâncias de aplicações executadas em um servidor. Sem a sobrecarga dos sistemas operacionais do host e do convidado, os ambientes de contêineres usam o tempo de processamento e o espaço de memória com mais eficiência ao compartilhar o kernel do sistema operacional. A conteinerização também oferece maior flexibilidade arquitetônica, pois a plataforma subjacente pode ser uma máquina virtual ou um servidor físico. A Estratégia de Produtos da Red Hat1 indica que quase metade dos clientes do Kubernetes que futuramente implantarão aplicações em contêineres executará o mecanismo de contêiner diretamente em bare metal.

A conteinerização representa o próximo avanço na jornada da computação baseada em hardware para a virtualização e, em seguida, para a multinuvem, permitindo até 100% de automação, tempos de criação de serviços inferiores a um segundo e ciclos de vida de serviços que podem ser medidos em segundos. Ambientes de contêineres como Docker, OpenShift e Kubernetes possibilitam esse provisionamento e desprovisionamento imediatos de serviços e microsserviços em uma arquitetura de TI moderna.

É importante destacar que a conteinerização oferece um benefício essencial no atual cenário multiplataforma e multinuvem: a capacidade de migrar aplicativos do ambiente local para a nuvem, para outro provedor de nuvem e novamente para o ambiente local, tudo isso sem alterar o código subjacente. Como a interoperabilidade é um fator fundamental para as decisões de arquitetura, essa portabilidade permite que os departamentos de TI alcancem marcos importantes nas implementações de serviços de aplicativos e ajuda as equipes de DevOps a atingir as metas organizacionais. Um relatório recente da IBM2 destaca que o uso de contêineres para implementar aplicativos também permite que as empresas melhorem a qualidade dos aplicativos, reduzam defeitos e minimizem a indisponibilidade das aplicações e os custos associados.

O mesmo relatório também lista aplicações especialmente adequadas para ambientes baseados em contêineres, incluindo análise de dados, serviços web e bancos de dados. Nesse caso, o principal fator é o desempenho, mas outros aspectos relevantes a considerar são se as aplicações provavelmente serão executadas em vários ambientes e se utilizam microsserviços para dar suporte a várias equipes de DevOps trabalhando em paralelo. Com contêineres, você pode resolver problemas de desempenho simplesmente iniciando mais instâncias de uma aplicação — desde que implemente um projeto de arquitetura sem estado e forneça serviços de aplicações em escala.

Desafios dos contêineres

Os contêineres não estão totalmente livres de desafios de implantação, e essa tecnologia ainda recente não atingiu o mesmo nível de maturidade da virtualização. A seção a seguir destaca alguns dos desafios trazidos pelos contêineres.

  1. Gerenciamento de chaves – O gerenciamento de chaves entre contêineres pode ser problemático, principalmente porque um dos principais benefícios dos contêineres é a portabilidade. Seu ambiente de gerenciamento de chaves precisa ser capaz de lidar com a movimentação de contêineres entre hosts locais, bem como com a migração para a nuvem e o retorno ao ambiente local.
  2. Rede – Os contêineres desafiam os modelos tradicionais de rede devido à rapidez com que podem ser iniciados e encerrados. Consequentemente, endereços de rede estáticos seriam inviáveis nesse tipo de ambiente. Embora mecanismos de endereçamento como o Protocolo de Configuração Dinâmica de Hosts (DHCP) funcionem bem com hosts físicos e máquinas virtuais, as cargas de trabalho em contêineres podem surgir e desaparecer antes que o endereço IP do contêiner possa registrá-lo e torná-lo detectável. A separação do hardware físico de rede por meio de redes definidas por software (SDN) baseadas em contêineres é essencial para permitir a migração de topologias inteiras de contêineres de ambientes locais para ambientes de nuvem privada e pública. A maioria dos ambientes de contêineres implementa alguma forma de Interface de Rede de Contêineres (CNI) para desempenhar essa função.
  3. Várias tecnologias de contêineres – Sua organização talvez já tenha várias tecnologias de contêineres diferentes implementadas em seu ambiente. Mesmo com essas implementações, é provável que sua equipe não tenha um conhecimento técnico aprofundado de todos esses ambientes. O treinamento é importante, assim como dar tempo à sua equipe para se familiarizar com essas diferentes implementações de contêineres. O gerenciamento dessas várias tecnologias de contêineres também é mais caro. No entanto, as melhorias na capacidade de gerenciamento, especialmente na versão mais recente do Kubernetes, tendem a fazer com que as organizações padronizem o ambiente mais fácil e mais utilizado.
  4. Riscos da configuração padrão – À medida que os aplicativos são desenvolvidos em contêineres, aumenta o risco de haver contêineres configurados incorretamente. Um exemplo é a implantação de contêineres com a configuração padrão. A inteligência global de ameaças da Unit 42 da Palo Alto3 identificou recentemente mais de 40.000 dispositivos de contêiner exclusivos com as configurações padrão. É claro que nem todas essas instâncias são vulneráveis à exploração, mas isso evidencia que práticas básicas de configuração incorreta são generalizadas e tornam essas organizações alvos de novas explorações.
Figura 2 - Alcançando uma conteinerização equilibrada

Conteinerização equilibrada

Um critério de projeto essencial na conteinerização é o equilíbrio entre os três vetores: desempenho, densidade e confiabilidade, conforme mostrado na Figura 2.

A abordagem da F5 concentra-se na conteinerização no nível dos componentes, em vez de no nível do sistema. Essa abordagem oferece várias vantagens, entre elas:

  • Reduzir o consumo de memória de cada contêiner, evitando alocar memória para funções de rede não utilizadas.
  • Minimizar a dependência da CNI do host, evitando assim problemas de desempenho da rede.
  • Implementação de componentes pequenos e leves, que reduzem o domínio de falha ao nível do assinante/usuário.

A conteinerização no nível dos componentes nos permite alcançar esse equilíbrio entre três aspectos por meio da desagregação, do agendamento e da orquestração. Os produtos F5 que implementam contêineres usarão esses recursos para maximizar os benefícios da conteinerização.

Serviços de entrada de contêineres da F5

Para apoiar as organizações na adoção de tecnologias baseadas em contêineres, a F5 oferece F5® Container Ingress Services, uma integração de código aberto para contêineres. O Container Ingress Services fornece automação, orquestração e serviços de rede, como roteamento, descarregamento de SSL, roteamento HTTP e segurança robusta. Mais importante ainda, ele integra nosso portfólio de serviços BIG-IP a ambientes nativos de contêineres, como Kubernetes e Red Hat OpenShift.

Em termos de arquitetura, o Container Ingress Services ocupa a seguinte posição em relação aos seus aplicativos em contêineres, adicionando serviços de controlador de Ingress na porta de entrada e permitindo visibilidade e análises por meio do BIG-IP.

Figura 3 - Serviços de entrada de contêineres da F5

O Container Ingress Services aborda dois dos principais problemas identificados anteriormente neste documento: escalabilidade e segurança. Você pode dimensionar os aplicativos para atender às cargas de trabalho dos contêineres e proteger os dados dos contêineres habilitando serviços de segurança. Com a integração da plataforma BIG-IP, você pode implementar recursos de autoatendimento para o desempenho dos aplicativos em seu ambiente de orquestração. O uso do Container Ingress Services também reduz a probabilidade de os desenvolvedores implementarem contêineres do Kubernetes com configurações padrão, por meio do uso de gráficos Helm para implantações e atualizações baseadas em modelos.

Além disso, o Container Ingress Services oferece segurança por meio de serviços avançados de proteção contra ataques a aplicações em contêineres e de controle de acesso. Para desenvolvedores de aplicações e profissionais de DevOps que não estão familiarizados com configurações, os serviços de aplicações da F5 oferecem políticas prontas para uso e controle de acesso baseado em função (RBAC), com suporte de nível empresarial, além das comunidades de clientes do DevCentral e de código aberto.

Controlador de Ingress do Kubernetes NGINX

Os desafios associados ao Kubernetes nativo estão relacionados ao desenvolvimento e ao dimensionamento de aplicações modernas em contêineres sem aumentar a complexidade. Pode haver limitações de desempenho e confiabilidade, e os serviços que funcionam como porta de entrada para contêineres do Kubernetes podem ser implementados de forma inconsistente, exigindo maior esforço de integração para implantação e configuração.

A solução para esses desafios é o NGINX Kubernetes Ingress Controller, que aprimora o ambiente básico do Kubernetes ao fornecer serviços de entrega para aplicações Kubernetes. Normalmente, os pods do Kubernetes só podem se comunicar com outros pods no mesmo cluster. A Figura 4 mostra o Kubernetes Ingress Controller fornecendo acesso da rede externa aos pods do Kubernetes, gerenciado por regras de recursos do Ingress que controlam fatores como o caminho do Identificador Uniforme de Recursos (URI), o nome do serviço de backend e outras informações de configuração. Os serviços disponíveis dependem de você usar o NGINX ou o NGINX Plus.

Figura 4 – NGINX Ingress Controller para Kubernetes

As empresas que usam o NGINX obtêm recursos como balanceamento de carga, terminação de criptografia SSL ou TLS, reescrita de URI e criptografia SSL ou TLS para servidores upstream. O NGINX Plus oferece recursos adicionais, como persistência de sessão para aplicações com estado e autenticação de API por JSON Web Token (JWT).

Aspen Mesh

À medida que as organizações adotam microsserviços para proporcionar maior agilidade aos desenvolvedores e escalabilidade nativa da nuvem, elas enfrentam uma curva de aprendizado enquanto suas capacidades organizacionais acompanham a evolução da tecnologia. Essas organizações querem aproveitar rapidamente os benefícios dos microsserviços, preservando a estabilidade que sustenta a experiência de seus clientes.

Aspen Mesh é uma versão com suporte completo da malha de serviços de código aberto Istio que ajuda as empresas a adotar microsserviços e Kubernetes em escala, além de obter observabilidade, controle e segurança para arquiteturas de microsserviços. O Aspen Mesh adiciona importantes recursos empresariais de malha de serviços, incluindo uma interface de usuário que facilita a visualização e a compreensão do status e da integridade dos seus serviços, RBAC granular e recursos de políticas e configuração que facilitam a implementação do comportamento desejado em suas aplicações conteinerizadas.

O Aspen Mesh fornece uma implementação nativa do Kubernetes, que é implantada no seu cluster Kubernetes e pode ser executada na sua nuvem privada ou pública, ou no ambiente local. É importante ressaltar que ele pode funcionar em conjunto com um mecanismo de entrada baseado na F5, usando o Container Ingress Services para provisionar recursos mais avançados de camada 7.

Do ponto de vista arquitetural, o Aspen Mesh utiliza um modelo de proxy sidecar para adicionar níveis de funcionalidade e segurança a aplicações em contêineres, conforme mostrado na Figura 5.

Figura 5 — Arquitetura do Aspen Mesh

F5 e a adoção de contêineres

A F5 está na vanguarda da adoção de contêineres, oferecendo às organizações a capacidade de operar ambientes de aplicações conteinerizadas confiáveis, seguros e de alto desempenho, que dimensionam os serviços de aplicações tanto para cargas de trabalho simples quanto para cargas de grande escala específicas do setor. A tecnologia de contêineres será um importante facilitador para futuros ambientes de desenvolvimento e implantação de aplicações, como implementações sem servidor, arquiteturas de malha de serviços e segurança na borda móvel. Como empresa, a F5 utiliza tanto suas próprias pesquisas de desenvolvimento quanto implementações comerciais de contêineres para impulsionar e desenvolver aplicações e serviços que farão a diferença para os seus negócios.

Assim como na virtualização de produtos existentes, incorporamos a tecnologia de contêineres de maneiras que podem não ser imediatamente perceptíveis para o administrador, mas que serão totalmente transparentes para o usuário final. Como cliente, você terá mais desempenho, flexibilidade e segurança. À medida que implementamos esses novos aplicativos e serviços de forma integrada, você pode se concentrar em garantir que tenha as funcionalidades de que precisa.

Também estamos trabalhando para incorporar as melhores soluções de código aberto aos nossos produtos, ampliando os serviços oferecidos por essas plataformas e aprimorando os recursos dos nossos ambientes de contêineres. Nosso objetivo é sempre criar produtos mais fáceis de implantar, mais rápidos de integrar às suas redes existentes, mais confiáveis e mais seguros.

Para implementar nossa estratégia de adoção de contêineres, estamos nos concentrando nas seguintes abordagens:

  • Ampliar a variedade de serviços de aplicativos não relacionados à segurança que oferecemos. Nesse sentido, o foco está em fornecer ferramentas melhores que aumentem a observabilidade e a capacidade de gerenciamento dos ambientes de contêineres, incluindo gerenciamento de desempenho de aplicativos, registro e rastreamento, depuração aprimorada e monitoramento geral da integridade dos aplicativos.
  • Adicionar aos contêineres serviços de segurança não voltados ao plano de dados. Nesse sentido, planejamos inovar oferecendo serviços de segurança que reduzam a superfície de ataque dos contêineres em execução.
  • Permitir a hospedagem de contêineres de terceiros em produtos da F5. Essa opção de integração permitiria que aplicativos desenvolvidos por clientes ou terceiros fossem executados em uma interface flexível de runtime de contêineres nos produtos atuais e futuros da F5. Essa abordagem permitiria à F5 criar soluções prontas para uso que incluíssem diversos contêineres e aplicativos comerciais ou desenvolvidos sob medida, melhorando significativamente a interoperabilidade.
  • Fornecer empacotamento para serviços de aplicações existentes usando ferramentas de código aberto. Essa opção cria oportunidades para oferecermos políticas de serviço consistentes entre ambientes legados e ambientes recém-criados.
  • Automatize os serviços de escalabilidade e segurança de aplicações em contêineres para aumentar o número de aplicações gerenciadas, mantendo sob controle os recursos destinados ao suporte delas.

O futuro dos contêineres

A F5 está comprometida com um futuro em que os contêineres sejam um mecanismo fundamental de entrega para muitas das futuras tecnologias de serviços de aplicações. Essas tecnologias incluirão computação sem servidor, malha de serviços e borda móvel, mas também poderão incluir outras abordagens atualmente em desenvolvimento ou ainda não concebidas. Estamos reformulando nosso portfólio de produtos para incorporar contêineres às nossas soluções sem afetar os aspectos importantes de um gerenciamento de rede eficaz.

Assim como ocorre com a virtualização, os próprios contêineres passarão a reconhecer melhor os recursos subjacentes do hardware no qual o mecanismo de contêineres é executado. O uso de múltiplas threads, as velocidades da memória, o acesso ao armazenamento e a rede serão cada vez mais transparentes para os aplicativos executados em cada contêiner, otimizando ainda mais o uso dos recursos.

Não vemos os contêineres como substitutos da virtualização, mas como complementares a ela. Consequentemente, esperamos que os contêineres tenham uma vida útil pelo menos igual à da virtualização e que essa coexistência continue. Por fim, esperamos que surjam outros níveis de abstração que coexistam tanto com a virtualização quanto com os contêineres.

Reconhecemos que a segurança sempre será uma das principais preocupações dos clientes. Por isso, a F5 continua usando sua experiência em appliances de hardware e software, firewalls e redes para oferecer o mais alto nível possível de segurança em todos os seus produtos.

Em resumo, além da nossa tecnologia já existente relacionada a contêineres, a F5 planeja continuar incorporando contêineres ao portfólio de produtos F5, oferecendo a você mais opções de integração, maior confiabilidade, melhor desempenho e menor tempo de implantação com aplicativos atualizados e futuros.

Para obter mais informações sobre a F5 e o suporte a contêineres para aplicativos, acesse f5.com/solutions/bridge-f5-with-container-environments

Notas de rodapé

1 A ascensão dos servidores Kubernetes bare metal, Container Journal, Mike Vizard, 2019
2 O estado do desenvolvimento de aplicativos baseados em contêineres, relatório da IBM Cloud, 2018
3 Mal configurados e expostos: serviços de contêineres, Palo Alto Networks, Nathaniel Quist, 2019

PUBLICADO EM 23 DE JUNHO DE 2022