Editor : Esta publicación es un extracto de nuestro completo libro electrónico, Gestión del tráfico de Kubernetes con F5 NGINX: Una guía práctica . Descárgalo gratis hoy .
Muchas organizaciones que configuran Kubernetes por primera vez comienzan con el controlador de ingreso NGINX desarrollado y mantenido por la comunidad de Kubernetes ( kubernetes/ingress-nginx ). Sin embargo, a medida que las implementaciones de Kubernetes maduran, algunas organizaciones descubren que necesitan funciones avanzadas o desean soporte comercial mientras mantienen NGINX como el plano de datos.
Una opción es migrar al controlador de ingreso NGINX desarrollado y mantenido por F5 NGINX ( nginxinc/kubernetes-ingress ), y aquí brindamos instrucciones completas para que pueda evitar algunas complicaciones que resultan de las diferencias entre los dos proyectos.
¿No está seguro de en qué se diferencian estas opciones? Lea la Guía para elegir un controlador de ingreso, parte 4: Opciones del controlador de ingreso NGINX en nuestro blog.
Para distinguir entre los dos proyectos en el resto de esta publicación, nos referimos al controlador de ingreso NGINX mantenido por la comunidad de Kubernetes ( kubernetes/ingress-nginx ) como el “controlador de ingreso de la comunidad” y al mantenido por F5 NGINX ( nginxinc/kubernetes-ingress ) como “controlador de ingreso NGINX”.
Hay dos formas de migrar del controlador de Ingress de la comunidad al controlador de Ingress de NGINX:
Con esta opción de migración, utiliza el recurso Ingress de Kubernetes estándar para configurar las capacidades raíz y los recursos Ingress de NGINX para mejorar su configuración con mayores capacidades y facilidad de uso.
Las definiciones de recursos personalizadas (CRD) para los recursos de NGINX Ingress ( VirtualServer, VirtualServerRoute , TransportServer , GlobalConfiguration y Policy ) le permiten delegar fácilmente el control sobre varias partes de la configuración a diferentes equipos (como los equipos de desarrollo de aplicaciones y seguridad), además de proporcionar mayor seguridad y validación de la configuración.
La tabla asigna la configuración de la terminación SSL y el enrutamiento basado en rutas de capa 7 en el campo de especificación
del recurso Ingress de Kubernetes estándar con el campo de especificación
en el recurso NGINX VirtualServer . La sintaxis y la sangría difieren ligeramente en los dos recursos, pero logran las mismas funciones básicas de Ingress.
Recurso de ingreso de Kubernetes | Recurso de servidor virtual NGINX |
---|---|
|
|
Con el controlador Ingress de la comunidad, un objeto API ConfigMap de Kubernetes es la única forma de exponer servicios TCP y UDP .
Con NGINX Ingress Controller, los recursos de TransportServer definen una amplia gama de opciones para el equilibrio de carga de paso a través de TCP/UDP y TLS. Los recursos de TransportServer se utilizan junto con los recursos de GlobalConfiguration para controlar las conexiones entrantes y salientes.
Para obtener más información, consulte Compatibilidad con servicios de paso a través de TCP, UDP y TLS en los recursos de ingreso de NGINX en nuestro blog.
Las implementaciones de Kubernetes de nivel de producción a menudo necesitan ampliar las reglas de ingreso básicas para implementar casos de uso avanzados, incluidas implementaciones canarias y azul-verde, limitación de tráfico, manipulación del tráfico de ingreso y egreso, y más.
El controlador de Ingress de la comunidad implementa muchos de estos casos de uso con anotaciones de Kubernetes. Sin embargo, muchas de estas anotaciones se crean con extensiones Lua personalizadas que pertenecen a definiciones de recursos de NGINX Ingress muy específicas y, como resultado, no son adecuadas para implementar funcionalidades avanzadas en un entorno de producción estable y compatible.
En las siguientes secciones mostramos cómo convertir las anotaciones del controlador de Ingress de la comunidad en recursos del controlador de Ingress NGINX.
Incluso mientras envía cambios de código frecuentes a sus cargas de trabajo de contenedores de producción, debe continuar brindando servicio a sus usuarios existentes. Las implementaciones Canary y Blue-Green le permiten hacer esto y puede realizarlas en el plano de datos del controlador de ingreso NGINX para lograr actualizaciones estables y predecibles en entornos de Kubernetes de nivel de producción.
La tabla muestra los campos en los recursos NGINX VirtualServer y VirtualServerRoute que corresponden a las anotaciones del controlador de ingreso de la comunidad para implementaciones canarias .
El controlador de Ingress de la comunidad evalúa las anotaciones canarias en este orden de precedencia:
nginx.ingress.kubernetes.io/canary-by-header
nginx.ingress.kubernetes.io/canary-by-cookie
nginx.ingress.kubernetes.io/canary-by-weight
Para que NGINX Ingress Controller los evalúe de la misma manera, deben aparecer en ese orden en el manifiesto NGINX VirtualServer o VirtualServerRoute.
Controlador de ingreso a la comunidad | NGINX Ingress Controller |
---|---|
|
|
|
|
|
|
|
|
En entornos de microservicios, donde las aplicações son efímeras por naturaleza y, por lo tanto, tienen más probabilidades de devolver respuestas de error, los equipos de DevOps hacen un uso extensivo de políticas de control de tráfico (como interrupción de circuitos y limitación de velocidad y conexión) para evitar condiciones de error cuando las aplicações no funcionan correctamente o no funcionan como se espera.
La tabla muestra los campos en los recursos NGINX VirtualServer y VirtualServerRoute que corresponden a las anotaciones del controlador de ingreso de la comunidad para limitación de velocidad , errores HTTP personalizados , un backend predeterminado personalizado y reescritura de URI .
Controlador de ingreso a la comunidad | NGINX Ingress Controller |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Como se indica en la tabla, al momento de escribir este artículo los recursos de Ingress de NGINX no incluyen campos que traduzcan directamente las siguientes cuatro anotaciones del controlador de Ingress de la comunidad, y debe usar fragmentos. Se planea brindar soporte directo para las cuatro anotaciones, mediante recursos de políticas , para futuras versiones de NGINX Ingress Controller.
nginx.ingress.kubernetes.io/limit-connections
nginx.ingress.kubernetes.io/limit-rate
nginx.ingress.kubernetes.io/limit-rate-after
nginx.ingress.kubernetes.io/limit-whitelist
La manipulación de los encabezados HTTP es útil en muchos casos de uso, ya que contienen información adicional que es importante y relevante para los sistemas involucrados en una transacción HTTP. Por ejemplo, el controlador de Ingress de la comunidad permite habilitar y configurar encabezados de uso compartido de recursos de origen cruzado (CORS), que se usan con aplicações AJAX, donde el código JavaScript de front-end de un navegador se conecta a una aplicación de back-end o un servidor web.
La tabla muestra los campos en los recursos NGINX VirtualServer y VirtualServerRoute que corresponden a las anotaciones del controlador de Ingress de la comunidad para la manipulación del encabezado .
Controlador de ingreso a la comunidad | NGINX Ingress Controller |
---|---|
|
|
Hay otras funcionalidades de proxy y equilibrio de carga que quizás desee configurar en NGINX Ingress Controller dependiendo del caso de uso específico. Estas funcionalidades incluyen la configuración del algoritmo de equilibrio de carga, así como la configuración de tiempo de espera y almacenamiento en búfer para conexiones mediante proxy.
La tabla muestra las declaraciones en el campo ascendente
de los recursos NGINX VirtualServer y VirtualServerRoute que corresponden a las anotaciones del controlador de ingreso de la comunidad para el equilibrio de carga NGINX personalizado , los tiempos de espera del proxy , el almacenamiento en búfer del proxy y las conexiones de enrutamiento a la dirección IP y el puerto del clúster de un servicio .
Controlador de ingreso a la comunidad | NGINX Ingress Controller |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Una malla de servicios es particularmente útil en un entorno estricto de confianza cero, donde las aplicações distribuidas dentro de un clúster se comunican de forma segura mediante la autenticación mutua. ¿Qué pasa si necesitamos imponer el mismo nivel de seguridad al tráfico que entra y sale del clúster (tráfico norte-sur)?
Podemos configurar la autenticación mTLS en la capa del controlador de ingreso para que los sistemas finales de las conexiones externas se autentiquen entre sí presentando un certificado válido.
La tabla muestra los campos en los recursos de políticas de NGINX que corresponden a las anotaciones del controlador de ingreso de la comunidad para la autenticación de certificados de cliente y la autenticación de certificados de back-end .
Controlador de ingreso a la comunidad | NGINX Ingress Controller |
---|---|
|
|
|
|
La tabla muestra los campos en los recursos de políticas de NGINX que son exclusivos del controlador de ingreso de NGINX basado en NGINX Plus y corresponden a las anotaciones del controlador de ingreso de la comunidad para la persistencia de la sesión (afinidad).
Controlador de ingreso a la comunidad | NGINX Ingress Controller |
---|---|
|
|
La segunda opción para migrar del controlador de Ingress de la comunidad al controlador de Ingress de NGINX es usar solo anotaciones y ConfigMaps en el recurso de Ingress estándar de Kubernetes y potencialmente confiar en el procesamiento de estilo “ maestro/súbdito ”. Esto mantiene toda la configuración en el objeto Ingress.
Nota: Con este método, no altere el campo de especificación
del recurso Ingress.
La siguiente tabla describe las anotaciones del controlador de Ingress de la comunidad que corresponden directamente a las anotaciones compatibles con el controlador de Ingress NGINX.
1El controlador de Ingress de la comunidad utiliza Lua para implementar algunos de sus algoritmos de equilibrio de carga. El controlador de ingreso NGINX no tiene un equivalente para todos ellos.
2Redirige el tráfico HTTP a HTTPS. El controlador de Ingress de la comunidad implementa esto con código Lua, mientras que el controlador de Ingress NGINX usa condiciones if
nativas de NGINX.
La siguiente tabla describe las anotaciones del controlador de Ingress de la comunidad que corresponden directamente a las anotaciones compatibles con el controlador de Ingress NGINX basado en NGINX Plus.
Controlador de ingreso a la comunidad | Controlador de ingreso NGINX basado en NGINX Plus |
---|---|
|
|
Nota: El controlador de ingreso NGINX basado en NGINX Plus tiene anotaciones adicionales para funciones que el controlador de ingreso de la comunidad no admite en absoluto, incluidos los controles de estado activos y la autenticación mediante tokens web JSON (JWT).
La siguiente tabla asigna las claves ConfigMap del controlador Ingress de la comunidad a sus claves ConfigMap del controlador Ingress NGINX directamente correspondientes. Tenga en cuenta que algunos nombres de claves de ConfigMap son idénticos. Además, tanto el controlador de Ingress de la comunidad como el controlador de Ingress NGINX tienen claves ConfigMaps que el otro no tiene (no se muestran en la tabla).
Puede migrar del controlador de Ingress de la comunidad al controlador de Ingress de NGINX utilizando recursos de Ingress de NGINX personalizados o el recurso de Ingress de Kubernetes estándar con anotaciones y ConfigMaps. La primera opción admite un conjunto más amplio de capacidades de red y, por lo tanto, es más adecuada para entornos de Kubernetes de nivel de producción.
Esta publicación es un extracto de nuestro completo libro electrónico, Gestión del tráfico de Kubernetes con F5 NGINX: Una guía práctica . Descárgalo gratis hoy .
Pruebe usted mismo el controlador de ingreso NGINX basado en NGINX Plus hoy mismo con una prueba gratuita de 30 días o contáctenos para analizar sus casos de uso .
"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.