NGINX Ingress Controller versão 2.0: o que você precisa saber

NGINX | 27 de dezembro de 2021

Em outubro, lançamos o F5 NGINX Ingress Controller versão 2.0 (nginxinc/kubernetes-ingress), adicionando suporte ao Kubernetes 1.22 e à versão 1 da API Ingress (networking.k8s.io/v1). Talvez você esteja se perguntando: e daí?

A resposta para esse “e daí?” tem algumas nuances, e vamos explicá-la respondendo a três perguntas inter-relacionadas:

Continue lendo para conferir as respostas e acompanhe Seu plano de batalha para quando as versões do Kubernetes atacarem em 11 de janeiro de 2022.

Por que as versões do Kubernetes são tão importantes?

A resposta a essa pergunta é simples, mas ao mesmo tempo complexa. O gerenciamento de compatibilidade do Kubernetes é desafiador porque os operadores do Kubernetes precisam gerenciar três categorias de versionamento:

  1. A própria plataforma Kubernetes – A cada nova versão, a equipe do Kubernetes deixa de oferecer manutenção para uma versão mais antiga. Continuar usando uma versão desse tipo é problemático para sua estratégia de gerenciamento de riscos e dificulta a solução de problemas, pois a ajuda da equipe do Kubernetes deixa de estar disponível. Atualmente, o projeto Kubernetes mantém ramificações de versão para as três versões secundárias mais recentes (1.20, 1.21 e 1.22). O Kubernetes 1.19 e versões posteriores recebem aproximadamente 1 ano de suporte a patches, enquanto a versão 1.18 e as anteriores receberam aproximadamente 9 meses de suporte a patches. (O período mais curto para a versão 1.18 e as anteriores se deve ao fato de que o Kubernetes costumava lançar quatro versões por ano, em vez das três atuais).
  2. As APIs do Kubernetes – Novas APIs são criadas e as obsoletas são descontinuadas a cada versão do Kubernetes, e as alterações nas APIs afetam os recursos e as ferramentas correspondentes. Ao atualizar sua plataforma Kubernetes, talvez também seja necessário atualizar as APIs.
  3. As ferramentas que você implantou no Kubernetes – Uma alteração significativa no Kubernetes ou em suas APIs pode afetar o funcionamento adequado das suas ferramentas – como um controlador de Ingress – e dos recursos correspondentes.

Portanto, você precisa acompanhar três cronogramas: um para o Kubernetes, um para a API Ingress e um para o NGINX Ingress Controller. Para evitar problemas no Kubernetes, é preciso encontrar o ponto ideal em que a versão do Kubernetes seja compatível com as APIs e com o NGINX Ingress Controller. Atualizar qualquer um dos três componentes sem verificar a compatibilidade pode ter consequências drásticas. Se os três componentes não forem compatíveis entre si… parabéns, você quebrou seus aplicativos!

O que é a API Ingress e por que networking.k8s.io/v1 é importante?

A API Ingress permite que um controlador Ingress exponha seus aplicativos Kubernetes com segurança. A API networking.k8s.io/v1 (também conhecida como API Ingress v1) foi introduzida no Kubernetes 1.19. Naquela época, o Kubernetes oferecia suporte tanto à v1beta1 quanto à v1 – e apresentava automaticamente uma versão como se fosse a outra. Essa compatibilidade de versões da API que ocorre nos bastidores traz benefícios operacionais, mas pode dificultar seus esforços de planejamento.

Com o lançamento do Kubernetes 1.22, v1 passou a ser a única versão da API Ingress. Isso é importante porque, à medida que a API Ingress v1 se torna “a versão oficial”, todas as versões beta (extensions/v1beta1 e networking.k8s.io/v1beta1) são descontinuadas. Embora isso cause transtornos para as organizações que ainda não adotaram a API Ingress v1, nós da NGINX vemos essa mudança como um bom sinal. A saída da API Ingress da fase beta indica que ela alcançou a maturidade e se tornou uma API plenamente desenvolvida. Mas por que essa mudança é importante? Bem, isso nos leva de volta ao gerenciamento de versões. Digamos que você atualize um cluster existente para o Kubernetes 1.22, mas continue usando recursos relacionados ao Ingress na versão v1beta1 … parabéns, você acabou de inutilizar seus recursos do Ingress!

Como o NGINX Ingress Controller 2.0 afeta os clientes atuais?

Como o NGINX Ingress Controller está fortemente vinculado à API Ingress, o lançamento da versão v1 teve um impacto significativo sobre o nosso produto – e também sobre vocês, nossos clientes –, por isso alteramos o número da versão do NGINX Ingress Controller de 1.x para 2.x. Reformulamos a arquitetura do NGINX Ingress Controller 2.0 para aproveitar a API Ingress v1, tornando-o totalmente compatível com o Kubernetes 1.22.

