Substitua o ack-ingress-nginx pelo ack-ingress-nginx-v1 para oferecer suporte ao Kubernetes 1.24 e versões posteriores.
Background
O ACK Kubernetes 1.24 descontinua os recursos de Ingress v1beta1. O ack-ingress-nginx instala o Nginx Ingress Controller 0.44.0, que utiliza v1beta1. Após atualizar para o Kubernetes 1.24, esse controller deixa de funcionar.
O ack-ingress-nginx-v1 utiliza o Nginx Ingress Controller ≥ 1.1.0. Substitua o ack-ingress-nginx pelo ack-ingress-nginx-v1 para manter o controller em operação.
Este tópico não se aplica ao Nginx Ingress Controller disponível no Component Management. Para atualizar esse componente, consulte Upgrade the Nginx Ingress Controller component.
Prerequisites
-
A versão do cluster é 1,20 ou posterior.
NotaO ack-ingress-nginx-v1 Chart 4.0.17+ (componente v1.8.0-aliyun.1+) exige cluster versão 1,22 ou posterior. Para clusters na versão 1,20, utilize o Chart 4.0.16 (componente v1.2.1-aliyun.1).
O ack-ingress-nginx está instalado pelo Marketplace.
Step 1: Create an ack-ingress-nginx-v1 application
Create an ack-ingress-nginx-v1 application from Marketplace
Para cada aplicação ack-ingress-nginx, implante uma aplicação ack-ingress-nginx-v1 correspondente conforme descrito em Deploy multiple Ingress Controllers to isolate traffic.
Não defina controller.ingressClassResource.name no ack-ingress-nginx-v1 com o mesmo valor de controller.ingressClass no ack-ingress-nginx. Ingress Classes conflitantes podem causar instabilidade no controller.
(Optional) Adjust SLB specifications and parameters
Se você ajustou anteriormente as especificações ou os parâmetros do Server Load Balancer (SLB) para o ack-ingress-nginx, talvez seja necessário aplicar os mesmos ajustes ao ack-ingress-nginx-v1. Configure o service usando Annotations controller.service (rede pública) ou controller.service.internal (rede privada). Consulte Configure Classic Load Balancer (CLB) using Annotations para CLB ou Configure Network Load Balancer (NLB) using Annotations para NLB.
Step 2: Create and validate Ingress routing rules
Copie as regras de roteamento de Ingress existentes, atualize o Ingress Class e aplique-as para evitar interrupções no tráfego. Por exemplo:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: nginx-intranet # Original Ingress Class is nginx-intranet.
spec:
rules:
- host: test-ingress.com
http:
paths:
- path: /foo
backend:
service:
name: web1-service
port:
number: 8080
pathType: ImplementationSpecific
- path: /bar
backend:
service:
name: web1-service
port:
number: 8080
pathType: ImplementationSpecific
Crie uma nova regra de roteamento de Ingress.
-
Ao usar Annotations, altere apenas o nome do Ingress Class. Mantenha todas as demais configurações sem alteração.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress-v1 # Create a new Ingress resource. namespace: default annotations: kubernetes.io/ingress.class: nginx-intranet-v1 # Change to the Ingress Class used by ack-ingress-nginx-v1, for example, nginx-intranet-v1. spec: rules: - host: test-ingress.com http: paths: - path: /foo backend: service: name: web1-service port: number: 8080 pathType: ImplementationSpecific - path: /bar backend: service: name: web1-service port: number: 8080 pathType: ImplementationSpecific Para usar
spec.ingressClassNameem vez de Annotations, crie uma nova regra de Ingress e atualize o nome do Ingress Class emspec.ingressClassName.
Após criar a nova regra de Ingress, valide-a atualizando o arquivo de hosts local para resolver o nome de domínio com o novo endereço ip do CLB.
Step 3: Migrate traffic
Após validar as novas regras de roteamento de Ingress, migre o tráfego para o ack-ingress-nginx-v1 atualizando os registros DNS.
Acesse o Alibaba Cloud DNS console ou o console DNS do seu provedor de domínio. Atualize o registro DNS para apontar para o novo endereço ip. Monitore a aplicação durante a propagação do DNS e faça rollback se necessário. Use os logs do container ou Metrics para acompanhar o progresso da migração.
Next steps
Após migrar todo o tráfego e confirmar o funcionamento normal, exclua a aplicação ack-ingress-nginx original. Acesse o Container Service for Kubernetes console. Selecione o cluster, escolha , localize o release e clique em Delete.