Reemplace ack-ingress-nginx por ack-ingress-nginx-v1 para ser compatible con Kubernetes 1.24 y versiones posteriores.
Contexto
En ACK, Kubernetes 1.24 marca como obsoletos los recursos de Ingress v1beta1. El componente ack-ingress-nginx instala Nginx Ingress Controller 0.44.0, que utiliza v1beta1. Después de actualizar a Kubernetes 1.24, este controlador deja de estar available.
Por su parte, ack-ingress-nginx-v1 utiliza Nginx Ingress Controller ≥ 1.1.0. Reemplace ack-ingress-nginx por ack-ingress-nginx-v1 para mantener el controlador en ejecución.
Esto no aplica al Nginx Ingress Controller que se encuentra en Component Management. Para actualizar ese componente, consulte Upgrade the Nginx Ingress Controller component.
Requisitos previos
-
La versión del clúster es 1.20 o posterior.
NotaEl Chart 4.0.17+ de ack-ingress-nginx-v1 (componente v1.8.0-aliyun.1+) requiere la versión 1.22 o posterior del clúster. Si usa la versión 1.20 del clúster, utilice el Chart 4.0.16 (componente v1.2.1-aliyun.1).
ack-ingress-nginx está instalado desde Marketplace.
Paso 1: Cree una aplicación ack-ingress-nginx-v1
Cree una aplicación ack-ingress-nginx-v1 desde Marketplace
Para cada aplicación ack-ingress-nginx, despliegue la aplicación ack-ingress-nginx-v1 correspondiente tal como se describe en Deploy multiple Ingress Controllers to isolate traffic.
No establezca controller.ingressClassResource.name en ack-ingress-nginx-v1 con el mismo valor que controller.ingressClass en ack-ingress-nginx. Los conflictos entre Ingress Classes pueden afectar la estabilidad del controlador.
(Opcional) Ajuste las especificaciones y parámetros del SLB
Si anteriormente ajustó las especificaciones o los parámetros del Server Load Balancer (SLB) para ack-ingress-nginx, es posible que también deba aplicar esos mismos ajustes en ack-ingress-nginx-v1. Configure el Service mediante Annotations controller.service (red pública) o controller.service.internal (red privada). Consulte Configure Classic Load Balancer (CLB) using Annotations para CLB o Configure Network Load Balancer (NLB) using Annotations para NLB.
Paso 2: Cree y valide las reglas de enrutamiento de Ingress
Copie sus reglas de enrutamiento de Ingress actuales, actualice la Ingress Class y aplíquelas para evitar interrupciones en el tráfico. Por ejemplo:
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
Cree una nueva regla de enrutamiento de Ingress.
-
Cuando utilice Annotations, cambie únicamente el nombre de la Ingress Class. Mantenga el resto de las configuraciones sin modificaciones.
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 Si utiliza
spec.ingressClassNameen lugar de Annotations, cree una nueva regla de Ingress y actualice el nombre de la Ingress Class enspec.ingressClassName.
Después de crear la nueva regla de Ingress, compruebe su funcionamiento. Para ello, actualice el archivo hosts local de modo que resuelva el nombre de dominio hacia la nueva dirección IP del CLB.
Paso 3: Migre el tráfico
Una vez validadas las nuevas reglas de enrutamiento de Ingress, migre el tráfico hacia ack-ingress-nginx-v1 mediante la actualización de los registros DNS.
Inicie sesión en la consola de Alibaba Cloud DNS o en la consola DNS de su proveedor de dominios. Actualice el registro DNS para que apunte a la nueva dirección IP. Supervise la aplicación durante la propagación del DNS y revierta los cambios si es necesario. Use los registros de los contenedores o Metrics para dar seguimiento al progreso de la migración.
Siguientes pasos
Después de migrar todo el tráfico y confirmar que el funcionamiento es correcto, elimine la aplicación ack-ingress-nginx original. Inicie sesión en la consola de Container Service for Kubernetes. Seleccione su clúster, elija , busque la versión correspondiente y haga clic en Delete.