Reduza a complexidade com Kubernetes pronto para produção

NGINX | 05 de fevereiro de 2021

Editor – Este post faz parte de uma série de 10 partes:

  1. Reduza a complexidade com Kubernetes pronto para produção (este post)
  2. Como aumentar a resiliência no Kubernetes com o gerenciamento avançado de tráfego
  3. Como melhorar a visibilidade no Kubernetes
  4. Seis maneiras de proteger o Kubernetes usando ferramentas de gerenciamento de tráfego
  5. Guia para escolher um controlador de Ingress, parte 1: identifique seus requisitos
  6. Guia para escolher um controlador de Ingress, Parte 2: Riscos e preparação para o futuro
  7. Guia para escolher um controlador de Ingress, parte 3: código aberto vs. padrão vs. comercial
  8. Um guia para escolher um controlador de Ingress, Parte 4: opções de controladores de Ingress NGINX
  9. Como escolher uma malha de serviços
  10. Teste de desempenho de controladores de Ingress NGINX em um ambiente de nuvem Kubernetes dinâmico

Você também pode baixar a coleção completa de artigos como um eBook gratuito – Levando o Kubernetes do teste à produção.

2020 foi um ano que poucos de nós esquecerão. O fechamento repentino de escolas, empresas e serviços públicos nos deixou subitamente isolados de nossas comunidades e mergulhados em incertezas quanto à nossa segurança e estabilidade financeira. Agora imagine por um momento se isso tivesse acontecido em 2000, ou mesmo em 2010. O que seria diferente? Tecnologia. Sem os serviços digitais de alta qualidade que consideramos garantidos – assistência médica, streaming de vídeo, ferramentas de colaboração remota –, uma pandemia seria uma experiência muito diferente. O que tornou a tecnologia de 2020 tão diferente daquela das décadas anteriores? Contêineres e microsserviços.

Microsserviços arquiteturas — que geralmente utilizam contêineres e Kubernetes — impulsionam o crescimento dos negócios e a inovação ao reduzir o tempo de lançamento de experiências digitais. Seja em conjunto com arquiteturas tradicionais ou de forma independente, essas tecnologias modernas de aplicativos proporcionam maior escalabilidade e flexibilidade, implantações mais rápidas e até mesmo redução de custos.

Antes de 2020, constatamos que a maioria dos nossos clientes já havia começado a adotar microsserviços como parte de sua estratégia de transformação digital, mas a pandemia realmente acelerou a modernização de aplicações. Nossa pesquisa de 2020 com usuários do NGINX revelou que 60% dos entrevistados usam microsserviços em produção, em comparação com 40% em 2019, e que os contêineres são mais de duas vezes mais populares do que outras tecnologias modernas de aplicações.

O Kubernetes é o padrão de fato para o gerenciamento de aplicações em contêineres, como demonstra a pesquisa de 2020 da Cloud Native Computing Foundation (CNCF), que constatou que 91% dos entrevistados usam o Kubernetes — 83% deles em produção. Ao adotar o Kubernetes, muitas organizações estão preparadas para mudanças arquitetônicas significativas, mas são surpreendidas pelos impactos organizacionais da execução de tecnologias modernas de aplicações em escala. Se você usa o Kubernetes, provavelmente já se deparou com estas três barreiras críticas para os negócios:

  • Cultura
    Mesmo quando as equipes de aplicativos adotam abordagens modernas, como desenvolvimento ágil e DevOps, elas geralmente continuam sujeitas à Lei de Conway, segundo a qual “as organizações projetam sistemas que refletem sua própria estrutura de comunicação”. Em outras palavras, aplicativos distribuídos são desenvolvidos por equipes distribuídas que operam de forma independente, mas compartilham recursos. Embora essa estrutura seja ideal para permitir que as equipes avancem rapidamente, ela também favorece a criação de silos. As consequências incluem falhas de comunicação (que geram suas próprias consequências), vulnerabilidades de segurança, proliferação de ferramentas, práticas de automação inconsistentes e conflitos entre equipes.
  • Complexidade
    Para implementar tecnologias de microsserviços de nível empresarial, as organizações precisam reunir um conjunto de componentes essenciais que ofereçam visibilidade, segurança e gerenciamento de tráfego. Normalmente, as equipes usam plataformas de infraestrutura, serviços nativos da nuvem e ferramentas de código aberto para atender a essa necessidade. Embora cada uma dessas estratégias tenha seu espaço, todas apresentam desvantagens que podem aumentar a complexidade. Com muita frequência, diferentes equipes de uma mesma organização escolhem estratégias distintas para atender aos mesmos requisitos, gerando uma “dívida operacional”. Além disso, as equipes escolhem processos e ferramentas em determinado momento e continuam a usá-los, independentemente das mudanças nos requisitos de implantação e operação de aplicações modernas orientadas a microsserviços e executadas em contêineres. O CNCF Cloud Native Interactive Landscape é um bom exemplo da complexidade da infraestrutura necessária para dar suporte a aplicações baseadas em microsserviços. As organizações precisam dominar uma ampla variedade de tecnologias distintas, o que pode resultar em dependência de infraestrutura, TI paralela, proliferação de ferramentas e uma curva de aprendizado acentuada para os responsáveis pela manutenção da infraestrutura.
  • Segurança
    Requisitos de segurança diferem significativamente entre aplicações nativas da nuvem e tradicionais, pois estratégias como a segurança baseada em perímetros isolados não são viáveis no Kubernetes. O amplo ecossistema e a natureza distribuída das aplicações em contêineres tornam a superfície de ataque muito maior, e a dependência de aplicações SaaS externas oferece a funcionários e agentes externos muito mais oportunidades de inserir código malicioso ou exfiltrar informações. Além disso, as consequências descritas nas áreas de cultura e complexidade — especialmente a proliferação de ferramentas — afetam diretamente a segurança e a resiliência das suas aplicações modernas. Usar diferentes ferramentas em todo o seu ecossistema para resolver o mesmo problema não é apenas ineficiente — isso cria um enorme desafio para as equipes de SecOps, que precisam aprender a configurar corretamente cada componente.

