Editor – Este post faz parte de uma série de 10 partes:
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:
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.
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:
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]).
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.
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.
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 .
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.
Essas soluções podem fazer do Kubernetes seu melhor amigo, capacitando você em quatro áreas principais:
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."