Orquestación de contenedores para microservicios
Normalmente, las arquitecturas de microservicios empaquetan e implementan cada instancia de microservicio dentro de un único contenedor. Es posible que se ejecuten muchas instancias de los microservicios, cada una en un contenedor independiente. Los contenedores son ligeros y de corta duración, lo que facilita la creación y destrucción, pero difícil de coordinar y comunicar entre ellos.
En este artículo se describen los desafíos de ejecutar una arquitectura de microservicios en contenedores a escala de producción y cómo puede ayudar la orquestación de contenedores. En el artículo se presentan varias opciones de orquestación de contenedores de Azure.
Arquitectura de microservicios en contenedores
En este clúster de Azure Kubernetes Service (AKS) en contenedores sencillo:
- Una instancia de Microservicio A se ejecuta en el nodo 1, otra instancia del nodo 2 y una tercera instancia del nodo 3.
- Una instancia de Microservicio B se ejecuta en el nodo 1 y otra instancia en el nodo 3.
- Los servidores proxy inversos de en contenedor se ejecutan en los nodos 1 y 2 para distribuir el tráfico.
Para administrar el clúster, un equipo de DevOps tiene que:
- Ejecute varias instancias de contenedor en cada nodo.
- Equilibrio de carga del tráfico entre las instancias.
- Administrar la comunicación entre instancias dependientes en nodos independientes.
- Mantenga el estado deseado del clúster de AKS.
Con la orquestación de contenedores, el equipo de DevOps puede representar el estado deseado del clúster como una configuración. Un motor de orquestación de contenedores aplica la configuración deseada y automatiza todas las tareas de administración.
Considere la posibilidad de incluir en contenedores una aplicación web simple de tres niveles:
- Un contenedor hospeda el componente front-end.
- Otro contenedor hospeda el nivel intermedio o la capa de API REST.
- La capa de nivel intermedio se comunica con una base de datos distribuida globalmente.
Es posible que la ejecución de estos contenedores en una sola máquina de desarrollo no sea demasiado difícil. Sin embargo, ejecutar la aplicación en modo de alta disponibilidad a escala en un clúster de producción se vuelve rápidamente difícil. La orquestación de contenedores es fundamental para entornos de producción grandes y dinámicos.
Ventajas de la orquestación de contenedores
En el ejemplo siguiente se muestra cómo la orquestación de contenedores puede ayudar a administrar la implementación, las redes y el escalado del clúster.
Orquestador de contenedores:
Escala automáticamente el número de instancias de microservicios, en función del tráfico o el uso de recursos. En el ejemplo, el orquestador agrega automáticamente otra instancia de Microservicio A en respuesta al aumento del tráfico.
Administra los contenedores para reflejar el estado deseado configurado. En el ejemplo, microservicio B está configurado para tener dos instancias. Una instancia se ha vuelto incorrecta, por lo que el orquestador mantiene el estado deseado mediante la creación de otra instancia.
Encapsula los contenedores de cada microservicio en una capa de servicio simple. La capa de servicio:
- Abstrae las complejidades como la dirección IP, el puerto y el número de instancias.
- Equilibra la carga del tráfico entre instancias de microservicios.
- Admite una comunicación sencilla entre instancias de microservicio dependientes.
Los orquestadores de contenedores también proporcionan flexibilidad y control de tráfico para:
- Publique nuevas versiones o revierte a versiones anteriores de microservicios o conjuntos de microservicios, sin tiempo de inactividad.
- Habilite las pruebas en paralelo de diferentes versiones de microservicios.
Elección de un orquestador de contenedores de Azure
Estas son algunas opciones para implementar la orquestación de contenedores de microservicios en Azure:
azure Kubernetes Service (AKS) es un servicio de orquestación de contenedores de Kubernetes totalmente administrado en Azure que simplifica la implementación y administración de aplicaciones en contenedor. AKS proporciona aprovisionamiento elástico, implementación rápida de un extremo a otro y administración avanzada de identidades y acceso.
Azure Service Fabric es un orquestador de contenedores para implementar y administrar microservicios en un clúster de máquinas. El entorno de ejecución ligero de Service Fabric admite la creación de microservicios sin estado y con estado.
Un diferenciador clave de Service Fabric es su sólida compatibilidad con la creación de servicios con estado. Puede usar el modelo de programación de servicios con estado integrado o ejecutar servicios con estado en contenedores escritos en cualquier lenguaje o código.
azure Container Instances (ACI) es la manera más rápida y sencilla de ejecutar un contenedor en Azure. Con ACI, no tiene que administrar máquinas virtuales ni adaptar servicios de nivel superior.
Para escenarios de orquestación simples, puede usar docker Compose para definir y ejecutar localmente una aplicación de varios contenedores. A continuación, implemente los contenedores de Docker como un grupo de contenedores de ACI en un entorno de Azure administrado y sin servidor. Para escenarios de orquestación de contenedores completos, ACI se puede integrar con AKS para crear nodos virtuales para la orquestación de AKS.
azure Spring Apps es un servicio totalmente administrado y listo para la empresa para aplicaciones de Spring Boot. Con Spring Apps, puede centrarse en la creación y ejecución de aplicaciones sin tener que administrar la infraestructura. Spring Apps incluye la administración integrada del ciclo de vida y la orquestación, la facilidad de supervisión y la integración completa con Azure.
Red Hat OpenShift (ARO) de Azure admite la implementación de clústeres de openShift en Azuretotalmente administrados. La ejecución de contenedores de producción de Kubernetes requiere la integración con marcos y herramientas como registros de imágenes, administración de almacenamiento, supervisión y DevOps. ARO amplía Kubernetes mediante la combinación de estos componentes en una única plataforma de contenedor como servicio (PaaS).
Colaboradores
Microsoft mantiene este artículo. Originalmente fue escrito por los siguientes colaboradores.
Autor principal:
Para ver perfiles de LinkedIn no públicos, inicie sesión en LinkedIn.
Pasos siguientes
- arquitectura de microservicios de en azure Kubernetes Service (AKS)
- arquitectura avanzada de microservicios de Azure Kubernetes Service (AKS)
- CI/CD para aplicaciones de AKS con Azure Pipelines
- Uso de puertas de enlace de API en microservicios
- arquitectura de referencia de Azure Spring Apps