Após atualizar o cluster, atualize o NGINX Ingress para manter a compatibilidade com APIs descontinuadas. Versões mais antigas apresentam riscos de segurança e estabilidade, além de não oferecerem os recursos atuais; portanto, atualize para a versão mais recente o quanto antes. As atualizações ocorrem em fases. Monitore a integridade dos add-ons e serviços durante todo o processo para evitar interrupções no tráfego.
O projeto open-source Ingress-NGINX deixará de ser mantido após março de 2026. Consequentemente, o Container Service for Kubernetes também encerrará a manutenção do add-on do controlador NGINX Ingress. Esteja ciente dos riscos associados. Consulte [[Anúncio do Produto] Descontinuação da Manutenção do Componente Controlador NGINX Ingress](t3212739.xdita#).
Processo de atualização
O controlador NGINX Ingress é um componente crítico do plano de dados que deve permanecer estável.
Personalizações extensas e grandes saltos entre versões podem introduzir incompatibilidades de configuração que talvez não apareçam imediatamente após a atualização, tornando arriscada uma atualização direta para a versão mais recente.
A atualização ocorre em fases para que você possa verificar os serviços em cada etapa e reverter se ocorrerem problemas.
Parte 1: Verificação prévia
Uma verificação prévia é executada automaticamente antes da atualização para confirmar se o componente atende aos requisitos. A verificação falha se houver configurações incompatíveis ou se o componente não estiver íntegro. Resolva esses problemas antes de prosseguir.
Parte 2: Fase de verificação
Na fase de verificação, um novo Pod executa a versão de destino para validar a operação e as regras de Ingress. Em seguida, parte do tráfego é roteada para ele. Monitore o tráfego por meio de logs de contêineres, Simple Log Service ou Managed Service for Prometheus.
Após o escalonamento bem-sucedido do Pod de verificação, a atualização é pausada. Confirme a integridade do componente e dos serviços e prossiga manualmente. Para reverter, exclua o novo Pod e encerre a atualização.
Esta fase modifica spec.minReadySeconds e spec.strategy no Deployment.
Parte 3: Fase de liberação
A fase de liberação realiza uma atualização contínua completa para substituir todas as instâncias antigas. A atualização pausa após a atualização de todos os Pods para que você possa confirmar o status final. Reverta todos os Pods para a versão anterior caso surjam problemas.
Parte 4: Reversão (opcional)
Durante uma pausa na fase de verificação ou de liberação, reverta para restaurar o componente ao estado anterior à atualização se detectar problemas.
Antes de começar
A manutenção do controlador NGINX Ingress v1.2 e anteriores foi encerrada. Consulte [[Anúncio do Produto] Descontinuação da Manutenção do Controlador NGINX Ingress v1.2 e Anteriores](t2767923.xdita#). Versões desatualizadas não recebem novos recursos, correções de bugs nem suporte oportuno, permanecendo expostas a vulnerabilidades sem correção. Atualize o componente prontamente.
Configure o monitoramento para detectar problemas de tráfego com Simple Log Service ou Managed Service for Prometheus. Consulte Coletar e analisar logs de acesso do NGINX Ingress e Conectar e configurar o Managed Service for Prometheus.
Verifique se o componente está íntegro, se todos os Pods estão no estado Ready e se não há logs de erro.
Caso utilize regras de dimensionamento automático como HPA, exclua-as antes da atualização e restaure-as após a conclusão.
Confirme se o Service do tipo
LoadBalancerdo controlador NGINX Ingress (chamadonginx-ingress-lbpor padrão) está normal e sem eventos anormais.Não modifique o componente nem as regras de Ingress durante a atualização.
Se a versão do seu controlador NGINX Ingress for anterior à v0.44, revise as alterações na lógica de correspondência de caminhos antes de atualizar.
A atualização utiliza liberação canário: primeiro cria-se um Pod com a nova versão e, após a verificação do tráfego, inicia-se uma atualização contínua. Garanta que o cluster tenha nós agendáveis suficientes para os Pods do NGINX Ingress.
Procedimento
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Components and Add-ons.
Na página Add-ons, localize o controlador NGINX Ingress e clique em Upgrade no canto inferior direito.
-
Na caixa de diálogo de atualização, clique em Start e confirme para iniciar a atualização.
NotaVocê pode sair desta página durante a atualização. Para retornar, clique em Progress na página Add-ons.
-
A atualização começa com uma verificação prévia e avança automaticamente para a próxima fase.
Se a verificação prévia falhar, clique em View Details abaixo de Precheck para abrir a página Check Report, solucionar os itens com falha e consultar Detalhes da verificação prévia. Após resolver os problemas, clique em Retry para reiniciar a atualização.
-
Após a fase de verificação, a atualização é pausada. Valide o status do componente e dos serviços usando os detalhes da fase de verificação.
Se o escalonamento falhar, consulte O que fazer se um Pod falhar ao ser criado durante a fase de verificação ou liberação? e verifique por que o Pod não iniciou. Após resolver o problema, clique em Retry para tentar esta fase novamente.
Caso os serviços falhem durante a verificação, clique em Rollback para reverter a atualização. Após a conclusão da reversão, a atualização é encerrada. Reinicie-a a partir da página de Add-ons clicando em Upgrade.
Quando a verificação parecer normal, clique em Continue para iniciar a fase de liberação. A atualização pausa novamente após a conclusão da atualização contínua. Realize uma verificação final; clique em Rollback se surgirem problemas. Após a conclusão da reversão, reinicie a partir da página de Add-ons.
-
Após confirmar a integridade do componente e dos serviços, clique em Continue para concluir a atualização.
NotaConclua toda a atualização dentro de uma semana.
Verificação prévia
Itens da verificação prévia
|
Item de verificação |
Descrição |
Solução de problemas |
|
Existência do Deployment |
O Deployment do componente (kube-system/nginx-ingress-controller) existe. |
- |
|
Integridade do Deployment |
Todos os Pods do Deployment estão no estado Ready e estáveis (sem atualização contínua em andamento). |
- |
|
Logs de erro do Pod |
Verifica as últimas 200 entradas de log do Pod em busca de logs Error ou Fatal. |
Esses logs podem indicar erros recentes causados por configurações incorretas. Resolva-os antes de reiniciar a atualização. Consulte Solucionar problemas do NGINX Ingress. |
|
Integridade do Service LoadBalancer |
Verifica se o Service LoadBalancer do NGINX Ingress (kube-system/nginx-ingress-lb) existe e confirma a ausência de eventos de erro. Um Service ausente também é tratado como evento de Warning. |
Se o Service estiver ausente, siga a seção "Excluir manualmente o Service Se o Service existir mas apresentar eventos anormais, resolva-os usando os detalhes do evento em Eventos de Service e solução de problemas. Esta verificação é ignorada para Services que não sejam LoadBalancer. |
|
HPA |
O Deployment não é gerenciado por HPA. Um HPA ativo pode interromper a atualização. |
Exclua o HPA durante a atualização e reative-o após a conclusão. |
|
Modelo do Deployment |
O modelo do Deployment contém apenas modificações compatíveis. |
Alterações personalizadas no Deployment do NGINX Ingress podem não sobreviver à atualização.
Essas alterações de modelo não causam falha na verificação. Alterações não autorizadas no modelo ou versões desatualizadas que não atendem aos requisitos de atualização farão a verificação falhar e reduzirão a chance de sucesso. Causas comuns de falha incluem:
Se a verificação do modelo do Deployment falhar, restaure o modelo manualmente. Consulte O que fazer se a verificação do modelo do Deployment falhar?. |
|
Configuração de Ingress |
Os recursos de Ingress usam apenas funcionalidades compatíveis. |
Recursos de Ingress incompatíveis podem quebrar o encaminhamento de tráfego após a atualização e causar interrupções de serviço. Consulte Compatibilidade da atualização abaixo para identificar e corrigir problemas. |
|
Configuração do componente |
Verifica se o ConfigMap do componente (kube-system/nginx-configuration) não possui configurações incompatíveis. |
Configurações incompatíveis no ConfigMap podem quebrar o encaminhamento de tráfego após a atualização e causar interrupções de serviço. Consulte Compatibilidade da atualização abaixo para identificar e corrigir problemas. |
Compatibilidade da atualização
Novas versões do NGINX Ingress podem adicionar recursos, melhorar os existentes ou corrigir problemas de segurança, mas alterações na arquitetura interna ou nas dependências podem quebrar a compatibilidade com versões anteriores. Para o histórico de alterações, consulte Controlador NGINX Ingress.
Alterações na configuração de segurança padrão
Versões afetadas: Versões anteriores à v1.12.6-release.1.
A partir da v1.12.6-release.1, o ingress-nginx reforçou as configurações de segurança padrão, incluindo:
O nível padrão de
annotations-risk-levelfoi reduzido deCriticalparaHigh. Essa alteração torna indisponíveis os recursosIngressexistentes com anotações de nívelCritical, como anotações relacionadas asnippet.allow-cross-namespace-resourcesfoi alterado detrueparafalse. Essa configuração desativa, por padrão, a referência cruzada entre namespaces de recursos comoConfigMapeSecrets.strict-validate-path-typefoi alterado defalseparatrue. Essa configuração ativa a validação estrita de caminho por padrão. Isso significa que, para caminhos do tipoExactePrefix, apenas caminhos que começam com/e contêm apenas letras, números,-,_,., e/adicionais são permitidos.
Se você utilizar recursos bloqueados por essas configurações de segurança, ative-os manualmente no ConfigMap kube-system/nginx-configuration após avaliar os riscos de segurança.
A validação nativa do NGINX está desativada por padrão
Versões afetadas: Versões anteriores à v1.11.5-aliyun.1.
Para corrigir a CVE-2025-1974, o controlador NGINX Ingress desativa a validação nativa do NGINX (a lógica nginx -t) por padrão a partir da v1.11.5-aliyun.1. O webhook de validação permanece ativado, mas não valida regras baseadas em snippet; apenas anotações que não sejam snippets são validadas por padrão. Para regras de snippet, verifique os logs de erro de runtime do NGINX. Consulte o Anúncio das Vulnerabilidades CVE-2023-1097, CVE-2023-1098, CVE-2023-1974, CVE-2023-24513, CVE-2023-24514.
Se você usar anotações de snippet, verifique nos logs do Pod do NGINX Ingress entradas relacionadas a Error sempre que alterar as regras de Ingress correspondentes:
kubectl logs -f <Nginx-ingress-pod-name> -n kube-system |grep Error
Para reativar a validação nativa do NGINX, adicione enable-nginx-native-validation: "true" ao ConfigMap kube-system/nginx-configuration após avaliar totalmente os riscos.
Anotações de snippet estão desativadas por padrão
Versões afetadas: Versões anteriores à v1.9.3-aliyun.1.
Por motivos de segurança, o controlador NGINX Ingress desativa todas as anotações de snippet por padrão a partir da v1.9.3-aliyun.1, incluindo:
nginx.ingress.kubernetes.io/configuration-snippet
nginx.ingress.kubernetes.io/server-snippet
nginx.ingress.kubernetes.io/stream-snippet
nginx.ingress.kubernetes.io/auth-snippet
nginx.ingress.kubernetes.io/modsecurity-snippet
Devido aos riscos de segurança e estabilidade, prefira anotações alternativas ou opções de configuração diferentes.
Para usar anotações de snippet, adicione allow-snippet-annotations: "true" ao ConfigMap kube-system/nginx-configuration após avaliar totalmente os riscos.
Versões legadas de TLS não são suportadas
Versões afetadas: Versões anteriores à v1.7.0-aliyun.1.
Devido a problemas de segurança no TLS 1.1 e anteriores, as novas versões do NGINX Ingress não suportam mais TLS v1.1 e TLS v1.0 por padrão. Antes de atualizar, verifique se seus serviços não dependem de TLS v1.1 ou anterior e remova-os da sua configuração. As alterações no ConfigMap entram em vigor imediatamente.
Por exemplo, se o ConfigMap (kube-system/nginx-configuration) do controlador NGINX Ingress estiver configurado da seguinte forma:
ssl-protocols: SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3
Após confirmar que seus serviços não serão afetados, remova esta linha para usar os padrões, ou remova SSLv3, SSLv2, TLSv1 e TLSv1.1 e altere a linha para:
ssl-protocols: TLSv1.2 TLSv1.3
Para impor métodos de criptografia TLS mais antigos, consulte Quais versões SSL/TLS são suportadas pelos Ingresses?.
Uso incompatível de nginx.ingress.kubernetes.io/rewrite-target
Versões afetadas: Versões anteriores à 0.22.0.
A versão 0.22.0 alterou o uso da anotação
nginx.ingress.kubernetes.io/rewrite-target. Nas versões 0.22.0 e posteriores, é necessário especificar explicitamente grupos de captura ao usarrewrite-target.O comportamento do rewrite-target anterior à 0.22.0 é incompatível com as versões atuais. Antes de atualizar, use a anotação
configuration-snippetem vez derewrite-target.
Por exemplo, em versões anteriores à 0.22.0, a regra é:
Modifique-a da seguinte forma:
Após atualizar a configuração para este formato, prossiga com a atualização. Depois que a atualização for concluída, atualize o Ingress para a nova sintaxe.
As diretivas nativas do NGINX root e alias não são mais suportadas
Versões afetadas: Versões anteriores à v1.2.1-aliyun.1.
Devido a problemas de segurança com as diretivas root e alias, as novas versões do NGINX Ingress (Controlador NGINX Ingress) não suportam mais as diretivas root e alias. Antes de atualizar, verifique se o seu Ingress não usa diretivas nativas do NGINX root ou alias configuradas por meio de snippets.
Alterações na lógica de correspondência de caminhos
A lógica de correspondência de caminhos pode variar entre versões do NGINX Ingress e causar problemas de acesso ao serviço.
Em versões mais antigas (anteriores à v0.44), a correspondência de prefixo era mais flexível. Por exemplo,
/aaa/bbbpoderia corresponder a/aaa/bbbbb.Após a atualização, a correspondência de prefixo é mais estrita e corresponde apenas ao caminho exato da solicitação. Caminhos anteriormente correspondidos, como
/aaa/bbbbb, podem retornar 404.
Versões afetadas
Versões do controlador NGINX Ingress anteriores à v0.44. Para o histórico de alterações, consulte Controlador NGINX Ingress. Para informações relacionadas ao PR, consulte kubernetes/ingress-nginx #6443.
Gzip está desativado por padrão
Os recursos ativados por padrão variam entre as diferentes versões. Por exemplo, em versões do controlador NGINX Ingress anteriores à v0.40, o gzip é ativado por padrão, enquanto em versões posteriores, ele é desativado por padrão. Após atualizar o componente, o gzip fica desativado, o que pode aumentar o tráfego do Classic Load Balancer (CLB) associado. Se a instância CLB usar o método de faturamento pagamento conforme o uso, isso poderá levar a custos maiores.
Solução
Edite o ConfigMap nginx-configuration no namespace kube-system para ativar a compactação gzip.
data:
use-gzip: true
Fase de verificação
Verificar o status do componente e dos serviços
Além das suas próprias ferramentas de monitoramento, o ACK fornece logs do Simple Log Service, painéis do Managed Service for Prometheus e logs nativos de contêineres para monitorar o NGINX Ingress. Para ativá-los, consulte Coletar e analisar logs de acesso do NGINX Ingress e Conectar e configurar o Managed Service for Prometheus.
Simple log service
Visualize os logs coletados pelo Simple Log Service no ACK console.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Clique na aba Application Logs, selecione nginx-ingress na lista suspensa Logstore e clique em Select Logstore.
NotaSe nginx-ingress estiver ausente no seu Logstore, verifique se a coleta de logs está configurada para o componente. Consulte Coletar e analisar logs de acesso do NGINX Ingress.
Os logs mostram dados de acesso da aplicação. Filtre por Pod (como o Pod da nova versão) para comparar a taxa de sucesso e a contagem de solicitações com os Pods antigos. Reverta se os dados divergirem significativamente.
Por padrão, logs de acesso não são registrados para solicitações que retornam 404 porque nenhuma regra de Ingress corresponde.
Painel do Prometheus
Use painéis do Managed Service for Prometheus para observar o status geral das solicitações.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Clique na aba Network Monitoring e, em seguida, clique em Ingresses.
NotaSe Ingresses estiver indisponível, verifique se a coleta de métricas do Prometheus está configurada para o componente. Consulte Conectar e configurar o Managed Service for Prometheus.
O painel mostra métricas operacionais do Ingress. Selecione um Pod específico para comparar a taxa de sucesso e a contagem de solicitações com os Pods antigos. Reverta se os dados divergirem significativamente.
Métricas não são registradas por padrão para regras de Ingress sem Host (que assume o padrão "*").
Logs do Pod
Use kubectl para acessar os logs do Pod pela linha de comando e verificar erros.
-
Visualize logs de erro do NGINX no Pod, incluindo níveis warn, error e crit:
kubectl logs -n kube-system <PodName> | grep -e warn -e error -e crit -
Visualize logs de erro do controlador no Pod:
kubectl logs -n kube-system <PodName> | grep "^[EF]"
Perguntas frequentes
Posso atualizar o controlador NGINX Ingress para uma versão específica? Posso reverter para uma versão anterior após uma atualização bem-sucedida?
O controlador NGINX Ingress não suporta atualização para uma versão específica. As atualizações prosseguem em fases até a versão mais recente. Não é possível reverter após uma atualização bem-sucedida.
O que fazer se um Pod falhar ao ser criado durante a fase de verificação ou liberação?
|
Causa |
Solução |
|
O Pod da nova versão falha durante a inicialização, como devido a uma falha no carregamento de configuração, e entra em loop de crash. |
Use os métodos de logs do Pod para visualizar logs de erro e consulte Solucionar problemas do NGINX Ingress para resolver o problema. |
|
Isso é comum quando o NGINX Ingress executa em nós dedicados. Um novo Pod pode falhar ao ser agendado devido a limites de recursos e seletores de nó. |
Adicione nós temporariamente ou reduza a escala do NGINX Ingress durante horários de baixa demanda antes da atualização para que os Pods possam ser agendados durante o processo. |
O que fazer se a verificação do modelo do Deployment falhar?
Se o modelo do Deployment falhar na verificação prévia, clique no link ao lado de Cause of Error para abrir a página de diferenças do componente e visualizar os campos com falha.
Na página NGINX Ingress Controller Upgrade, em Precheck, clique em View Details.
-
Na página Check Report, na seção Cluster Component Check Results, clique na caixa vermelha em ① para visualizar os resultados da verificação. Em seguida, na página Check Result, clique em Deployment Template e, finalmente, clique no link ao lado de Cause of Error em ②.

-
Acesse a página Component Differences para visualizar os campos que falharam na verificação.
A página de diferenças do componente compara o modelo padrão para esta versão (esquerda) com o modelo atual do cluster (direita), destacando diferenças compatíveis e incompatíveis. Ela também mostra se o componente do cluster passou na verificação de diferenças e lista os caminhos de campos incompatíveis.
No exemplo abaixo, o campo divergente é .spec.template.spec.containers.(nginx-ingress-controller).args (parênteses indicam o nome do elemento do array). A comparação mostra que
--v=2em args foi alterado para--v=3, o que deve ser corrigido antes da atualização.
-
Modifique o campo divergente.
Escolha , localize o componente NGINX Ingress controller e escolha . Na página Edit YAML, altere
--v=3para--v=2no campo args. -
Após modificar o campo, atualize a página de diferenças do componente. Quando a página mostrar The component can pass the difference check, a verificação do modelo do Deployment será aprovada.
NotaModificar o Deployment do cluster reinicia os Pods do NGINX Ingress. Execute esta ação durante horários de baixa demanda.

Referências
Para o histórico de alterações do NGINX Ingress, consulte Controlador NGINX Ingress.
Para conectividade de rede ou outros problemas do NGINX Ingress, consulte Configurar grupos de segurança do cluster e Perguntas frequentes sobre NGINX Ingress.