Migración del controlador Ingress ( NGINX ) al controlador Ingress de Traefik
Migrá tu configuración de Ingress para utilizar el controlador Traefik en lugar del controlador Ingress- NGINX.
Antes de empezar
Revisa estos requisitos previos antes de realizar la migración.
-
Asegúrate de que dispones de los permisos necesarios.
- Rol de acceso a la plataforma de Administrador sobre el clúster
- Rol de acceso al servicio de Gestor sobre todos los espacios de nombres
-
Revisa los recursos existentes de Ingress para detectar anotaciones o configuraciones específicas de Ingress- NGINX. Consulta la documentación sobre las principales diferencias entre los dos controladores de Ingress.
-
Planifica tu estrategia de migración en función de los requisitos de la carga de trabajo, la tolerancia al tiempo de inactividad y la disponibilidad de recursos. Ambos controladores pueden funcionar simultáneamente durante la migración.
-
Asegúrate de que tu clúster cuente con al menos dos nodos de trabajo por zona para garantizar la alta disponibilidad.
-
Haz una copia de seguridad de tus configuraciones actuales de Ingress antes de realizar cambios.
Estrategia 1: Configuración independiente de Ingress con un dominio diferente
Prueba Traefik con una configuración independiente sin afectar al entorno de producción en Ingress: NGINX. Esta estrategia garantiza el máximo aislamiento y seguridad.
Utiliza esta estrategia cuando:
- Es recomendable probar a fondo Traefik antes de migrar las cargas de trabajo de producción.
- Puedes implementar un conjunto diferente de aplicaciones para realizar pruebas.
- Dispones de los recursos necesarios para ejecutar ALB adicionales.
- Quieres que no haya ningún riesgo para tu entorno de producción durante las pruebas.
Pasos
- Consulta las versiones disponibles de Traefik.
ibmcloud ks ingress alb versions - Crea un nuevo ALB con Traefik.
Grupos clásicos
sh {: pre} ibmcloud ks ingress alb create classic --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --vlan VLAN_ID --version TRAEFIK_VERSION
Clústeres de VPC
sh {: pre} ibmcloud ks ingress alb create vpc-gen2 --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --version TRAEFIK_VERSION
-
En el caso de los clústeres de VPC, implementa manualmente un servicio « LoadBalancer » adicional con fines de prueba. Configura «
spec.selector» para que incluya «app.kubernetes.io/vpcComponent: public-cr<cluster_id>-traefik» (o «private-cr<cluster_id>-traefik» en el caso de los ALB privados). En los clústeres Classic, se configura automáticamente un nuevo equilibrador de carga y no es necesaria ninguna configuración adicional. -
Crea un dominio personalizado para el ALB de Traefik y asíginalo al nombre de host o a la dirección IP del equilibrador de carga. Consulta « Creación de dominios personalizados » para obtener instrucciones detalladas.
-
Crea un recurso Ingress para aplicaciones de prueba utilizando la clase Traefik Ingress. Sigue el paso 3: Crea el recurso de Ingress, especificando
ingressClassName: public-iks-traefik(oprivate-iks-traefikpara los ALB privados). -
Prueba las aplicaciones a través del dominio de Traefik y comprueba su funcionamiento.
-
Una vez realizadas las pruebas, pasa a la sección «Realización de la migración» para migrar tus cargas de trabajo de producción.
Estrategia 2: Dos equilibradores de carga con la misma carga de trabajo
Prueba ambos controladores con la misma carga de trabajo creando dos recursos Ingress que apunten al mismo servicio. Puedes comparar directamente el comportamiento de los controladores sin afectar al tráfico de producción.
Utiliza esta estrategia cuando:
- Quieres comparar el comportamiento de Ingress- NGINX y Traefik con la misma carga de trabajo.
- Debes comprobar que Traefik gestiona correctamente tu aplicación concreta.
- Puedes realizar pruebas utilizando un dominio que no sea de producción.
- Quieres reducir al mínimo el número de solicitudes de prueba necesarias.
Pasos
- Activar un nuevo ALB con una versión basada en Traefik.
Grupos clásicos
sh {: pre} ibmcloud ks ingress alb create classic --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --vlan VLAN_ID --version TRAEFIK_VERSION
Clústeres de VPC
sh {: pre} ibmcloud ks ingress alb create vpc-gen2 --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --version TRAEFIK_VERSION
-
En el caso de los clústeres de VPC, implementa manualmente un servicio « LoadBalancer » adicional con fines de prueba. Configura «
spec.selector» para que incluya «app.kubernetes.io/vpcComponent: public-cr<cluster_id>-traefik» (o «private-cr<cluster_id>-traefik» en el caso de los ALB privados). En los clústeres Classic, se configura automáticamente un nuevo equilibrador de carga y no es necesaria ninguna configuración adicional. -
Crea un dominio personalizado para el ALB de Traefik y asíginalo al nombre de host o a la dirección IP del equilibrador de carga. Consulta « Creación de dominios personalizados » para obtener instrucciones detalladas.
-
Crea un segundo recurso Ingress que utilice la clase «Traefik Ingress», pero que apunte al mismo servicio que tu recurso Ingress existente: NGINX. Sigue las instrucciones del paso 3: «Crear el recurso de Ingress », asegurándote de:
- Especifica
ingressClassName: public-iks-traefik(oprivate-iks-traefikpara los ALB privados) - Utiliza el mismo valor de «
service.name» que utiliza tu recurso Ingress existente: NGINX Ingress - Introduce tu dominio de prueba en los campos «
host» y «tls.hosts»
- Especifica
-
Prueba tu aplicación en ambos dominios.
- Acceso a través del dominio de Ingress: NGINX (producción)
- Acceso a través del dominio de Traefik (pruebas)
-
Compara el comportamiento, el rendimiento y la funcionalidad de los dos controladores.
-
Una vez validado, pasa a la sección «Realizar el cambio» para migrar tu dominio de producción a Traefik.
Estrategia 3: Pruebas de DNS dividido
Utiliza una configuración de DNS dividido para probar Traefik con tu dominio de producción en un entorno similar al de producción sin que ello afecte a tus usuarios.
Utiliza esta estrategia cuando:
- Quieres realizar pruebas con tu dominio de producción real.
- Tienes control sobre la configuración del DNS de tu entorno de pruebas.
- Debes comprobar la configuración exacta de producción.
- Quieres reducir al mínimo las diferencias entre el entorno de pruebas y el de producción.
Pasos
- Activar un nuevo ALB con una versión basada en Traefik.
Grupos clásicos
sh {: pre} ibmcloud ks ingress alb create classic --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --vlan VLAN_ID --version TRAEFIK_VERSION
Clústeres de VPC
sh {: pre} ibmcloud ks ingress alb create vpc-gen2 --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --version TRAEFIK_VERSION
-
En el caso de los clústeres de VPC, implementa manualmente un servicio « LoadBalancer » adicional con fines de prueba. Configura «
spec.selector» para que incluya «app.kubernetes.io/vpcComponent: public-cr<cluster_id>-traefik» (o «private-cr<cluster_id>-traefik» en el caso de los ALB privados). En los clústeres Classic, se configura automáticamente un nuevo equilibrador de carga y no es necesaria ninguna configuración adicional. -
Obtén la dirección IP (método clásico) o el nombre de host (VPC) del nuevo ALB de Traefik.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME -
Configura el DNS dividido en tu entorno de pruebas.
- Para tus máquinas de prueba o tu red, configura el DNS para que resuelva tu dominio de producción a la dirección IP o el nombre de host del ALB de Traefik
- Los usuarios de producción siguen conectándose al ALB de Ingress: NGINX
- Esto se puede hacer mediante archivos «
/etc/hosts» locales, servidores DNS internos o configuraciones de DNS específicas de la VPN
-
Crea un nuevo recurso de Ingress utilizando la clase «Traefik Ingress» con tu dominio de producción. Sigue el paso 3: Crea el recurso de Ingress, especificando
ingressClassName: public-iks-traefik(oprivate-iks-traefikpara los ALB privados) y tu dominio de producción en los camposhostytls.hosts. -
Realiza una prueba desde tu entorno de DNS dividido para comprobar que Traefik funciona correctamente con el dominio y la configuración de producción.
-
Una vez validado, pasa a la sección «Realizar el cambio» para actualizar el DNS de producción de modo que apunte a Traefik.
Estrategia 4: Migración directa
Cambia directamente de Ingress ( NGINX ) a Traefik con cambios mínimos en la configuración y en la gestión de recursos.
Esta estrategia provoca interrupciones en el servicio durante la migración. Planifica un intervalo de mantenimiento antes de empezar.
Utiliza esta estrategia cuando:
- Tienes una carga de trabajo reducida o aplicaciones no críticas.
- Puedes aceptar un breve periodo de inactividad durante la migración.
- Quieres reducir al mínimo el número de recursos que hay que gestionar.
- Ya has comprobado que Traefik es compatible en otro entorno.
- En Classic, debes mantener sin cambios las direcciones IP de tus ALB, ya que tus clientes se conectan mediante direcciones IP en lugar de dominios DNS.
Al desactivar y volver a activar un ALB, se conserva su dirección IP original, a menos que, entretanto, otros servicios hayan asignado esa dirección IP. Para obtener más información, consulta « Activar o desactivar los ALB ».
Pasos
-
Obtén el ID de tu ALB actual de Ingress- NGINX.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME -
Desactiva el ALB de Ingress- NGINX.
ibmcloud ks ingress alb disable --alb ALB_ID --cluster CLUSTER_NAMEClústeres de VPC: Si desactivas tu último ALB público o privado, espera a que se eliminen la implementación del ALB y el recurso de servicio del equilibrador de carga correspondiente antes de activar un ALB de Traefik.
-
Activa el ALB con una versión de Traefik.
Grupos clásicos
sh {: pre} ibmcloud ks ingress alb enable classic --alb ALB_ID --version TRAEFIK_VERSION --cluster CLUSTER_NAME Para utilizar una dirección IP específica para el ALB en Classic, utiliza el indicador « --ip ». Para obtener más información, consulta « Activar o desactivar los ALB ».
[Clústeres de VPC]{: tag-vpc}
```sh {: pre}
ibmcloud ks ingress alb enable vpc-gen2 --alb ALB_ID --version TRAEFIK_VERSION --cluster CLUSTER_NAME
```
- En el caso de los clústeres de VPC, configura el backend del equilibrador de carga como Traefik.
Clústeres de VPC
sh {: pre} ibmcloud ks ingress load-balancer backend set --cluster CLUSTER-ID --public-backend traefik [--private-backend traefik]
-
Actualiza tus recursos de Ingress para utilizar la clase Ingress de Traefik. Si tus recursos establecen explícitamente la clase de Ingress, actualiza
spec.ingressClassNamecambiandopublic-iks-k8s-nginxporpublic-iks-traefik(oprivate-iks-k8s-nginxporprivate-iks-traefiken el caso de los ALB privados). -
Aplica los recursos actualizados de Ingress.
kubectl apply -f ingress.yaml -
Comprueba que se pueda acceder a tus aplicaciones a través del controlador Traefik.
curl https://<domain>/<app_path>
Pasarse a Traefik
Una vez finalizadas las pruebas, cambia el tráfico de producción para que utilice el controlador Traefik. Los pasos varían según se trate de clústeres clásicos o de VPC. Elige la opción que se ajuste a tu tipo de clúster y a tu configuración.
Clústeres clásicos
En el caso de los clústeres clásicos, actualiza tu dominio de producción para que apunte al equilibrador de carga que expone Traefik en lugar de Ingress: NGINX.
Opción 1: Actualizar la asignación de dominios
- Consigue la dirección IP de tu ALB de Traefik.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME - Actualiza tu dominio para que apunte al ALB de Traefik.
ibmcloud ks ingress domain update --cluster CLUSTER_NAME --domain DOMAIN_NAME --ip TRAEFIK_ALB_IP - Comprueba la actualización del dominio.
ibmcloud ks ingress domain ls --cluster CLUSTER_NAME - Prueba tus aplicaciones en el dominio de producción para asegurarte de que ahora las gestiona Traefik.
Opción 2: Desactivar Ingress en los ALB de NGINX
Como alternativa, puedes desactivar todos los ALB basados en Ingress- NGINX, lo que actualizará automáticamente las asignaciones de dominios.
- Enumera todos los ALB e identifica aquellos basados en Ingress- NGINX.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME - Desactiva cada ALB de Ingress- NGINX.
ibmcloud ks ingress alb disable --alb NGINX_ALB_ID --cluster CLUSTER_NAME - Comprueba que tu dominio apunte ahora a los ALB de Traefik.
ibmcloud ks ingress domain ls --cluster CLUSTER_NAME
Opción 3: Conservar las direcciones IP de ALB
Si tus clientes se conectan directamente a direcciones IP de ALB en lugar de a nombres DNS, puedes conservar esas direcciones IP durante la migración. Para conservar las direcciones IP es necesario desactivar temporalmente los ALB, lo que provoca una breve interrupción del servicio.
Al desactivar y volver a activar un ALB, se conserva su dirección IP original, a menos que dicha dirección IP haya sido asignada a otros servicios.
-
Enumera todos los ALB e identifica aquellos basados en Ingress- NGINX para obtener sus ID y direcciones IP.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME -
Desactiva el ALB de Ingress- NGINX. Esto provoca una breve interrupción del servicio para el tráfico de esa dirección IP.
ibmcloud ks ingress alb disable --alb ALB_ID --cluster CLUSTER_NAME -
Vuelve a activar el ALB con una versión de Traefik para volver a utilizar la misma dirección IP.
ibmcloud ks ingress alb enable classic --alb ALB_ID --version TRAEFIK_VERSION --cluster CLUSTER_NAMEComo alternativa, crea un nuevo ALB y utiliza el indicador «
--ip» para reutilizar la dirección IP original. -
Actualiza tus recursos de Ingress para utilizar la clase Ingress de Traefik. Si tus recursos establecen explícitamente la clase de Ingress, actualiza
spec.ingressClassNamecambiandopublic-iks-k8s-nginxporpublic-iks-traefik(oprivate-iks-k8s-nginxporprivate-iks-traefiken el caso de los ALB privados). -
Aplica los recursos actualizados de Ingress.
kubectl apply -f ingress.yaml -
Comprueba que se pueda acceder a tus aplicaciones a través del controlador Traefik.
curl https://<domain>/<app_path>
Clústeres de VPC
En el caso de los clústeres de VPC, actualiza el backend del equilibrador de carga para que exponga Traefik en lugar de Ingress: NGINX.
Opción 1: Actualizar el backend del equilibrador de carga
- Actualiza el equilibrador de carga para que utilice el backend de Traefik.
ibmcloud ks ingress load-balancer backend set --cluster CLUSTER_NAME --public-backend traefik [--private-backend traefik] - Comprueba la configuración del equilibrador de carga.
ibmcloud ks ingress load-balancer get --cluster CLUSTER_NAME - Comprueba tus aplicaciones para asegurarte de que ahora las gestiona Traefik.
Opción 2: Desactivar Ingress en los ALB de NGINX
Como alternativa, puedes desactivar todos los ALB basados en Ingress- NGINX.
- Enumera todos los ALB e identifica aquellos basados en Ingress- NGINX.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME - Desactiva cada ALB de Ingress- NGINX.
ibmcloud ks ingress alb disable --alb NGINX_ALB_ID --cluster CLUSTER_NAME - Comprueba que el equilibrador de carga utilice ahora los ALB de Traefik.
ibmcloud ks ingress load-balancer get --cluster CLUSTER_NAME
Tareas posteriores a la migración
Tras la migración a Traefik, realiza las siguientes tareas:
-
Supervisa tus aplicaciones para detectar cualquier comportamiento inesperado o error tras la migración.
-
Actualizar la documentación interna para reflejar la nueva configuración de Ingress con Traefik.
-
Elimina cualquier ALB, dominio o recurso de Ingress de prueba que ya no sea necesario.
-
Una vez que hayas comprobado que Traefik funciona según lo previsto, desactiva los ALB restantes de Ingress- NGINX.
ibmcloud ks ingress alb disable --alb NGINX_ALB_ID --cluster CLUSTER_NAME
Resolución de problemas
Si surge algún problema durante o después de la migración, sigue estos pasos para diagnosticarlo y resolverlo.
- Comprobar la clase de Ingress
-
Comprueba que los recursos de Ingress utilicen la clase de Traefik correcta (
public-iks-traefikoprivate-iks-traefik). - Comprobar el estado del ALB
-
Asegúrate de que tus ALB de Traefik se encuentren en buen estado.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME - Comprobar el estado de Ingress
-
Comprueba el estado de tus recursos de Ingress.
kubectl get ingress -A - Revisar los registros
-
Comprueba si hay errores en los registros del controlador de Traefik.
kubectl logs -n kube-system -l alb-image-type=traefik - Ejecutar diagnósticos
-
Utiliza el informe de estado de Ingress para identificar problemas.
ibmcloud ks ingress status-report get --cluster CLUSTER_NAME - Si es necesario, vuelve atrás
-
Si se producen problemas graves, vuelve a la versión anterior de Ingress- NGINX desactivando el ALB de Traefik y volviendo a activar el ALB de Ingress- NGINX con su versión original. Planea resolver los problemas y volver a realizar la migración.
Si necesitas más ayuda, consulta la sección «Solución de problemas de Ingress» o ponte en contacto con el servicio de asistencia de IBM Cloud.