Entrada NGINX gerenciada com o complemento de roteamento de aplicativo

Cuidado

A Rede SIG do Kubernetes e o Comitê de Resposta à Segurança anunciaram a próxima desativação do projeto NGINX de entrada, com a manutenção terminando em março de 2026. Não é necessária nenhuma ação imediata hoje para clusters AKS que utilizam o complemento de roteamento de aplicativos com NGINX.. A Microsoft fornecerá suporte oficial para patches de segurança críticos para recursos de entrada NGINX de complemento de roteamento de aplicativos até Novembro de 2026.

O AKS está se alinhando ao Kubernetes upstream ao mover-se para a Gateway API como o padrão de longo prazo para o gerenciamento de entrada e tráfego L7. Recomendamos que você comece a planejar seu caminho de migração com base na configuração atual:

Uma forma de rotear o protocolo HTTP e o tráfego HTTPS (seguro) para os aplicativos em execução em um cluster do AKS (Serviço de Kubernetes do Azure) é usar o objeto Ingress do Kubernetes. Quando você habilita o complemento de roteamento de aplicativos com o NGINX, ele cria, configura e gerencia um controlador de entrada no cluster do AKS.

Este artigo mostra como habilitar o controlador de entrada NGINX gerenciado e configurar um objeto de entrada para rotear o tráfego para um aplicativo no cluster do AKS.

Complemento de roteamento de aplicativo com recursos do NGINX

O complemento de roteamento de aplicativos com o NGINX fornece o seguinte:

  • Configuração fácil de controladores de entrada NGINX gerenciados com base no controlador de entrada NGINX do Kubernetes.
  • Integração com o DNS do Azure para gerenciamento de zona pública e privada.
  • Terminação SSL com certificados armazenados no Azure Key Vault.

Para outras configurações, confira:

Important

A partir de 30 de setembro de 2027, o AKS (Serviço de Kubernetes do Azure) não dá mais suporte ao complemento da OSM (Open Service Mesh). O projeto upstream open service mesh foi desativado.

Se o cluster usa o complemento do OSM, migre para o complemento Istio antes da data de término do suporte. Este aviso de desativação se aplica apenas ao complemento do OSM gerenciado e não aborda instalações de malha de serviço de software livre ou autogerenciada. Para ver as etapas de migração, consulte as orientações de migração do complemento OSM para o complemento Istio. Para se manter informado sobre anúncios e atualizações do AKS, siga as notas de versão do AKS.

Pré-requisitos

  • Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, é possível criar uma conta gratuita.
  • CLI do Azure versão 2.54.0 ou posterior instalada e configurada. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Limitações

  • O complemento de roteamento de aplicativos dá suporte a até cinco zonas DNS do Azure.

  • O complemento de roteamento de aplicativos só pode ser habilitado em clusters do AKS com identidade gerenciada.

  • Todas as zonas globais do DNS do Azure integradas ao complemento precisam estar no mesmo grupo de recursos.

  • Todas as zonas privadas do DNS do Azure integradas ao complemento precisam estar no mesmo grupo de recursos.

  • Não há suporte para a edição do ConfigMap ingress-nginx no namespace app-routing-system.

  • Se um valor de anotação de snippet corresponder a qualquer um dos seguintes valores bloqueados, a entrada não será configurada:

    Valor bloqueado Effect
    load_module A entrada não está configurada.
    lua_package A entrada não está configurada.
    _by_lua A entrada não está configurada.
    location A entrada não está configurada.
    root A entrada não está configurada.
    proxy_pass A entrada não está configurada.
    serviceaccount A entrada não está configurada.
    { A entrada não está configurada.
    } A entrada não está configurada.
    ' A entrada não está configurada.
  • O complemento não dá suporte oficialmente à injeção de sidecars não gerenciados por Microsoft (por exemplo, telemetria personalizada, registro em log ou agentes de segurança) nos pods de proxy ingress-nginx que ele gerencia. Se você optar por injetar seu próprio sidecar em um pod de proxy gerenciado, a Microsoft fornecerá apenas suporte em regime de melhor esforço para quaisquer problemas encontrados.

