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.
Atenção
A Rede SIG do Kubernetes e o Comitê de Resposta à Segurança anunciaram a desativação do projeto Ingress NGINX, com manutenção que terminou em março de 2026. 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 se alinha ao Kubernetes upstream e usa a API de Gateway como o padrão de longo prazo para ingress e gerenciamento de tráfego L7. Migre antes que o suporte termine em novembro de 2026, com base em seus requisitos:
- Usuários do complemento de roteamento de aplicativos e usuários do NGINX OSS: migre para a implementação da API de Gateway de roteamento de aplicativos para ter uma experiência de gerenciamento de tráfego de ingresso baseada em API de Gateway ou para o Gateway de Aplicativo para Contêineres, que oferece suporte à API de Entrada e à API de Gateway.
- Requisitos de malha de serviço ou entrada avançada: considere a entrada da API do Gateway com o complemento de malha de serviço Istio. Você pode usá-lo para entrada sem injetar sidecars em suas cargas de trabalho. Se você precisar de limites para o tamanho dos cabeçalhos e do corpo da solicitação, scripts Lua ou limitação de taxa, consulte as limitações e alternativas da API Gateway.
Este artigo mostra como configurar nomes de domínio personalizados e certificados SSL/TLS para entrada do AKS usando o Azure Key Vault e o DNS do Azure com o complemento de roteamento de aplicativos para AKS.
Pré-requisitos
Um cluster do AKS com o complemento de roteamento de aplicativos.
Azure Key Vault, caso você deseje configurar a terminação SSL e armazenar certificados no cofre hospedado no Azure. Se você não tiver um, consulte Criar um cofre de chaves usando a CLI do Azure.
Para habilitar o suporte para o tráfego HTTPS, você precisa de um certificado SSL. Se você não tiver um, consulte criar um certificado.
DNS do Azure, caso você deseje configurar o gerenciamento de zona privada e global e hospedá-los no Azure. Caso você não tenha uma zona DNS do Azure, crie uma. Para habilitar o suporte para zonas DNS:
- Todas as zonas DNS globais do Azure precisam estar no mesmo grupo de recursos, que pode ser diferente do grupo de recursos do cluster.
- Todas as zonas DNS privadas do Azure precisam estar no mesmo grupo de recursos, que pode ser diferente do grupo de recursos do cluster.
- O grupo de recursos não precisa estar na mesma assinatura que o cluster.
Permissões necessárias do Azure
Suas necessidades de conta de usuário: proprietário, administrador de conta do Azure ou função de coadministrador do Azure em sua assinatura do Azure.
O que os comandos fazem: quando você executa az aks approuting update --attach-kv ou az aks approuting zone add --attach-zones, esses comandos usam suas permissões de atribuição de função para conceder automaticamente à identidade gerenciada do complemento de roteamento de aplicativos as seguintes funções:
- Função de usuário de certificado do Key Vault em seu Azure Key Vault (para acesso ao certificado).
- Função de Contribuinte de Zona DNS em suas zonas DNS do Azure (para gerenciamento de registros DNS).
Para obter mais informações sobre as identidades gerenciadas do AKS, confira Resumo das identidades gerenciadas.
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. Você pode instalá-lo localmente usando o az aks install-cli comando. Se você usa o Azure Cloud Shell, o kubectl já estará instalado.
Configurar o kubectl para conectar-se ao cluster do Kubernetes usando o comando
az aks get-credentials.# Set environment variables for your resource group and cluster name export RESOURCE_GROUP=<resource-group-name> export CLUSTER_NAME=<cluster-name> # Get the AKS cluster credentials az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
Criar e exportar um certificado SSL autoassinado
Para teste, você pode usar um certificado público autoassinado em vez de um certificado assinado por AC (autoridade de certificação). Se você já tiver um certificado, ignore esta etapa.
Atenção
Certificados autoassinados são certificados digitais que não são assinados por uma CA de terceiros confiáveis. A empresa ou desenvolvedor responsável pelo site ou software cria, emite e assina esses certificados. É por isso que os certificados autoassinados são considerados não seguros para sites e aplicativos voltados para o público. O Azure Key Vault tem uma parceria confiável com as seguintes Autoridades de Certificação.
Crie um certificado SSL autoassinado para usar com a entrada usando o
openssl reqcomando. Substitua<host-name>pelo nome DNS que você está usando.openssl req -new -x509 -nodes -out aks-ingress-tls.crt -keyout aks-ingress-tls.key -subj "/CN=<host-name>" -addext "subjectAltName=DNS:<host-name>"Exporte o certificado SSL e ignore o prompt de senha usando o comando
openssl pkcs12 -export.openssl pkcs12 -export -in aks-ingress-tls.crt -inkey aks-ingress-tls.key -out aks-ingress-tls.pfx
Importar um certificado SSL autoassinado para o Azure Key Vault
Importe o certificado SSL para o Azure Key Vault usando o comando
az keyvault certificate import. Se o certificado estiver protegido por senha, você poderá passar a senha pelo sinalizador--password.# Set environment variables for your key vault name and certificate name export KEY_VAULT_NAME=<key-vault-name> export KEY_VAULT_CERT_NAME=<key-vault-certificate-name> # Import the SSL certificate into Azure Key Vault az keyvault certificate import --vault-name $KEY_VAULT_NAME --name $KEY_VAULT_CERT_NAME --file aks-ingress-tls.pfx [--password <certificate password if specified>]
Observação
Para habilitar o complemento de roteamento de aplicativos para recarregar certificados do Azure Key Vault quando eles forem alterados, você deve habilitar o recurso de autorotação secreta do driver CSI do Repositório de Segredos. Quando a rotação automática é habilitada, o driver atualiza a montagem do pod e o segredo do Kubernetes sondando as alterações periodicamente, com base no intervalo de sondagem de rotação que você definiu. O intervalo de sondagem de rotação padrão é de dois minutos.
Habilitar integração do Azure Key Vault
O Azure Key Vault oferece dois sistemas de autorização: controle de acesso baseado em função do Azure (Azure RBAC), que opera no plano de gerenciamento, e o modelo de política de acesso, que opera no plano de gerenciamento e no plano de dados. A --attach-kv operação seleciona o modelo de acesso apropriado a ser usado.
Obtenha a ID do recurso do cofre de chaves usando o
az keyvault showcomando e defina a saída como uma variável de ambiente.KEY_VAULT_ID=$(az keyvault show --name <KeyVaultName> --query "id" --output tsv)Atualize o add-on de roteamento de aplicativos para habilitar o provedor do Azure Key Vault para o Secrets Store CSI Driver e aplique as atribuições de função necessárias usando o comando
az aks approuting updatecom os argumentos--enable-kve--attach-kv.az aks approuting update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-kv --attach-kv ${KEY_VAULT_ID}
Criar uma zona DNS global do Azure
Se você já tiver uma zona DNS do Azure, poderá ignorar esta etapa.
Criar uma zona DNS do Azure usando o comando
az network dns zone create.# Set environment variables for your resource group and DNS zone name export RESOURCE_GROUP=<resource-group-name> export ZONE_NAME=<zone-name> # Create the Azure DNS zone az network dns zone create --resource-group $RESOURCE_GROUP --name $ZONE_NAME
Habilitar a integração do DNS do Azure
Obtenha a ID do recurso para a zona DNS usando o
az network dns zone showcomando e defina a saída como uma variável de ambiente.ZONE_ID=$(az network dns zone show --resource-group $RESOURCE_GROUP --name $ZONE_NAME --query "id" --output tsv)Atualize o complemento de roteamento de aplicativos para habilitar a integração do DNS do Azure usando o
az aks approuting zonecomando. Você pode transmitir uma lista separada por vírgulas de IDs do recurso de zona DNS.az aks approuting zone add --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --ids=${ZONE_ID} --attach-zones
Criar uma classe Ingress que use um nome de host e um certificado do Azure Key Vault
O complemento de roteamento de aplicativos cria uma classe Ingress no cluster chamada webapprouting.Kubernetes.azure.com. Quando você cria um objeto Ingress com essa classe, ela ativa o complemento.
Obtenha o URI do certificado a ser usado na entrada do Azure Key Vault usando o
az keyvault certificate showcomando.az keyvault certificate show --vault-name $KEY_VAULT_NAME --name $KEY_VAULT_CERT_NAME --query "id" --output tsvA saída de exemplo a seguir mostra o URI do certificado retornado do comando:
https://KeyVaultName.vault.azure.net/certificates/KeyVaultCertificateName/ab12c34567d89e01f2345g6h78ijkl90Copie o manifesto YAML a seguir em um novo arquivo chamado ingress.yaml e salve o arquivo no computador local.
Atualize
<host-name>com o nome do host DNS e<key-vault-certificate-uri>com o URI retornado do comando anterior. O valor da cadeia de caracteres para<key-vault-certificate-uri>deve incluir apenashttps://yourkeyvault.vault.azure.net/certificates/certname. Remova a versão do certificado no final da cadeia de caracteres de URI para obter a versão atual.A chave
secretNamena seçãotlsdefine o nome do segredo que contém o certificado para esse recurso de Entrada. Esse certificado é apresentado no navegador quando um cliente navega até a URL especificada na chave<host-name>. Certifique-se de que o valor desecretNameseja igual akeyvault-seguido do valor do nome do recurso de Entrada (demetadata.name). No exemplo yaml,secretNameprecisa ser igual akeyvault-<your-ingress-name>.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.azure.com/tls-cert-keyvault-uri: <key-vault-certificate-uri> name: aks-helloworld namespace: hello-web-app-routing spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - host: <host-name> http: paths: - backend: service: name: aks-helloworld port: number: 80 path: / pathType: Prefix tls: - hosts: - <host-name> secretName: keyvault-<your-ingress-name>Crie os recursos de cluster usando o comando
kubectl apply.kubectl apply -f ingress.yaml -n hello-web-app-routingO seguinte exemplo de saída mostra o recurso criado:
Ingress.networking.k8s.io/aks-helloworld created
Verificar se a entrada gerenciada foi criada
Verifique se a entrada gerenciada foi criada usando o
kubectl get ingresscomando.kubectl get ingress -n hello-web-app-routingO seguinte exemplo de saída mostra os a entrada gerenciada criada:
NAME CLASS HOSTS ADDRESS PORTS AGE aks-helloworld webapprouting.kubernetes.azure.com myapp.contoso.com 20.51.92.19 80, 443 4m
Conteúdo relacionado
Saiba mais sobre como monitorar as métricas do controlador Ingress NGINX incluídas no complemento de roteamento de aplicativos com o Prometheus no Grafana como parte da análise do desempenho e do uso do seu aplicativo.