BLOG | NGINX

Controladores de ingreso NGINX y NGINX Plus para el equilibrio de carga de Kubernetes

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Michael Pleshakov
Michael Pleshakov
Publicado el 5 de diciembre de 2016

Ejecutar y administrar aplicações de microservicios en contenedores a escala en un clúster de máquinas es una tarea desafiante. Kubernetes le ayuda a afrontar el desafío proporcionándole una solución potente para la orquestación de contenedores. Incluye varias características importantes, como tolerancia a fallas, escalamiento automático, actualizaciones continuas, almacenamiento, descubrimiento de servicios y equilibrio de carga.

En esta publicación de blog explicamos cómo usar NGINX Open Source o NGINX Plus con Ingress , el marco de equilibrio de carga de Kubernetes integrado para el tráfico HTTP. Ingress le permite configurar reglas que controlan el enrutamiento del tráfico externo a los servicios en su clúster de Kubernetes. Puede elegir cualquier balanceador de carga que proporcione un controlador de ingreso , que es un software que implementa en su clúster para integrar Kubernetes y el balanceador de carga. Aquí le mostramos cómo configurar el equilibrio de carga para una aplicação de microservicios con Ingress y los controladores de Ingress que proporcionamos para NGINX Plus y NGINX.

[Editor: Los controladores anteriormente separados para NGINX y NGINX Plus se han fusionado en un único controlador Ingress para ambos].

En esta publicación de blog examinamos solo el equilibrio de carga HTTP para Kubernetes con Ingress. Para obtener más información sobre otras opciones de equilibrio de carga, consulte Equilibrio de carga de servicios de Kubernetes con NGINX Plus en nuestro blog.

Nota:  Las instrucciones completas para los procedimientos analizados en esta publicación de blog están disponibles en nuestro repositorio de GitHub . Esta publicación no describe todos los pasos necesarios, pero proporciona enlaces a esas instrucciones.

Controladores de ingreso para NGINX y NGINX Plus

Antes de implementar la aplicação de muestra y configurar el equilibrio de carga para ella, debemos elegir un equilibrador de carga e implementar el controlador Ingress correspondiente.

Un controlador de Ingress es un software que integra un balanceador de carga particular con Kubernetes. Hemos desarrollado un controlador Ingress para NGINX Open Source y NGINX Plus, ahora disponible en nuestro repositorio de GitHub . También hay otras implementaciones creadas por terceros; para obtener más información, visite la página Controladores de ingreso en el repositorio de GitHub para Kubernetes.

Para obtener instrucciones completas sobre cómo implementar el controlador de ingreso NGINX o NGINX Plus en su clúster, consulte nuestro repositorio de GitHub .

La aplicação de microservicios de muestra

Nuestra aplicação de muestra es una aplicação web de microservicios típica que consta de múltiples servicios, cada uno implementado por separado. La aplicação, llamada cafe , te permite pedir té a través del servicio de té o café a través del servicio de café . Indica tu preferencia de bebida con la URI de tu solicitud HTTP: Las URI que terminan en /tea te brindan té y las URI que terminan en /coffee te brindan café. Las conexiones a la aplicação deben estar protegidas con SSL/TLS.

El diagrama a continuación representa conceptualmente la aplicação, con el balanceador de carga NGINX Plus desempeñando el importante papel de enrutar las solicitudes de los clientes al servicio apropiado, además de proteger las conexiones de los clientes con SSL/TLS.

La aplicação de microservicios 'cafe' de muestra proporcionada con los controladores de ingreso NGINX y NGINX Plus ilustra el equilibrio de carga de Kubernetes.

Para implementar la aplicação en su clúster, siga las instrucciones en nuestro repositorio de GitHub .

Configuración del equilibrio de carga de Kubernetes a través de Ingress

Nuestra aplicación de cafetería requiere que el balanceador de carga proporcione dos funciones:

  • Enrutamiento basado en la URI de solicitud (también llamado enrutamiento basado en ruta )
  • Terminación SSL/TLS

Para configurar el equilibrio de carga con Ingress, defina reglas en un recurso de Ingress . Las reglas especifican cómo enrutar el tráfico externo a los servicios de su clúster.

En el recurso puedes definir varios servidores virtuales, cada uno para un nombre de dominio diferente. Un servidor virtual generalmente corresponde a una única aplicação de microservicios implementada en el clúster. Para cada servidor, puedes:

  • Especifique múltiples reglas basadas en rutas. El tráfico se envía a diferentes servicios en una aplicação según la URI de solicitud.
  • Configure la terminación SSL/TLS haciendo referencia a un certificado y una clave SSL/TLS.

Puede encontrar una explicación más detallada de Ingress, con ejemplos, en la página de documentación de Ingress .

Aquí está el recurso de Ingress ( cafe‑ingress.yaml ) para la aplicación de cafetería :

 