A solução: Kubernetes pronto para produção

Como acontece com a maioria dos problemas organizacionais, a solução para superar os desafios do Kubernetes envolve uma combinação de tecnologia e processos. No restante deste post, vamos nos concentrar no componente tecnológico, mas fique de olho em futuros posts sobre processos e outros assuntos.

Como o Kubernetes é uma tecnologia de código aberto, há inúmeras maneiras de implementá-lo. Embora algumas organizações prefiram criar sua própria implementação padrão do Kubernetes, muitas veem valor na combinação de flexibilidade, direcionamento e suporte oferecida por serviços como o Amazon Elastic Kubernetes Service (EKS), o Google Kubernetes Engine (GKE), o Microsoft Azure Kubernetes Service (AKS), o Red Hat OpenShift Container Platform e o Rancher.

As plataformas Kubernetes podem facilitar a configuração e a entrada em operação; no entanto, elas priorizam a variedade de serviços, e não a profundidade. Assim, embora você possa encontrar todos os serviços de que precisa em um só lugar, é pouco provável que eles ofereçam os conjuntos de recursos necessários para uma verdadeira prontidão para produção em escala. Mais especificamente, eles não se concentram em redes e segurança avançadas, e é justamente nesse aspecto que vemos o Kubernetes decepcionar muitos clientes.

Para tornar o Kubernetes adequado para ambientes de produção, você precisa adicionar mais três componentes, nesta ordem:

  1. Uma camada escalável de entrada e saída para direcionar o tráfego para dentro e para fora do cluster
    Isso é feito com um controlador de Ingress, que é um balanceador de carga especializado que abstrai a complexidade da rede do Kubernetes e faz a ponte entre os serviços dentro e fora de um cluster do Kubernetes. Esse componente se torna adequado para ambientes de produção quando inclui recursos que aumentam a resiliência (por exemplo, verificações avançadas de integridade e métricas do Prometheus), permitem escalabilidade rápida (reconfiguração dinâmica) e oferecem suporte ao autoatendimento (controle de acesso baseado em função [RBAC]).
    Diagrama da topologia de um ambiente Kubernetes com um controlador de Ingress genérico que fornece uma camada escalável de entrada e saída
  2. Segurança integrada para proteção contra ameaças em todo o cluster
    Embora uma segurança de “baixa granularidade” possa ser suficiente fora do cluster, é necessária uma segurança de “alta granularidade” dentro dele. Dependendo da complexidade do seu cluster, há três locais em que talvez seja necessário implantar um firewall de aplicações web (WAF) flexível: no controlador de Ingress, como proxy por serviço e como proxy por pod. Essa flexibilidade permite aplicar controles mais rigorosos a aplicações confidenciais – como as de faturamento – e controles menos rigorosos onde o risco é menor.
    Diagrama de topologia de um ambiente Kubernetes com um WAF implantado junto a um controlador de Ingress genérico
  3. Uma camada escalável de tráfego leste-oeste para otimizar o tráfego dentro do cluster
    Esse terceiro componente é necessário quando suas aplicações Kubernetes ultrapassam o nível de complexidade e escala que as ferramentas básicas conseguem comportar. Nesse estágio, você precisa de uma malha de serviços, que é uma ferramenta de orquestração que oferece gerenciamento de tráfego e segurança ainda mais granulares aos serviços de aplicações dentro do cluster. Uma malha de serviços normalmente é responsável por gerenciar o roteamento entre aplicações em contêineres, fornecer e aplicar políticas autônomas de TLS mútuo (mTLS) entre serviços e oferecer visibilidade sobre a disponibilidade e a segurança das aplicações.
    Diagrama de topologia de um ambiente Kubernetes com um WAF implantado junto a um controlador de Ingress genérico, além de uma malha de serviços que fornece uma camada leste-oeste escalável

