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.
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 .
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.
Para implementar la aplicação en su clúster, siga las instrucciones en nuestro repositorio de GitHub .
Nuestra aplicación de cafetería requiere que el balanceador de carga proporcione dos funciones:
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:
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 las líneas 6 a 9 configuramos la terminación SSL/TLS:
En las líneas 13 a 21 definimos dos reglas basadas en rutas:
Para obtener instrucciones completas sobre la implementación de los recursos Ingress y Secret en el clúster, consulte nuestro repositorio de GitHub .
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é .
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.
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.
Con NGINX Plus, el controlador Ingress proporciona los siguientes beneficios además de los que obtiene con NGINX:
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.