Elección de un servicio de Azure Container Service
Azure ofrece una gama de servicios de hospedaje de contenedores diseñados para dar cabida a varias cargas de trabajo, arquitecturas y requisitos empresariales. Esta guía de selección de servicios de contenedor puede ayudarle a comprender qué servicio de Azure Container Service es más adecuado para los escenarios y requisitos de la carga de trabajo.
Nota:
En esta guía, el término carga de trabajo hace referencia a una colección de recursos de aplicación que buscan cumplir un objetivo empresarial o la ejecución de un proceso de negocio. Una carga de trabajo usa varios servicios, como las API y los almacenes de datos, que funcionan conjuntamente para ofrecer funcionalidades específicas de un extremo a otro.
Cómo utilizar esta guía
Esta guía incluye dos artículos: este artículo de introducción y otro artículo sobre consideraciones compartidas en todos los tipos de carga de trabajo.
Nota:
Si aún no está comprometido con la contenedorización, consulte Elección de un servicio de proceso de Azure para obtener información sobre otras opciones de proceso que puede usar para hospedar la carga de trabajo.
En este artículo de introducción se describen los servicios del contenedor de Azure que están en el ámbito de esta guía y cómo se comparan los modelos del servicio en los términos de compensaciones entre la capacidad de configuración y las soluciones obstinadas, como los enfoques administrados por el cliente frente a los administrados por Microsoft. Después de identificar los servicios candidatos en función de las preferencias del modelo de servicio, el siguiente paso es evaluar las opciones con respecto a los requisitos de carga de trabajo revisando el artículo sobre consideraciones compartidas para las redes, la seguridad, las operaciones y la confiabilidad.
En esta guía se tienen en cuenta las concesiones que podría necesitar realizar, en función de los requisitos técnicos, el tamaño y la complejidad de la carga de trabajo y la experiencia del equipo de la carga de trabajo.
Servicios de Azure Container Service en el ámbito de esta guía
Esta guía se centra en un subconjunto de los servicios de contenedor que Azure ofrece actualmente. Este subconjunto proporciona un conjunto de características maduro para aplicaciones web y API, redes, observabilidad, herramientas de desarrollo y operaciones. Estos servicios de contenedor se comparan:
Azure Container Apps es una plataforma de aplicaciones basada en Kubernetes totalmente administrada que le ayuda a implementar las aplicaciones HTTP y no HTTP desde el código o contenedores sin necesidad de orquestar la infraestructura. Para más información, consulta la documentación de Azure Container Apps.
Azure Kubernetes Service (AKS) es un servicio administrado de Kubernetes para ejecutar aplicaciones contenedorizadas. Con AKS, puede aprovechar los complementos y extensiones administrados para obtener funcionalidades adicionales, a la vez que conserva el nivel más amplio de la capacidad de configuración. Para obtener más información, vea la documentación de AKS.
Web App for Containers es una característica de Azure App Service, un servicio totalmente administrado para hospedar aplicaciones web basadas en HTTP con mantenimiento de infraestructura integrado, aplicación de revisiones de seguridad, escalado y herramientas de diagnóstico. Para obtener más información, consulte la Documentación de App Service.
Para obtener una lista completa de todos los servicios de contenedor de Azure, consulte la página de categoría de productos de servicios de contenedor.
Consideraciones sobre el modelo de servicio
El modelo de servicio proporciona la información más amplia sobre el nivel de flexibilidad y control que proporciona cualquier servicio de Azure Container Service, a cambio de su simplicidad general y facilidad de uso.
Para obtener una introducción general a la terminología y los conceptos sobre los modelos de servicio, incluida la infraestructura como servicio (IaaS) y la plataforma como servicio (PaaS), consulte Responsabilidad compartida en la nube.
Comparación de los modelos de servicio de soluciones de contenedor de Azure
AKS
Como híbrido de IaaS y PaaS, AKS prioriza el control sobre la simplicidad. Aunque AKS simplifica la administración de la infraestructura básica subyacente, esta plataforma basada en máquinas virtuales sigue expuesta a las aplicaciones y requiere límites de protección y procesos adecuados, como la aplicación de revisiones, para garantizar la seguridad y la continuidad empresarial. La infraestructura de proceso es compatible con recursos adicionales de Azure que se hospedan directamente en la suscripción, como equilibradores de carga de Azure.
AKS también proporciona acceso al servidor de API de Kubernetes, que le permite personalizar la orquestación de contenedores e implementar proyectos desde Cloud Native Computing Foundation (CNCF). Por lo tanto, hay una curva de aprendizaje significativa para los equipos de carga de trabajo que son nuevos en Kubernetes. Si no está familiarizado con las soluciones en contenedores, esta curva de aprendizaje podría ser un elemento disuasorio. Las siguientes soluciones PaaS ofrecen una barrera inferior de entrada. Puede pasar a Kubernetes cuando los requisitos dicten ese movimiento.
Azure Container Apps
Container Apps, una oferta de PaaS, equilibra control y simplicidad. Ofrece opciones de proceso sin servidor y dedicadas, lo que abstrae la necesidad de aplicar revisiones al sistema operativo o crear límites de protección en torno a las aplicaciones, en relación con el sistema operativo. Container Apps también abstrae completamente la API de orquestación de contenedores y proporciona un subconjunto de su funcionalidad clave a través de las API de Azure con las que es posible que el equipo ya esté familiarizado. Además, la entrada de nivel 7, la división del tráfico, las pruebas A/B y la administración del ciclo de vida de las aplicaciones están totalmente disponibles de fábrica.
Web App for Containers
Web App for Containers también es una oferta de PaaS, pero proporciona más simplicidad y menos control que Container Apps. Abstrae la orquestación de contenedores, pero sigue proporcionando el escalado adecuado, la administración del ciclo de vida de las aplicaciones, la división del tráfico, la integración de red y la observabilidad.
Consideraciones sobre el modelo de hospedaje
Puede usar recursos de Azure, como clústeres de AKS, para hospedar varias cargas de trabajo. Si lo hace, puede ayudarle a simplificar las operaciones y, por tanto, reducir el costo total. Si elige esta ruta, estas son algunas consideraciones importantes:
AKS se usa normalmente para hospedar varias cargas de trabajo o componentes de carga de trabajo dispares. Puede aislar estas cargas de trabajo y componentes mediante la funcionalidad nativa de Kubernetes, como espacios de nombres, controles de acceso y controles de red, para cumplir los requisitos de seguridad.
También puede usar AKS en escenarios de carga de trabajo única si necesita la funcionalidad adicional que proporciona la API de Kubernetes y el equipo de cargas de trabajo tiene suficiente experiencia para operar un clúster de Kubernetes. Los equipos con menos experiencia de Kubernetes pueden seguir funcionando correctamente sus propios clústeres aprovechando los complementos y características administrados de Azure, como la actualización automática del clúster, para reducir la sobrecarga operativa.
Container Apps debe usarse para hospedar una sola carga de trabajo con un límite de seguridad compartido. Container Apps tiene un único límite lógico de nivel superior denominado entorno de Container Apps, que también actúa como límite de seguridad mejorado. No hay mecanismos para el control de acceso pormenorizado adicional. Por ejemplo, la comunicación dentro del entorno no está restringida y todas las aplicaciones comparten una única área de trabajo de Log Analytics.
Si la carga de trabajo tiene varios componentes y varios límites de seguridad, implemente varios entornos de Container Apps o considere AKS en su lugar.
Web App for Containers es una característica de App Service. App Service agrupa las aplicaciones en un límite de facturación denominado plan de App Service. Dado que puede definir el ámbito del control de acceso basado en rol (RBAC) en el nivel de aplicación, puede resultar tentador hospedar varias cargas de trabajo en un solo plan. Sin embargo, se recomienda hospedar una sola carga de trabajo por plan para evitar el problema de vecino ruidoso. Todas las aplicaciones de un único plan de App Service comparten el mismo proceso, memoria y almacenamiento asignados.
Cuando considere el aislamiento de hardware, debe tener en cuenta que los planes de App Service se ejecutan normalmente en la infraestructura que se comparte con otros clientes de Azure. Puede elegir niveles Dedicados para máquinas virtuales dedicadas o niveles Aislados para máquinas virtuales dedicadas en una red virtual dedicada.
En general, todos los servicios de contenedor de Azure pueden hospedar varias aplicaciones que tienen varios componentes. Sin embargo, Container Apps y Web App for Containers son más adecuados para un componente de carga de trabajo único o varios componentes de carga de trabajo altamente relacionados que comparten un ciclo de vida similar, donde un único equipo posee y ejecuta las aplicaciones.
Si necesita hospedar componentes o cargas de trabajo de aplicación dispares, potencialmente no relacionados en un host, considere la posibilidad de usar AKS.
Las concesiones entre el control y la facilidad de uso
AKS proporciona la mayor capacidad de configuración, pero esta capacidad de configuración conlleva un aumento de la sobrecarga operativa, en comparación con los demás servicios. Aunque Container Apps y Web App for Containers son servicios PaaS que tienen niveles similares de características administradas por Microsoft, Web App for Containers enfatiza la simplicidad para satisfacer a su público objetivo: los clientes de PaaS de Azure existentes, que se encuentran con una interfaz familiar.
Regla general
Por lo general, los servicios que ofrecen mayor simplicidad tienden a adaptarse a los clientes que prefieren centrarse más en el desarrollo de características y menos en la infraestructura. Los servicios que ofrecen más control tienden a adaptarse a los clientes que necesitan más capacidad de configuración y tienen las aptitudes, los recursos y la justificación comercial necesarios para administrar su propia infraestructura.
Consideraciones compartidas en todas las cargas de trabajo
Aunque un equipo de carga de trabajo podría preferir un modelo de servicio determinado, es posible que ese modelo no cumpla los requisitos de la organización en su conjunto. Por ejemplo, los desarrolladores podrían preferir menos sobrecarga operativa, pero los equipos de seguridad podrían considerar este tipo de sobrecarga necesaria para cumplir los requisitos de cumplimiento. Los equipos deben colaborar para hacer las concesiones adecuadas.
Tenga en cuenta que las consideraciones compartidas son amplias. Solo un subconjunto puede ser relevante para usted, dependiendo no solo del tipo de carga de trabajo, sino también de su rol dentro de la organización.
En la tabla siguiente se proporciona información general de alto nivel sobre las consideraciones, incluidas las comparaciones de características de servicio. Revise las consideraciones de cada categoría y compárelas con los requisitos de la carga de trabajo.
Category | Información general |
---|---|
Diferencias y consideraciones para las redes de Azure Stack Hub | Las redes en los servicios de contenedor de Azure varían en función de su preferencia por la simplicidad frente a la capacidad de configuración. AKS es altamente configurable, lo que proporciona un amplio control sobre el flujo de red, pero requiere un esfuerzo más operativo. Container Apps ofrece características de red administradas por Azure. Es un punto intermedio entre AKS y Web App for Containers, que se adapta a los clientes que están familiarizados con App Service. Fundamentalmente, las decisiones de diseño de red pueden tener consecuencias a largo plazo debido a los desafíos de cambiarlas sin volver a implementar cargas de trabajo. Varios factores, como el planeamiento de direcciones IP, las responsabilidades de equilibrio de carga, los métodos de detección de servicios y las funcionalidades de red privada, difieren en estos servicios. Debe revisar cuidadosamente cómo los servicios cumplen requisitos específicos de red. |
Consideraciones de seguridad | Container Apps, AKS y Web App for Containers proporcionan integración con ofertas de seguridad de Azure clave, como Azure Key Vault e identidades administradas. AKS ofrece características adicionales, como la protección contra amenazas en tiempo de ejecución y las directivas de red. Aunque puede parecer que los servicios PaaS, como Container Apps, ofrecen menos características de seguridad, esto se debe en parte a que Azure administra más componentes de infraestructura subyacentes y no se expone a los clientes, lo que reduce el riesgo. |
Consideraciones acerca de las operaciones | Aunque AKS ofrece la mayor personalización, requiere una entrada operativa mayor. Por el contrario, las soluciones PaaS, como Container Apps y Web App for Containers, permiten a Azure encargarse de tareas como actualizaciones del sistema operativo. La escalabilidad y la flexibilidad de la SKU de hardware son cruciales. AKS proporciona opciones de hardware flexibles, mientras que Container Apps y Web App for Containers proporcionan configuraciones establecidas. La escalabilidad de aplicaciones en AKS es responsabilidad exclusiva del cliente. Container Apps y Web App for Containers ofrecen enfoques más simplificados. |
Consideraciones sobre la confiabilidad | Las configuraciones de sondeo de estado de Web App for Containers y Container Apps son más simplificadas que las de AKS, dado que usan la conocida API de Azure Resource Manager. AKS requiere el uso de la API de Kubernetes. También requiere que asuma la responsabilidad adicional de administrar la escalabilidad y disponibilidad del grupo de nodos de Kubernetes para programar correctamente las instancias de aplicación. Estos requisitos generan una sobrecarga adicional para AKS. Además, los Acuerdos de Nivel de Servicio para Container Apps y Web App for Containers son más sencillos que los de AKS, para los que el plano de control y los grupos de nodos tienen sus propios SLA y deben estar compuestos en consecuencia. Todos los servicios ofrecen redundancia de zona en centros de datos que la ofrecen. |
Después de revisar las consideraciones anteriores, es posible que todavía no haya encontrado la solución perfecta. Eso es perfectamente normal.
Evaluación de compromisos
Elegir un servicio en la nube no es sencillo. Dada la complejidad de la informática en la nube, la colaboración entre muchos equipos y las restricciones de recursos que implican personas, presupuestos y tiempo, cada solución tiene inconvenientes.
Tenga en cuenta que, para cualquier carga de trabajo determinada, algunos requisitos pueden ser más críticos que otros. Por ejemplo, un equipo de aplicaciones podría preferir una solución PaaS, como Container Apps, pero elegir AKS porque su equipo de seguridad requiere controles de red denegados de forma predeterminada entre componentes de carga de trabajo colocados, que es una característica solo de AKS que usa directivas de red de Kubernetes.
Por último, tenga en cuenta que las consideraciones compartidas anteriores incluyen los requisitos más comunes, pero no son completas. Es responsabilidad del equipo de carga de trabajo investigar todos los requisitos en relación con la característica del servicio preferido establecido antes de confirmar una decisión.
Conclusión
En esta guía se describen las consideraciones más comunes a las que se enfrenta al elegir un servicio de Azure Container Service. Está diseñada para guiar a los equipos de cargas de trabajo a tomar decisiones fundamentadas. El proceso comienza por elegir un modelo de servicio en la nube, lo que implica determinar el nivel de control deseado. El control se obtiene a costa de la simplicidad. Es decir, se debe encontrar el equilibrio adecuado entre una infraestructura autoadministrada y otra administrada por Microsoft.
Muchos equipos de cargas de trabajo pueden elegir un servicio de Azure Container Service únicamente en función del modelo de servicio preferido: PaaS frente a IaaS. Otros equipos deben investigar más para determinar cómo las características específicas del servicio abordan los requisitos de la carga de trabajo o de la organización.
Todos los equipos de carga de trabajo deben usar esta guía además de incorporar la diligencia requerida para evitar decisiones difíciles de revertir. Sin embargo, tenga en cuenta que la decisión no se confirma hasta que los desarrolladores prueben el servicio y decidan en función de la experiencia en lugar de la teoría.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
Creadores de entidad de seguridad:
- Andre Dewes | Ingeniero sénior de clientes
- Marcos Martinez | Ingeniero sénior de servicio
- Julie Ng | Ingeniera sénior
Otros colaboradores:
- Mick Alberts | Escritor técnico
- Martin Gjoshevski | Ingeniero sénior de clientes
- Don High | Ingeniero principal de clientes
- Nelly Kiboi | Ingeniera de servicios
- Xuhong Liu | Ingeniero sénior de servicio
- Faisal Mustafa | Ingeniero sénior de clientes
- Walter Myers | Director principal de ingeniería de clientes
- Sonalika Roy | Ingeniera sénior de clientes
- Paolo Salvatori | Ingeniero principal de clientes
- Victor Santana | Ingeniero principal de clientes
Paso siguiente
Obtenga más información sobre las consideraciones de arquitectura compartidas para los servicios mencionados en este artículo.