Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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:
- Usuários do complemento de roteamento de aplicativos: As cargas de trabalho de produção continuarão com suporte total até novembro de 2026. Migre para a implementação da API de roteamento de aplicativos do Gateway para uma experiência de gestão de tráfego de entrada com base na API do Gateway.
-
Os usuários do NGINX do OSS têm várias opções:
- Migre para o complemento de roteamento de aplicativos com o NGINX para usufruir do suporte oficial até novembro de 2026 enquanto planeja sua migração de longo prazo para a API do Gateway.
- Migre para a implementação da API de roteamento de aplicativos do Gateway para uma experiência de gestão de tráfego de entrada com base na API do Gateway.
- Migre para o Gateway de Aplicações para Contêineres, que dá suporte à API de Ingress e à API de Gateway.
- Usuários de malha de serviço: se você planeja adotar uma malha de serviço, considere o add-on de malha de serviço baseado no Istio. Use o Istio Ingress hoje e planeje migrar para o suporte à API do Gateway istio quando ele se tornar GA.
Este artigo mostra como configurar um controlador de entrada NGINX para trabalhar com um balanceador de carga interno do Azure. Ele também explica como configurar uma zona DNS privada do Azure para habilitar a resolução DNS para os pontos de extremidade privados resolverem domínios específicos.
Antes de começar
Um cluster do AKS com o complemento de roteamento de aplicativos.
Para anexar uma Zona DNS privada do Azure, você precisa da função proprietário, administrador de conta do Azure ou coadministrador do Azure em sua assinatura do Azure.
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. Instale-o localmente usando o comando az aks install-cli. Se você usa o Azure Cloud Shell, o kubectl já estará instalado.
O exemplo a seguir configura a conexão ao cluster chamado aks-cluster no test-rg usando o comando az aks get-credentials.
az aks get-credentials \
--resource-group test-rg \
--name aks-cluster
Criar uma rede virtual
Para publicar uma zona DNS privada em sua rede virtual, especifique uma lista de redes virtuais que têm permissão para resolver registros dentro da zona com links de rede virtual.
O exemplo a seguir cria uma rede virtual chamada vnet-1 no grupo de recursos test-rg e uma sub-rede chamada subnet-1 para criar dentro da rede virtual com um prefixo de endereço específico.
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--location eastus \
--address-prefix 10.2.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefixes 10.2.0.0/24
Criar uma zona DNS privada do Azure
Observação
Você pode configurar o complemento de roteamento de aplicativos para criar registros automaticamente em uma ou mais zonas DNS globais e privadas do Azure para hosts definidos em recursos de entrada. Todas as zonas DNS globais do Azure e todas as zonas DNS privadas do Azure devem estar no mesmo grupo de recursos.
Crie uma zona DNS usando o comando az network private-dns zone create , especificando o nome da zona e o grupo de recursos no qual criá-la. O exemplo a seguir cria uma zona DNS chamada private.contoso.com no grupo de recursos test-rg .
az network private-dns zone create \
--resource-group test-rg \
--name private.contoso.com
Crie um link de rede virtual para a zona DNS criada anteriormente usando o comando az network private-dns link vnet create. O exemplo a seguir cria um link chamado dns-link para a zona private.contoso.com para a rede virtual vnet-1. Inclua o --registration-enabled parâmetro para especificar que o link não está habilitado para registro.
az network private-dns link vnet create \
--resource-group test-rg \
--name dns-link \
--zone-name private.contoso.com \
--virtual-network vnet-1 \
--registration-enabled false
O recurso de registro automático da zona DNS privada do Azure gerencia registros DNS para máquinas virtuais implantadas em uma rede virtual. Quando você vincula uma rede virtual a uma zona DNS privada com essa configuração habilitada, um registro DNS é criado em cada máquina virtual do Azure para o seu nó AKS implantado na rede virtual.
Anexar uma zona DNS privada do Azure ao complemento de roteamento de aplicativos
Observação
O comando az aks approuting zone add usa as permissões do usuário que está executando o comando para criar a atribuição de função Zona DNS do Azure. A função Colaborador de Zona DNS Privada é uma função incorporada para gerenciar recursos DNS privados e é atribuída à identidade gerenciada do complemento. Para obter mais informações sobre as identidades gerenciadas do AKS, confira Resumo das identidades gerenciadas.
Recupere a ID do recurso para a zona DNS usando o comando
az network dns zone showe defina a saída em uma variável denominadaZONEID. O exemplo a seguir consulta a zona private.contoso.com no test-rg do grupo de recursos.ZONEID=$(az network private-dns zone show \ --resource-group test-rg \ --name private.contoso.com \ --query "id" \ --output tsv)Atualize o complemento para habilitar a integração com o DNS do Azure usando o comando
az aks approuting zone. Você pode transmitir uma lista separada por vírgulas de IDs do recurso de zona DNS. O exemplo a seguir atualiza o cluster de AKS aks-cluster no grupo de recursos test-rg.az aks approuting zone add \ --resource-group test-rg \ --name aks-cluster \ --ids=${ZONEID} \ --attach-zones
Criar um controlador de entrada NGINX com um endereço IP privado e um balanceador de carga interno
O complemento de roteamento de aplicativos usa uma definição de recurso personalizado (CRD) do Kubernetes chamada NginxIngressController para configurar controladores de entrada NGINX. Você pode criar mais controladores de entrada ou modificar uma configuração existente.
A CRD NginxIngressController tem um campo loadBalancerAnnotations para controlar o comportamento do serviço do controlador de entrada NGINX definindo anotações do balanceador de carga. Para obter mais informações sobre anotações do balanceador de carga, consulte Personalizações por meio de anotações do Kubernetes.
Execute as etapas a seguir para criar um controlador de entrada NGINX com um Azure Load Balancer voltado para o interior com um endereço IP privado.
Copie o manifesto YAML a seguir em um novo arquivo chamado nginx-internal-controller.yaml e salve o arquivo em seu computador local.
apiVersion: approuting.kubernetes.azure.com/v1alpha1 kind: NginxIngressController metadata: name: nginx-internal spec: ingressClassName: nginx-internal controllerNamePrefix: nginx-internal loadBalancerAnnotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true"Crie os recursos do controlador de entrada NGINX usando o comando
kubectl apply.kubectl apply -f nginx-internal-controller.yamlO seguinte exemplo de saída mostra o recurso criado:
nginxingresscontroller.approuting.kubernetes.azure.com/nginx-internal createdVerificar se o controlador de entrada foi criado
Você pode verificar o status do controlador de entrada NGINX usando o comando
kubectl get nginxingresscontroller.kubectl get nginxingresscontrollerA saída de exemplo a seguir mostra o recurso criado. Pode levar alguns minutos para que o controlador esteja disponível:
NAME INGRESSCLASS CONTROLLERNAMEPREFIX AVAILABLE default webapprouting.kubernetes.azure.com nginx True nginx-internal nginx-internal nginx-internal True
Implantar um aplicativo
O complemento de roteamento de aplicativos usa anotações em objetos Ingress do Kubernetes para criar os recursos apropriados.
Crie o namespace do aplicativo chamado
aks-storepara executar os pods de exemplo usando okubectl create namespacecomando.kubectl create namespace aks-storeImplante 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 as implantações e os serviços necessários para o aplicativo de loja do AKS.
Crie o recurso entrada que usa um nome de host na zona DNS privada do Azure e um endereço IP privado
Atualize host com o nome do host DNS, por exemplo, store-front.private.contoso.com. Verifique se você está especificando nginx-internal para o ingressClassName.
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: nginx-internal rules: - host: store-front.private.contoso.com http: paths: - backend: service: name: store-front port: number: 80 path: / pathType: PrefixCrie o recurso de entrada usando o
kubectl applycomando.kubectl apply -f ingress.yaml -n aks-storeO seguinte exemplo de saída mostra o recurso criado:
ingress.networking.k8s.io/store-front created
Verificar se a entrada gerenciada foi criada
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 nginx-internal store-front.private.contoso.com 80 10s
Verifique se a Zona DNS privada do Azure foi atualizada
Em alguns minutos, execute o comando az network private-dns record-set a list para exibir os registros A da sua Zona DNS privada do Azure. Especifique o nome do grupo de recursos e o nome da zona DNS. Neste exemplo, o grupo de recursos é test-rg e a zona DNS é private.contoso.com.
az network private-dns record-set a list \
--resource-group test-rg \
--zone-name private.contoso.com
A saída do exemplo a seguir mostra o registro criado:
[
{
"aRecords": [
{
"ipv4Address": "10.224.0.7"
}
],
"etag": "ecc303c5-4577-4ca2-b545-d34e160d1c2d",
"fqdn": "store-front.private.contoso.com.",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/test-rg/providers/Microsoft.Network/privateDnsZones/private.contoso.com/A/store-front",
"isAutoRegistered": false,
"name": "store-front",
"resourceGroup": "test-rg",
"ttl": 300,
"type": "Microsoft.Network/privateDnsZones/A"
}
]
Próximas etapas
Para obter outras informações de configuração relacionadas à criptografia SSL e outras configurações avançadas do controlador de entrada NGINX e dos recursos de entrada, consulte Configuração de DNS e SSL e Configuração do complemento de roteamento de aplicativos.