Se você usa o NGINX Ingress Controller, precisa tomar imediatamente algumas medidas específicas para cada versão a fim de evitar problemas no Kubernetes, nos seus recursos de Ingress ou no NGINX Ingress Controller:

  • Kubernetes 1.18 e versões anteriores:
    • Certifique-se de usar o NGINX Ingress Controller 1.12 para aproveitar o conjunto mais completo de recursos disponíveis. (Ao atualizar para o NGINX Ingress Controller 2.0, você também precisará atualizar para o Kubernetes 1.19 ou posterior.)
    • Planeje a migração para uma versão mais recente do Kubernetes (e do NGINX Ingress Controller) nos próximos meses, pois o Kubernetes 1.18 deixará de ser compatível após o próximo lançamento do Kubernetes.
  • Kubernetes 1.19–1.21:
    • Atualize para o NGINX Ingress Controller 2.0.
    • Se você ainda não migrou seus recursos relacionados ao Ingress para networking.k8s.io/v1 (consulte as notas de versão do NGINX Ingress Controller 2.0), crie seu plano agora. O Kubernetes 1.19–1.21 é compatível com todas as versões atuais da API do Ingress (tanto as versões v1beta1 quanto a v1), permitindo que você faça a conversão no local.
    • Se ainda não tiver feito isso, migre imediatamente seus recursos Ingress e IngressClass para networking.k8s.io/v1.
      • Se você estiver usando a anotação obsoleta kubernetes.io/ingress.class nos seus recursos Ingress, recomendamos migrar para o campo ingressClassName.
      • Use nossa documentação e exemplos (disponíveis com networking.k8s.io/v1 e o campo ingressClassName do recurso Ingress) para planejar suas atualizações.
  • Kubernetes 1.22:
    • Certifique-se de que você já esteja executando o NGINX Ingress Controller 2.0, pois as versões anteriores do NGINX Ingress Controller não são compatíveis com o Kubernetes 1.22 nem oferecem suporte à Ingress API v1.

Uma história (não tão) breve do NGINX Ingress Controller

Desde seu primeiro lançamento, em 2016, o NGINX Ingress Controller evoluiu de uma ferramenta incipiente para uma solução poderosa de rede para Kubernetes. Veja como ele evoluiu desde o lançamento até os dias atuais.

2016 (v0.5.0)

O engenheiro da NGINX Michael Pleshakov publica a primeira contribuição em nosso repositório do GitHub (nginxinc/kubernetes-ingress), possibilitando o uso do NGINX e do F5 NGINX Plus como controlador de Ingress do Kubernetes (KIC).

O NGINX Ingress Controller faz sua primeira aparição pública na KubeCon EU 2016. Confira a gravação: Dia 1, Criando uma solução avançada de balanceamento de carga para Kubernetes com o NGINX; KubeCon EU 2016.

2017 (v1.0.0)

O projeto atinge a maturidade necessária para uso em produção, incluindo suporte essencial a JSON Web Tokens (JWTs) na versão baseada no NGINX Plus.

Na NGINX Conf 2017, Michael Pleshakov demonstra recursos para ambientes de produção, incluindo balanceamento de carga avançado, em Como usar o NGINX Plus como controlador de Ingress para balancear a carga de aplicações no Kubernetes.

2018

O NGINX Ingress Controller recebe grandes melhorias nas áreas de visibilidade, facilidade de uso e flexibilidade:

Na NGINX Conf 2018, Michael Pleshakov sobe ao palco para apresentar Como usar o NGINX como um controlador de entrada do Kubernetes, compartilhando como implantar o NGINX Ingress Controller com o Helm, configurar o balanceamento de carga HTTP e TCP/UDP, monitorar com o Prometheus e solucionar problemas.

2019

Lançamos nossa alternativa aos recursos padrão de Ingress do Kubernetes, tornando a implementação de funcionalidades avançadas mais fácil e confiável.

Em A próxima geração do NGINX Ingress Controller, Michael Pleshakov retorna à NGINX Conf 2019 para demonstrar o uso de VS/VSR em casos como implantações blue-green e testes A/B.

2020

Além de inúmeras melhorias nos recursos do NGINX Ingress, o principal tema deste ano é a integração com ferramentas do ecossistema e produtos da NGINX.

Em Proteja aplicações em produção com NGINX e OpenShift, o engenheiro de marketing técnico Amir Rawdat demonstra como usar o NGINX Ingress Operator, aproveitar o controle de acesso baseado em funções (RBAC) para o provisionamento multifuncional, proteger aplicações em contêineres com o NGINX App Protect e validar clientes com JWTs.

2021

A segurança é um tema central, juntamente com mais integrações ao ecossistema.

Em sua sessão no NGINX Sprint 2.0, Domine microsserviços com criptografia de ponta a ponta, o engenheiro de software Aidan Carson demonstra como proteger a borda com o NGINX Ingress Controller, configurar o controle de acesso seguro entre serviços com o NGINX Service Mesh e usar ambos os produtos para proteger o tráfego de saída com mTLS.

Próximo passo: experimente o NGINX Ingress Controller

Se você decidiu que um controlador de Ingress de código aberto é a escolha certa para seus aplicativos, pode começar rapidamente a usar o NGINX Ingress Controller baseado no NGINX Open Source em nosso repositório no GitHub.

Para implantações de produção de grande porte, esperamos que você experimente nosso NGINX Ingress Controller comercial baseado no NGINX Plus. Ele está disponível para uma avaliação gratuita de 30 dias que inclui o NGINX App Protect.


Compartilhar
Tags: 2021, Tech

Sobre o autor

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.