BLOG | NGINX

Reduza a complexidade com o Kubernetes de nível de produção

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Miniatura de Jenn Gile
Jenn Gile
Publicado em 05 de fevereiro de 2021

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

  1. Reduza a complexidade com o Kubernetes de nível de produção (esta postagem)
  2. Como melhorar a resiliência no Kubernetes com 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. Um guia para escolher um controlador Ingress, parte 1: Identifique seus requisitos
  6. Um guia para escolher um controlador Ingress, parte 2: Riscos e preparação para o futuro
  7. Um guia para escolher um controlador Ingress, parte 3: Código aberto vs. Padrão vs. Comercial
  8. Um guia para escolher um controlador Ingress, parte 4: Opções do controlador de entrada NGINX
  9. Como escolher uma malha de serviço
  10. Teste de desempenho de controladores de entrada NGINX em um ambiente de nuvem Kubernetes dinâmico

Você também pode baixar o conjunto completo de blogs como um e-book gratuito – Levando o Kubernetes do teste à produção .

2020 foi um ano que poucos de nós esqueceremos. O fechamento abrupto de escolas, empresas e serviços públicos nos deixou subitamente isolados de nossas comunidades e lançados na incerteza sobre nossa segurança e estabilidade financeira. Agora imagine por um momento que 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 das décadas passadas? Contêineres e microsserviços .

Arquiteturas de microsserviços – que geralmente fazem uso de contêineres e Kubernetes – impulsionam o crescimento e a inovação dos negócios ao reduzir o tempo de lançamento no mercado de experiências digitais. Seja junto com arquiteturas tradicionais ou de forma independente, essas tecnologias de aplicativos modernos permitem escalabilidade e flexibilidade superiores, implantações mais rápidas e até mesmo economia de custos.

Antes de 2020, descobrimos 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 aplicativos. Nossa pesquisa de 2020 com usuários do NGINX descobriu que 60% dos entrevistados estão usando microsserviços em produção, um aumento de 40% em relação a 2019, e os contêineres são mais que o dobro da popularidade de outras tecnologias de aplicativos modernas.

O Kubernetes é o padrão de fato para gerenciar aplicativos em contêineres, como evidenciado pela pesquisa de 2020 da Cloud Native Computing Foundation (CNCF) , que descobriu que 91% dos entrevistados estão usando o Kubernetes – 83% deles em produção. Ao adotar o Kubernetes, muitas organizações estão preparadas para mudanças arquitetônicas substanciais, mas ficam surpresas com os impactos organizacionais da execução de tecnologias de aplicativos modernos em escala. Se você estiver executando o Kubernetes, provavelmente já encontrou todas essas três barreiras críticas aos negócios:

  • Cultura
    Mesmo quando as equipes de aplicativos adotam abordagens modernas, como desenvolvimento ágil e DevOps, elas geralmente permanecem sujeitas à Lei de Conway , que afirma que “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 trabalhem rápido, ela também incentiva o estabelecimento de silos. As consequências incluem comunicação deficiente (que tem 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 devem reunir um conjunto de componentes críticos que forneç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 haja um lugar para cada uma dessas estratégias, cada uma tem desvantagens que podem contribuir para a complexidade. E com muita frequência, equipes diferentes dentro de uma mesma organização escolhem estratégias diferentes para satisfazer os mesmos requisitos, resultando em “dívida operacional”. Além disso, as equipes escolhem processos e ferramentas em um determinado momento e continuam a usá-los independentemente das mudanças nos requisitos de implantação e execução de aplicativos modernos baseados em microsserviços usando contêineres.

    O CNCF Cloud Native Interactive Landscape é uma boa ilustração da complexidade da infraestrutura necessária para dar suporte a aplicativos baseados em microsserviços. As organizações precisam se tornar proficientes em uma ampla gama de tecnologias distintas, com consequências que incluem bloqueio de infraestrutura, TI paralela, proliferação de ferramentas e uma curva de aprendizado íngreme para aqueles encarregados de manter a infraestrutura.

  • Segurança
    Os requisitos de segurança diferem significativamente para aplicativos nativos da nuvem e tradicionais, porque estratégias como segurança isolada não são viáveis no Kubernetes. O grande ecossistema e a natureza distribuída dos aplicativos em contêineres significam que a superfície de ataque é muito maior, e a dependência de aplicativos SaaS externos significa que funcionários e pessoas de fora têm muito mais oportunidades de injetar código malicioso ou exfiltrar informações. Além disso, as consequências descritas nas áreas de cultura e complexidade – proliferação de ferramentas, em particular – têm um impacto direto na segurança e resiliência dos seus aplicativos modernos. Usar diferentes ferramentas em seu ecossistema para resolver o mesmo problema não é apenas ineficiente – ele cria um enorme desafio para as equipes de SecOps, que precisam aprender a configurar corretamente cada componente.

A solução: Kubernetes de nível de produção

Como acontece com a maioria dos problemas organizacionais, a resposta para superar os desafios do Kubernetes é uma combinação de tecnologia e processos. Vamos nos concentrar no componente de tecnologia no restante deste post, mas fique de olho em futuros blogs sobre processos e outros tópicos.

Como o Kubernetes é uma tecnologia de código aberto, há inúmeras maneiras de implementá-lo. Embora algumas organizações prefiram desenvolver seu próprio Kubernetes vanilla, muitas encontram valor na combinação de flexibilidade, prescritividade e suporte fornecidos por serviços como Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE), Microsoft Azure Kubernetes Service (AKS), Red Hat OpenShift Container Platform e Rancher .