Examinándolo línea por línea, vemos:

  • En la línea 4 nombramos el recurso cafe‑ingress .
  • En las líneas 6 a 9 configuramos la terminación SSL/TLS:

    • En la línea 9 hacemos referencia a un recurso Secreto por su nombre cafe‑secret . Este recurso contiene el certificado y la clave SSL/TLS y debe implementarse antes del recurso Ingress.
    • En la línea 8 aplicamos el certificado y la clave a nuestro servidor virtualcafe.example.com .
  • En la línea 11 definimos un servidor virtual con nombre de dominio cafe.example.com .
  • En las líneas 13 a 21 definimos dos reglas basadas en rutas:

    • La regla definida en las líneas 14 a 17 indica al balanceador de carga que distribuya las solicitudes con el URI /tea entre los contenedores del servicio tea , que se implementa con el nombre tea‑svc en el clúster.
    • La regla definida en las líneas 18 a 21 indica al balanceador de carga que distribuya las solicitudes con el URI /coffee entre los contenedores del servicio de café , que se implementa con el nombre coffee‑svc en el clúster.
    • Ambas reglas instruyen al balanceador de carga a distribuir las solicitudes al puerto 80 del servicio correspondiente.

Para obtener instrucciones completas sobre la implementación de los recursos Ingress y Secret en el clúster, consulte nuestro repositorio de GitHub .

Probando la aplicação

Una vez que implementamos el controlador Ingress NGINX Plus, nuestra aplicação, el recurso Ingress y el recurso Secret, podemos probar la aplicación.

Cuando realizamos una solicitud de té con la URI /tea , en el navegador vemos una página generada por el servicio de té .

El microservicio de muestra 'tea' proporcionado con los controladores de ingreso NGINX y NGINX Plus para el equilibrio de carga de Kubernetes devuelve una página de índice con detalles de la solicitud.

Esperamos que no esté demasiado decepcionado porque los servicios de té y café en realidad no le brindan bebidas, sino información sobre los recipientes en los que se sirven y los detalles de su solicitud. Estos incluyen el nombre de host y la dirección IP del contenedor, la URI de la solicitud y la dirección IP del cliente. Cada vez que actualizamos la página obtenemos una respuesta de un contenedor diferente.

También podemos conectarnos al panel de monitoreo de actividad en vivo de NGINX Plus y ver métricas de equilibrio de carga en tiempo real de NGINX Plus y cada contenedor de nuestra aplicação.

El panel de monitoreo de actividad en vivo de NGINX Plus muestra las solicitudes de equilibrio de carga de NGINX Plus entre los microservicios en la aplicação de muestra 'cafe' proporcionada con los controladores de ingreso NGINX y NGINX Plus para el equilibrio de carga de Kubernetes.

Extensiones del controlador de Ingress

Ingress proporciona una funcionalidad básica de equilibrio de carga HTTP. Sin embargo, a menudo ocurre que los requisitos de equilibrio de carga para sus aplicações son más complejos y, por lo tanto, Ingress no los admite. Para abordar algunos de esos requisitos, hemos agregado una serie de extensiones al controlador Ingress. De esta manera, aún puede aprovechar el uso de los recursos de Kubernetes para configurar el equilibrio de carga (en lugar de tener que configurar el equilibrador de carga directamente), pero aprovechando la capacidad de utilizar funciones avanzadas de equilibrio de carga.

Para obtener una lista completa de las extensiones disponibles, consulte nuestro repositorio de GitHub .

Además, proporcionamos un mecanismo para personalizar la configuración de NGINX mediante recursos de Kubernetes, a través de recursos de Config Maps o Anotaciones. Por ejemplo, puede personalizar los valores de las directivas proxy_connect_timeout o proxy_read_timeout .

Cuando sus requisitos de equilibrio de carga superan los admitidos por Ingress y nuestras extensiones, sugerimos un enfoque diferente para implementar y configurar NGINX Plus que no utiliza el controlador Ingress. Lea Equilibrio de carga de servicios de Kubernetes con NGINX Plus en nuestro blog para obtener más información.

Beneficios del NGINX Plus con el controlador

Con NGINX Plus, el controlador Ingress proporciona los siguientes beneficios además de los que obtiene con NGINX:

  • Estabilidad en un entorno altamente dinámico : cada vez que hay un cambio en la cantidad de pods de servicios que se exponen a través de Ingress, el controlador de Ingress debe actualizar la configuración de NGINX o NGINX Plus para reflejar los cambios. Con NGINX Open Source, debe cambiar el archivo de configuración manualmente y volver a cargar la configuración. Con NGINX Plus, puede utilizar la API de reconfiguración dinámica para actualizar la configuración sin volver a cargar el archivo de configuración. Esto evita el posible aumento en el uso de memoria y la sobrecarga general del sistema que pueden ocurrir cuando las recargas de configuración son muy frecuentes.
  • Estadísticas en tiempo real : NGINX Plus proporciona estadísticas avanzadas en tiempo real , a las que puede acceder a través de una API o en el panel integrado. Esto puede brindarle información sobre el rendimiento de NGINX Plus y sus aplicações .
  • Persistencia de la sesión : cuando habilita la persistencia de la sesión, NGINX Plus se asegura de que todas las solicitudes del mismo cliente siempre se pasen al mismo contenedor de backend mediante el método de cookies persistentes .

resumen

Kubernetes proporciona equilibrio de carga HTTP integrado para enrutar el tráfico externo a los servicios en el clúster con Ingress. NGINX y NGINX Plus se integran con el equilibrio de carga de Kubernetes, son totalmente compatibles con las funciones de Ingress y también brindan extensiones para admitir requisitos de equilibrio de carga extendidos.

Para probar NGINX Plus y el controlador Ingress, comience hoy su 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.