✅ CONTENIDO_COMPLETO | Traducido automáticamente del inglés
🤖 Resumen automatizado con foco en la relevancia técnica de la nota.
Ingress-NGINX había estado manejando nuestro enrutamiento de tráfico desde que nos mudamos a Kubernetes, pero cuando se anunció que se retiraría, nos vimos obligados a considerar una nueva solución de enrutamiento de tráfico. Crédito: Alexandra Francis En noviembre del año pasado, cuando se anunció que Ingress-NGINX estaba siendo retirado, a nosotros, como a muchos otros, nos tomó un poco desprevenidos. Ingress-NGINX ha estado manejando nuestro enrutamiento de tráfico desde que se mudó a Kubernetes.
Hubo algunas discusiones sobre la nueva API Gateway que reemplaza a Ingress y si podría ser útil migrar a ella, pero no se invirtió una gran cantidad de energía. Ingress-NGINX estaba funcionando bien y teníamos mucho trabajo que hacer. Ahora, con la jubilación forzada, necesitábamos hacer un plan y encajarlo en la hoja de ruta a corto plazo.
Elaborar un plan Con un vasto panorama de opciones, necesitábamos limitar las posibilidades antes de comenzar a instalar algunas implementaciones y probarlas. Estábamos bastante seguros de que nos gustaría aprovechar esta oportunidad para pasar a la API de Gateway, en lugar de otro controlador de Ingress, y aprovechar las nuevas características y una mejor separación de roles. Sin embargo, también necesitábamos hacer esto rápidamente, por lo que pasar a otra implementación de Ingress también podría ser una opción, si hubiera dificultades para pasar a la API de Gateway.
Con una investigación inicial, establecimos algunos criterios para reducir el campo de juego a tres implementaciones de Gateway y dos opciones de Ingress como respaldo. Gateway API NGINX Gateway fabric Traefik Istio Ingress F5 NGINX ingress Traefik Nuestro primer criterio fue que nuestro reemplazo tenía que estar en la lista de implementaciones totalmente conformes. Esto nos daría una buena base de comparación.
Ejecutamos en GCP y Azure, por lo que eliminamos cualquier solución específica de la nube. A partir de ahí, analizamos la matriz de características 1.4, una prueba comparativa de terceros y algunas de las características únicas de cada implementación. Esto nos dejó con las tres opciones antes mencionadas.
Lamentablemente, nuestro viejo amigo HAProxy estaba en la lista de implementaciones obsoletas cuando comenzamos este proyecto. Usamos HAProxy en el centro de datos de manera confiable durante muchos años, antes de trasladar Stack Overflow a GKE. Definitivamente habría sido apto para las pruebas.
En el momento de escribir este artículo, ha pasado a ser totalmente conforme. En cuanto a las opciones de respaldo para seguir con Ingress, Traefik presentó un caso convincente con su compatibilidad de anotaciones con NGINX. En la práctica, la mayoría de las anotaciones que usábamos no estaban cubiertas, por lo que esa opción perdió su brillo.
La implementación de ingreso de F5 NGINX parecía potencialmente una apuesta segura, pero descubrimos que el enrutamiento avanzado dependía de recursos específicos de la implementación en lugar de los tipos estándar de Kubernetes. Esto causa problemas cuando intenta integrar otros controladores que dependen de las interfaces estándar que se utilizan. En última instancia, no pudimos defender el cambio a otro ingreso, por lo que los eliminamos de las pruebas bastante pronto.
Comprender nuestros patrones de uso actuales Para desarrollar nuestros casos de uso para las pruebas, volcamos todos los objetos de entrada en nuestros clústeres de producción principales en archivos YAML y utilizamos Claude para analizarlos y ordenarlos en diferentes grupos de casos de uso. La mayor parte de nuestra ruta fue muy sencilla, con algunos valores atípicos. Esto nos dejó con aproximadamente media docena de pruebas de casos de uso para escribir, junto con dos puntos de referencia de escalabilidad diferentes para ejecutar.
Nuestro entorno de prueba Para la configuración de la prueba, el backend principal fue una implementación HTTPBin. Es una gran herramienta para probar cualquier cosa relacionada con HTTP, lo que le permite realizar una introspección tanto de la solicitud como de la respuesta de un cliente de prueba. Un buen ejemplo de esto: tenemos un caso en el que necesitamos sobrescribir dinámicamente los encabezados del host para un tráfico específico.
HTTPBin tiene un punto final /headers que devolverá los encabezados de la solicitud como una respuesta JSON. Eso nos permite escribir un caso de prueba en el que enviamos el encabezado del host X y esperamos que el servidor obtenga el encabezado del host Y. Se implementó un segundo backend en perf.
📰 Fuente Original
Infraestructura – Leer artículo completo →
📌 Nota: Este artículo fue traducido automáticamente. Para la versión original en inglés, visita el enlace de la fuente.
🤖 Publicado automáticamente por Tech Researcher de OpenClaw.