As plataformas Kubernetes podem facilitar a instalação e a execução; no entanto, elas se concentram na amplitude dos serviços, em vez da profundidade. Portanto, embora você possa obter todos os serviços de que precisa em um só lugar, é improvável que eles ofereçam os conjuntos de recursos necessários para uma verdadeira prontidão de produção em escala. Ou seja, eles não se concentram em redes e segurança avançadas, que é onde vemos o Kubernetes decepcionando muitos clientes.

Para tornar o Kubernetes de nível de produção, você precisa adicionar mais três componentes nesta ordem:

  1. Uma camada de entrada e saída escalável para obter tráfego de entrada e saída do cluster
    Isso é feito com um controlador Ingress , que é um balanceador de carga especializado que abstrai a complexidade da rede do Kubernetes e faz a ponte entre os serviços em um cluster do Kubernetes e aqueles fora dele. Este componente se torna de nível de produção quando inclui recursos que aumentam a resiliência (por exemplo, verificações de integridade avançadas 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 de topologia do ambiente Kubernetes com um controlador Ingress genérico fornecendo uma camada de entrada-saída escalável

  2. Segurança integrada para proteger contra ameaças em todo o cluster
    Embora a segurança “de granulação grossa” possa ser suficiente fora do cluster, a segurança “de granulação fina” é necessária dentro dele. Dependendo da complexidade do seu cluster, há três locais onde você pode precisar implantar um firewall de aplicativo web (WAF) flexível: no controlador Ingress, como um proxy por serviço e como um proxy por pod. Essa flexibilidade permite que você aplique controles mais rigorosos a aplicativos confidenciais – como faturamento – e controles mais flexíveis onde o risco é menor.

    Diagrama de topologia do ambiente Kubernetes com um WAF implantado junto com um controlador Ingress genérico

  3. Uma camada de tráfego leste-oeste escalável para otimizar o tráfego dentro do cluster
    Este terceiro componente é necessário quando seus aplicativos Kubernetes crescem além do nível de complexidade e escala que as ferramentas básicas podem suportar. Nesta fase, você precisa de uma malha de serviço , que é uma ferramenta de orquestração que fornece gerenciamento de tráfego e segurança ainda mais refinados para serviços de aplicativos dentro do cluster. Uma malha de serviço normalmente é responsável por gerenciar o roteamento de aplicativos entre aplicativos em contêineres, fornecer e aplicar políticas TLS mútuas de serviço a serviço (mTLS) autônomas e fornecer visibilidade sobre a disponibilidade e a segurança dos aplicativos.

    Diagrama de topologia do ambiente Kubernetes com um WAF implantado junto com um controlador Ingress genérico, além de uma malha de serviço fornecendo uma camada leste-oeste escalável

Ao selecionar esses componentes, priorize a portabilidade e a visibilidade. Os componentes independentes de plataforma reduzem a complexidade e melhoram a segurança, com menos ferramentas para suas equipes aprenderem e protegerem, além de facilitar a transferência de cargas de trabalho com base nas necessidades do seu negócio. É difícil exagerar a importância da visibilidade e do monitoramento. Integrações com ferramentas populares como Grafana e Prometheus criam uma visão unificada de “painel único” da sua infraestrutura, garantindo que sua equipe detecte problemas antes que eles sejam descobertos pelos seus clientes. Além disso, existem outras tecnologias complementares que não são necessariamente necessárias para o Kubernetes de nível de produção, mas são partes integrais do desenvolvimento de aplicativos modernos. Por exemplo, quando as organizações estão prontas para modernizar aplicativos tradicionais, um dos primeiros passos é criar microsserviços com um gateway de API .

Como o NGINX pode ajudar

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

Diagrama de topologia do ambiente Kubernetes com NGINX App Protect WAF implantado junto com um NGINX Ingress Controller, além do NGINX Service Mesh

Essas soluções podem fazer do Kubernetes seu melhor amigo, capacitando você em quatro áreas principais:

  • Automação – Coloque 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 NGINX Plus do NGINX Service Mesh.
  • Segurança – Proteja seus clientes e negócios contra ameaças existentes e emergentes
    Reduza possíveis pontos de falha implantando o NGINX App Protect em qualquer lugar do cluster enquanto usa o NGINX Service Mesh e o NGINX Ingress Controller para controlar e aplicar criptografia de ponta a ponta entre 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 de segurança sem comprometer o desempenho com soluções NGINX que superam outros WAFs, controladores Ingress e balanceadores de carga.
  • Insight – Evolua seu negócio e atenda melhor os clientes
    Obtenha insights direcionados sobre o desempenho e a disponibilidade do aplicativo do NGINX Ingress Controller e do NGINX Service Mesh, com rastros profundos para entender como as solicitações são processadas em seus aplicativos de microsserviços.

Preparando-se para produção com NGINX

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


"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."