O NGINX Ingress Controller atua como o gateway de entrada do Alibaba Cloud Container Service for Kubernetes (ACK) managed clusters, roteando o tráfego externo para serviços internos com regras de roteamento flexíveis. Com suporte a recursos como criptografia HTTPS, canary releases e configurações personalizadas por meio de anotações, ele oferece acesso de rede de camada 7 (L7) seguro, altamente disponível e escalável.
-
A partir de 11 de setembro de 2025, devido à descontinuação da cobrança por especificação do Classic Load Balancer (CLB), instâncias do Network Load Balancer (NLB) serão usadas por padrão ao criar serviços do tipo balanceador de carga ou instalar novos NGINX Ingress Controllers no console do Container Service for Kubernetes console. A criação de serviços baseados em CLB será restrita a uma lista de permissões, e esses serviços usarão o modelo de cobrança pagamento conforme o uso por padrão. Para mais informações, consulte [Product change] Announcement on changes to the default load balancer type and billing method for new services and the NGINX Ingress Controller.
-
O projeto open-source upstream Ingress-NGINX não será mais mantido após março de 2026. Como resultado, o Container Service for Kubernetes descontinuará a manutenção do componente NGINX Ingress Controller. Esteja ciente dos riscos associados. Para mais informações, consulte [Product announcement] Announcement on the end of maintenance for the NGINX Ingress Controller component.
Notas de uso
-
Não exclua o serviço padrão usado pelo NGINX Ingress Controller. Após a instalação do add-on, um serviço padrão chamado
nginx-ingress-lbé criado no namespacekube-system. A exclusão desse serviço torna o add-on instável e pode causar falhas. -
Use Add-ons or OpenAPI para configurar parâmetros personalizados do add-on. A modificação da configuração por outros métodos pode fazer o add-on funcionar incorretamente e interferir em futuras atualizações.
-
Use the NGINX Ingress ConfigMap para configurações personalizadas. O suporte técnico não cobre problemas causados por configurações adicionais, como snippets ou código Lua.
-
Upgrade the NGINX Ingress Controller add-on para evitar interrupções nos negócios causadas por bugs ou vulnerabilidades de segurança na versão da comunidade upstream.
Instalar o add-on NGINX Ingress Controller
Criar um aplicativo de exemplo
O aplicativo de exemplo implanta dois workloads sem estado (Deployments) chamados coffee and tea, e seus Services correspondentes chamados coffee-svc and tea-svc.
Console
|
1. Criar recursos
|
|
2. Verificar o resultado In the YAML Resource Creation Result , clique em View na coluna Actions de um recurso para confirmar que ele foi criado. |
kubectl
-
Obtana coluna KubeConfig for your cluster e use kubectl para conectar-se ao cluster.
-
Crie um arquivo chamado test-deployment-service.yaml com o seguinte conteúdo.
-
Aplique a configuração para criar o Deployment e o Service.
kubectl apply -f test-deployment-service.yaml -
Verifique o status dos
coffeeandteaDeployments.kubectl get deployment coffee teaSaída esperada:
NAME READY UP-TO-DATE AVAILABLE AGE coffee 2/2 2 2 14m tea 2/2 2 2 14m -
Verifique o status dos
coffee-svcandtea-svcServices.kubectl get service coffee-svc tea-svcSaída esperada:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE coffee-svc ClusterIP 192.168.xxx.xxx <none> 80/TCP 15m tea-svc ClusterIP 192.168.xxx.xxx <none> 80/TCP 15m
Criar NGINX Ingress
Este exemplo usa test-nginx-ingress.com as the domain name (host). Replace this with your own registered domain name. The path mapping (paths) is taken na lista suspensa Criar um aplicativo de exemplo . Modifique esses caminhos para corresponder à configuração do seu aplicativo.
Console
|
1. Criar um Ingress
|
|
2. Obtana coluna endpoint Após aproximadamente um minuto, atualize a página. The Nginx Ingress is successfully created when an Elastic IP (EIP) appears na coluna Endpoint . Esse EIP é o endereço de serviço público da instância do Cloud Load Balancer (CLB) associada. Se as informações do endpoint não aparecerem após alguns minutos, clique no nome do Ingress e verifique a guia Events para solucionar o problema. |
kubectl
-
Crie um arquivo chamado test-ingress.yaml com o seguinte conteúdo.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-nginx-ingress namespace: default spec: ingressClassName: nginx rules: - host: test-nginx-ingress.com # Replace with your registered domain name http: paths: - path: /coffee backend: service: name: coffee-svc port: number: 80 pathType: ImplementationSpecific - path: /tea backend: service: name: tea-svc port: number: 80 pathType: ImplementationSpecific - host: www.test-nginx-ingress.com # Replace with your registered domain name http: paths: - path: /coffee backend: service: name: coffee-svc port: number: 80 pathType: ImplementationSpecific - path: /tea backend: service: name: tea-svc port: number: 80 pathType: ImplementationSpecificParâmetro descriptions:
-
name: O nome do Ingress. Neste exemplo, o nome étest-nginx-ingress. -
host: O nome de domínio usado para acessar o serviço. Neste exemplo, o nome de domínio étest-nginx-ingress.com. Substitua pelo seu nome de domínio registrado. -
path: O caminho da URL para a regra. Para que uma requisição seja roteada para o backend, ela deve corresponder ao host and path. Neste exemplo, os caminhos são/coffeeand/tea. -
backend: Consiste em um nome de serviço e uma porta de serviço.-
Nome do serviço: O nome do serviço de backend para o qual o Ingress encaminha o tráfego. Por exemplo,
coffee-svcandtea-svc. -
Porta do serviço: A porta de destino no Service de backend. Neste exemplo, a porta é
80.
-
-
-
Crie o Ingress.
kubectl apply -f test-ingress.yaml -
Visualize o Ingress e obtenha seu Elastic IP (EIP), como
8.xxx.xxx.117.kubectl get ingressSaída esperada:
NAME CLASS HOSTS ADDRESS PORTS AGE test-nginx-ingress nginx test-nginx-ingress.com,www.test-nginx-ingress.com 8.xxx.xxx.117 80 2m39s -
Use o EIP para verificar se o Nginx Ingress está funcionando corretamente.
curl http://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"Saída esperada:
... <title>Hello World</title> ... <p><span>Server address:</span> <span>10.xxx.xxx.19:80</span></p> <p><span>Server name:</span> <span>coffee-96d4bc87-l29dh</span></p> <p class="smaller"><span>Date:</span> <span>08/Aug/2025:02:21:02 +0000</span></p> <p class="smaller"><span>URI:</span> <span>/coffee</span></p> ... <div id="footer"> <div id="center" align="center"> Request ID: 42e2d73c85b16b55b6ab52deb7d995d4<br/> © NGINX, Inc. 2018 </div> </div> ...
Configurar resolução de DNS
Registre um nome de domínio. Você só precisa adicionar um nome de domínio se ele estiver registrado em um provedor terceirizado. A Alibaba Cloud adiciona automaticamente os nomes de domínio adquiridos por meio de sua plataforma às zonas autoritativas públicas no Alibaba Cloud DNS, para que você possa adicionar registros DNS diretamente.
|
1. Adicionar um nome de domínio
|
|
2. Adicionar um registro DNS
Para mais informações, consulte Add a website resolution record. |
|
3. Verificar o nome de domínio e o caminho No seu navegador, acesse If the request succeeds, the page returns information na lista suspensa NGINX backend pod, including the server address, server name, Date, and URI . Para confirmar o resultado, você também pode consultar Methods for testing DNS resolution. Se um registro DNS não entrar em vigor, consulte Quickly troubleshoot DNS resolution failures. |
Configurar segurança HTTPS
Adquira um certificado comercial, and solicite o certificado. Ensure the certificate is na coluna Issued . Em seguida, siga estas etapas para baixar o certificado e adicionar uma configuração TLS. Isso permite o acesso HTTPS criptografado ao seu domínio.
Console
|
1. Baixar o certificado
Para mais detalhes, consulte Download an SSL certificate. |
|
2. Criar um Secret
|
|
3. Adicionar uma configuração TLS
|
|
4. Verificar acesso HTTPS No seu navegador, acesse |
Kubectl
-
Faça login no Certificate Management Service console. No painel de navegação à esquerda, escolha .
-
Na página Commercial Certificates tab, select the certificate you want to download, e clique em Download na coluna bottom-left corner of the certificate list.
-
Na caixa de diálogo exibida, selecione Nginx como tipo de servidor, baixe o pacote do certificado e descompacte-o.
-
Use o arquivo de certificado baixado (.pem) e o arquivo de chave privada (.key) para criar um Secret.
kubectl create secret tls nginx-ingress-tls --cert test-nginx-ingress.com.pem --key test-nginx-ingress.com.key -n default -
Adicione uma configuração TLS ao Ingress
test-nginx-ingress. Substituatest-nginx-ingress.comna coluna command with your actual registered domain name.kubectl patch ingress test-nginx-ingress -p '{"spec":{"tls":[{"hosts":["test-nginx-ingress.com"],"secretName":"nginx-ingress-tls"}]}}' -
Verifique o acesso HTTPS criptografado ao caminho do serviço executando o seguinte comando com seu Elastic IP Address real.
curl -v -k https://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"-
Parâmetros:
-
-v: Exibe saída detalhada, incluindo o handshake TLS. -
-k(ou --insecure): Ignora a verificação do certificado. Use esta opção se estiver usando um certificado autoassinado.
-
-
Saída esperada:
... * Trying 8.xxx.xxx.117:443... * Connected to 8.xxx.xxx.117 (8.xxx.xxx.117) port 443 * ALPN: curl offers h2,http/1.1 * (304) (OUT), TLS handshake, Client hello (1): * (304) (IN), TLS handshake, Server hello (2): * (304) (IN), TLS handshake, Unknown (8): * (304) (IN), TLS handshake, Certificate (11): * (304) (IN), TLS handshake, CERT verify (15): * (304) (IN), TLS handshake, Finished (20): * (304) (OUT), TLS handshake, Finished (20): ... <title>Hello World</title> ... <p><span>Server address:</span> <span>10.xxx.xxx.159:80</span></p> <p><span>Server name:</span> <span>coffee-96d4bc87-6cstv</span></p> <p class="smaller"><span>Date:</span> <span>14/Aug/2025:09:27:42 +0000</span></p> <p class="smaller"><span>URI:</span> <span>/coffee</span></p> ... <div id="footer"> <div id="center" align="center"> Request ID: fee5fe107106748a35d99a2dbbbc6652<br/> © NGINX, Inc. 2018 </div> </div> ...
-
Mais configurações
Canary release
Para atualizar serviços, você pode usar várias estratégias de implantação, como rolling updates, phased releases, blue-green deployments e canary releases. Para instruções detalhadas, consulte Implement phased releases and blue-green deployments using NGINX Ingress.
Protocolo do serviço de backend
Para especificar o protocolo de um serviço de backend, adicione a anotação nginx.ingress.kubernetes.io/backend-protocol . Os protocolos suportados são HTTP, HTTPS, gRPC e gRPCS. Para um exemplo de configuração, consulte Configure a gRPC service for NGINX Ingress.
Reescrita de URL
Ao usar o NGINX Ingress controller, ele encaminha requisições com base no caminho completo. Por exemplo, uma requisição para /service1/api é encaminhada para o caminho /service1/api do pod de backend. Se o caminho do seu serviço de backend for /api, ocorre uma incompatibilidade de caminho, resultando em um erro 404. Para resolver esse problema, você pode adicionar a anotação nginx.ingress.kubernetes.io/rewrite-target para reescrever o caminho da requisição para o diretório correto.
Para instruções detalhadas, consulte Configure URL redirection.
Anotações
NGINX Ingress supports an extensive range of features that you can enable with annotations. Para mais informações, consulte NGINX Ingress configuration dictionary and Advanced NGINX Ingress configurations.
Observabilidade
Ative o Simple Log Service (SLS) durante a criação do cluster para acessar relatórios abrangentes de análise de logs de acesso do NGINX Ingress e painéis de monitoramento em tempo real. Para detalhes, consulte Analyze and monitor NGINX Ingress access logs.
Cenários de alta carga
Para melhorar o desempenho e a estabilidade do NGINX Ingress Controller em cenários de alta carga, consulte Configure an NGINX Ingress Controller for high-payload scenarios and Suggestions for using an NGINX Ingress Controller.
FAQ
IP externo inacessível de dentro do cluster
Headers ou cookies grandes
Configuração CORS
Repasse do IP do cliente
Referências
-
Para versões e notas de lançamento, consulte NGINX Ingress Controller.
-
Para problemas comuns e solução de problemas, consulte NGINX Ingress FAQ and Troubleshoot NGINX Ingress issues.