Ao selecionar esses componentes, priorize a portabilidade e a visibilidade. Componentes independentes de plataforma reduzem a complexidade e aumentam a segurança, pois há menos ferramentas para suas equipes aprenderem a usar e protegerem, além de facilitarem a migração de cargas de trabalho de acordo com as necessidades da empresa. É difícil exagerar a importância da visibilidade e do monitoramento. As integrações com ferramentas populares, como Grafana e Prometheus, criam uma visão unificada da infraestrutura em um “painel único”, garantindo que sua equipe detecte problemas antes que eles sejam identificados pelos clientes. Além disso, existem outras tecnologias complementares que não são necessariamente obrigatórias para um ambiente Kubernetes de nível de produção, mas são partes essenciais do desenvolvimento moderno de aplicações. Por exemplo, quando as organizações estão prontas para modernizar aplicações tradicionais, uma das primeiras etapas é criar microsserviços com um gateway de API.

Como o NGINX pode ajudar

Nossas soluções para Kubernetes são independentes de plataforma e incluem os três componentes necessários para viabilizar um Kubernetes pronto para produção: NGINX Ingress Controller como camada de entrada e saída, NGINX App Protect como WAF e NGINX Service Mesh como camada de comunicação leste-oeste.

Diagrama de topologia de um ambiente Kubernetes com o WAF NGINX App Protect implantado junto a um NGINX Ingress Controller e ao NGINX Service Mesh

Essas soluções podem transformar o Kubernetes no seu melhor aliado, oferecendo recursos em quatro áreas principais:

  • Automação – Lance seus aplicativos no mercado com mais rapidez e segurança
    Implante, dimensione, proteja e atualize aplicativos usando os recursos de roteamento de tráfego e integração de aplicativos do NGINX Ingress Controller, combinados com a implantação automática de sidecars do NGINX Plus pelo NGINX Service Mesh.
  • Segurança – Proteja seus clientes e sua empresa contra ameaças existentes e emergentes
    Reduza os possíveis pontos de falha implantando o NGINX App Protect em qualquer lugar do cluster e usando o NGINX Service Mesh e o NGINX Ingress Controller para gerenciar e aplicar a criptografia de ponta a ponta entre os serviços.
  • Desempenho – Ofereça as experiências digitais que seus clientes e usuários esperam
    Lide facilmente com picos de tráfego e ameaças à segurança sem comprometer o desempenho, usando soluções NGINX que superam outros WAFs, controladores de Ingress e balanceadores de carga.
  • Insights – Evolua seus negócios e atenda melhor aos clientes
    Obtenha insights direcionados sobre o desempenho e a disponibilidade dos aplicativos com o NGINX Ingress Controller e o NGINX Service Mesh, além de rastreamentos detalhados para entender como as solicitações são processadas nos seus aplicativos de microsserviços.

Preparando-se para a produção com o NGINX

O NGINX Ingress Controller está disponível como uma avaliação gratuita de 30 dias, que inclui o NGINX App Protect para proteger seus aplicativos em contêineres. Recomendamos adicionar o NGINX Service Mesh, que é sempre gratuito (disponível para download em f5.com), para aproveitar ao máximo sua avaliação. Atualmente, você pode usar sua própria licença (BYOL) na nuvem de sua preferência.


Compartilhar

Sobre o autor

Jenn Gile
Jenn GileDiretor de Marketing de Produto, NGINX

Mais publicações de Jenn Gile

Publicações relacionadas no blog

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade
NGINX | 10/10/2024

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade

Descubra como o F5 NGINX One aprimora o gerenciamento e a observabilidade de ambientes híbridos e multicloud ao oferecer um console web centralizado baseado em SaaS, com insights em tempo real, conformidade automatizada e gerenciamento simplificado de configurações.

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa
NGINX | 17/06/2024

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa

Descubra como transformar uma definição de esquema OpenAPI em uma configuração NGINX totalmente funcional, operando como um API Gateway com a segurança de um Web Application Firewall e um Portal do Desenvolvedor, usando uma abordagem declarativa de API.

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor
NGINX | 14/07/2021

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor

Picos de tráfego e sobrecarga de servidores são preocupações sérias para varejistas online em qualquer época, mas especialmente durante a “Cyber Season” de compras de fim de ano. Detalhamos como você pode aproveitar as soluções de entrega de aplicações de nível de produção da NGINX para se preparar para aumentos repentinos de tráfego.

Distribuição segura de chaves privadas SSL com o NGINX
NGINX | 02/04/2019

Distribuição segura de chaves privadas SSL com o NGINX

Descrevemos três maneiras progressivamente mais seguras de proteger chaves privadas SSL ao configurar o NGINX para processar tráfego HTTPS: permitir acesso de leitura apenas ao usuário root, criptografar as chaves com senhas armazenadas separadamente e distribuir as senhas a partir de um repositório central.

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX
NGINX | 24/05/2018

Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX

O módulo JavaScript do NGINX lançado com o NGINX Plus R15 oferece suporte a subsolicitações, possibilitando uma classe totalmente nova de casos de uso para o NGINX Plus. Este exemplo completo também usa a API do NGINX Plus e os módulos de chave-valor para converter solicitações de API dos clientes em solicitações separadas para as APIs dos microsserviços que compõem um aplicativo.

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus
NGINX | 19/04/2016

Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus

Confira dicas para evitar o esgotamento de portas efêmeras com ajustes no kernel do Linux, conexões keepalive e conexões vinculadas dinamicamente a endereços IP locais.