Habilitar o complemento de roteamento de aplicativos usando CLI do Azure

Habilitação em um novo cluster

Para habilitar o roteamento de aplicativos em um novo cluster, use o comando az aks create, especificando o sinalizador --enable-app-routing.

az aks create \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --location <location> \
    --enable-app-routing \
    --generate-ssh-keys

Habilitação em um cluster existente

Para habilitar o roteamento de aplicativos em um cluster existente, use o comando az aks approuting enable.

az aks approuting enable --resource-group <resource-group-name> --name <cluster-name>

Conectar-se ao cluster do AKS

Para se conectar ao cluster do Kubernetes no computador local, use o kubectl, o cliente de linha de comando do Kubernetes. Se você quiser instalá-lo localmente, use o comando az aks install-cli. Se você usa o Azure Cloud Shell, o kubectl já estará instalado.

Configure o kubectl para se conectar ao cluster do Kubernetes usando o comando az aks get-credentials.

az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>

Implantar um aplicativo

Os objetos de entrada do Kubernetes definem regras de roteamento para um controlador de entrada. Use a classe de entrada gerenciada do complemento de roteamento de aplicativos e anotações com suporte para configurar como seu controlador lida com o tráfego.

  1. Crie o namespace de aplicativo chamado aks-store para executar os pods de exemplo usando o comando kubectl create namespace.

    kubectl create namespace aks-store
    
  2. Implante o aplicativo de repositório do AKS usando o seguinte arquivo de manifesto YAML:

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/sample-manifests/docs/app-routing/aks-store-deployments-and-services.yaml -n aks-store
    

Esse manifesto cria rabbitmq, order-servicee product-serviceimplantações e store-front serviços correspondentes. O store-front Serviço expõe a porta 80, para a qual a entrada é roteada na próxima seção.

Criar o objeto De entrada

Quando você habilita o complemento de roteamento de aplicativos, ele cria uma classe de entrada chamada webapprouting.kubernetes.azure.com. Especifique essa classe em um objeto de entrada para usar o controlador de entrada NGINX gerenciado do complemento.

  1. Copie o manifesto YAML a seguir em um novo arquivo chamado ingress.yaml e salve o arquivo no computador local.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: store-front
      namespace: aks-store
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - http:
          paths:
          - backend:
              service:
                name: store-front
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Crie o recurso de entrada usando o kubectl apply comando.

    kubectl apply -f ingress.yaml -n aks-store
    

    O seguinte exemplo de saída mostra o recurso criado:

    ingress.networking.k8s.io/store-front created
    

Verificar o recurso de entrada gerenciado

Verifique se a entrada gerenciada foi criada usando o comando kubectl get ingress.

kubectl get ingress -n aks-store

O seguinte exemplo de saída mostra a entrada gerenciada criada:

NAME          CLASS                                HOSTS   ADDRESS       PORTS   AGE
store-front   webapprouting.kubernetes.azure.com   *       51.8.10.109   80      110s

Você pode verificar se o repositório aks funciona apontando seu navegador para o endereço IP público do controlador de entrada. O comando a seguir recupera o endereço IP externo atribuído pelo balanceador de carga ao Serviço do controlador de nginx entrada NGINX gerenciado no app-routing-system namespace:

kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

Remova a visão geral do complemento de roteamento de aplicativos

Para remover o namespace associado, use o comando kubectl delete namespace.

kubectl delete namespace aks-store

Para remover o complemento de roteamento de aplicativos do cluster, use o comando az aks approuting disable.

az aks approuting disable --name <cluster-name> --resource-group <resource-group-name>

Observação

Para evitar possíveis interrupções de tráfego no cluster quando você desabilitar o complemento de roteamento de aplicativos, alguns recursos do Kubernetes, incluindo configMaps, segredos e a implantação que executa o controlador, permanecem no cluster. Esses recursos estão no namespace app-routing-system. Você poderá remover esses recursos se eles não forem mais necessários excluindo o namespace com kubectl delete ns app-routing-system.