Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede usar Azure Container Apps para ejecutar microservicios y aplicaciones en contenedor en una plataforma sin servidor. En este artículo se describen varias características de Container Apps que son útiles para las soluciones multiinquilino. También proporciona recursos que pueden ayudarle durante la fase de planificación.
Modelos de aislamiento
Al trabajar con un sistema multiinquilino que usa Container Apps, debe determinar el nivel de aislamiento necesario. Container Apps admite diferentes modelos de multitenencia.
Puede implementar multiinquilinato de confianza mediante un entorno compartido. Por ejemplo, este modelo podría ser adecuado cuando todos los inquilinos están dentro de su organización.
Puede implementar multiinquilinato hostil mediante la implementación de entornos independientes para cada inquilino. Por ejemplo, este modelo podría ser adecuado cuando no confía en el código que ejecutan los inquilinos.
En la tabla siguiente se resumen las diferencias entre los principales modelos de aislamiento de inquilinato para Container Apps. Los modelos se describen más adelante en este artículo.
| Consideración | Un entorno para cada inquilino | Aplicaciones de contenedor específicas para inquilinos | Aplicaciones de contenedor compartidas |
|---|---|---|---|
| Aislamiento de datos | Alto | Bajo | Bajo |
| Aislamiento de rendimiento | Alto | Medio, sin aislamiento de red | Bajo |
| Complejidad de la implementación | Media | Bajo a medio | Bajo |
| Complejidad operativa | Media | Bajo | Bajo |
| Costo de recursos | Alto | Bajo | Bajo |
| Escenario de ejemplo | Ejecuta cargas de trabajo multiinquilino hostiles en entornos aislados con fines de seguridad y cumplimiento. | Optimiza el costo, los recursos de red y las operaciones para aplicaciones multiinquilino de confianza. | Implementa una solución multiinquilino en el nivel de lógica de negocios. |
Aplicaciones de contenedor compartidas
Considere la posibilidad de implementar aplicaciones de contenedor compartidas en un único entorno de Container Apps que usen todos los inquilinos.
Este enfoque suele ser rentable y requiere la menor sobrecarga operativa porque hay menos recursos para administrar.
Sin embargo, si desea usar este modelo de aislamiento, el código de la aplicación debe ser compatible con el multiinquilinato. Este modelo de aislamiento no garantiza el aislamiento en el nivel de red, proceso, supervisión o datos. El código de la aplicación debe controlar el aislamiento de los inquilinos. Este modelo no es adecuado para cargas de trabajo multiarrendatario hostiles en las que no se confía en el código que se está ejecutando.
Este modelo está potencialmente sujeto a problemas ruidosos de vecinos, lo que significa que la carga de trabajo de un inquilino podría afectar al rendimiento de la carga de trabajo de otro inquilino. Si necesita proporcionar un rendimiento dedicado para mitigar este problema, es posible que el modelo de aplicaciones de contenedor compartidos no sea adecuado.
Nota
El Patrón de stamps de implementación es útil cuando los inquilinos están en diferentes modelos de precios. Por ejemplo, los inquilinos se pueden asignar a entornos compartidos o dedicados de Container Apps en función de su plan de tarifa. Esta estrategia de implementación permite ir más allá del límite de Container Apps para una sola suscripción para cada región y escalar linealmente a medida que crece el número de inquilinos.
Aplicaciones de contenedor específicas para inquilinos
Otro enfoque que puede considerar es aislar a sus clientes mediante el despliegue de aplicaciones de contenedor específicas para cada cliente en un entorno compartido.
Este modelo de aislamiento garantiza la separación lógica entre inquilinos a la vez que proporciona varias ventajas:
Rentabilidad: Al compartir un entorno de Container Apps, una red virtual y otros recursos asociados, como un área de trabajo de Log Analytics, normalmente puede reducir la complejidad general del costo y la administración de cada inquilino.
Separación de actualizaciones e implementaciones: Los archivos binarios de aplicación de cada inquilino se pueden implementar y actualizar independientemente de los archivos binarios de otras aplicaciones de contenedor en el mismo entorno. Este enfoque puede ser útil si necesita actualizar diferentes inquilinos a versiones específicas del código en momentos diferentes.
Aislamiento de recursos: Cada aplicación contenedora dentro de su entorno se asigna a sus propios recursos de CPU y memoria. Si un inquilino específico requiere más recursos, puede asignar más CPU y memoria a la aplicación de contenedor específica de ese inquilino. Tenga en cuenta que hay límites de en el total de asignaciones de CPU y memoria en las aplicaciones contenedoras.
Sin embargo, este enfoque no proporciona aislamiento de hardware ni de red entre inquilinos. Todas las aplicaciones de contenedor de un único entorno comparten la misma red virtual. Debe poder confiar en que las cargas de trabajo implementadas en las aplicaciones no usan los recursos compartidos.
Container Apps tiene compatibilidad integrada con Dapr, que utiliza un diseño modular para proporcionar funcionalidad en forma de componentes . En Container Apps, los componentes de Dapr son recursos de nivel de entorno. Cuando se comparte un único entorno entre varios inquilinos, asegúrese de que los componentes de Dapr estén correctamente asignados a la aplicación de contenedor específica del inquilino para garantizar el aislamiento y evitar la fuga de datos.
Nota
No utilice las revisiones a para crear diferentes versiones de la aplicación para diferentes clientes. Las revisiones no proporcionan aislamiento de recursos. Están diseñados para escenarios de implementación en los que se deben ejecutar varias versiones de una aplicación durante una implementación de actualizaciones. Este enfoque incluye estrategias como implementaciones azul-verde y pruebas A/B.
Un entorno para cada inquilino
Considere la posibilidad de implementar un entorno de Container Apps para cada uno de los inquilinos. Un entorno de aplicaciones de contenedor es el límite que delimita y aísla un grupo de aplicaciones de contenedor. Un entorno proporciona aislamiento de cómputo y red en el plano de datos. Cada entorno se implementa en su propia red virtual. Todas las aplicaciones del entorno comparten esta red virtual. Cada entorno tiene su propia configuración de Dapr y de supervisión.
Este enfoque proporciona el nivel más seguro de aislamiento de datos y rendimiento porque los datos y el tráfico de cada inquilino están aislados en un entorno específico. Este modelo no requiere que sus aplicaciones sean compatibles con multiinquilino. Al usar este enfoque, tiene un control más granular sobre cómo asignar recursos a las aplicaciones de contenedor dentro del entorno. Puede determinar las asignaciones en función de los requisitos del inquilino. Por ejemplo, algunos inquilinos pueden requerir más recursos de CPU y memoria que otros. Puede proporcionar más recursos a las aplicaciones de los inquilinos mientras se beneficia del aislamiento que proporcionan los entornos específicos para cada inquilino.
Sin embargo, hay límites bajos en el número de entornos que puede implementar dentro de una suscripción para cada región. En algunos escenarios, puede aumentar estas cuotas creando una solicitud de soporte de Azure.
Asegúrese de que conoce el crecimiento esperado en el número de inquilinos antes de implementar este modelo de aislamiento. Este enfoque suele incurrir en un mayor costo total de propiedad (TCO) y mayores niveles de implementación y complejidad operativa debido a los recursos adicionales que necesita para implementar y administrar.
Características de Container Apps que admiten multiinquilinato
Las siguientes características de Container Apps admiten multiinquilino.
Nombres de dominio personalizados
Las aplicaciones de contenedor le permiten usar el sistema de nombres de dominio (DNS) comodín y agregar sus propios certificados de seguridad de la capa de transporte (TLS) comodín. Cuando usas subdominios específicos para cada cliente, tanto los certificados comodín de DNS como los de TLS te permiten escalar tu solución fácilmente a un gran número de clientes sin necesidad de reconfigurar manualmente cada nuevo cliente.
En Container Apps, se administran certificados en el nivel de entorno. Para poder enlazar un dominio personalizado a la entrada también deberá estar habilitada para la aplicación contenedora.
Solicitud de autenticación y autorización
Container Apps puede validar tokens de autenticación en nombre de la aplicación. Si una solicitud no contiene un token, el token no es válido o la solicitud no está autorizada, puede configurar Container Apps para bloquear la solicitud o redirigir la solicitud al proveedor de identidades para que el usuario pueda iniciar sesión.
Si los inquilinos usan Microsoft Entra ID como proveedor de identidades, puede configurar Container Apps para que use la punto de conexión de /common para validar los tokens de usuario. Este enfoque garantiza que los tokens de los usuarios se validen y acepten, independientemente del tenant de Microsoft Entra del usuario.
También puede integrar Container Apps con Microsoft Entra External ID para la autenticación de usuarios a través de proveedores de identidades de asociados.
Para obtener más información, consulte los siguientes recursos:
- Autorización de Container Apps
- Habilitar la autenticación y la autorización en Aplicaciones de Contenedores con Microsoft Entra ID
Nota
Las características de autenticación y autorización de Container Apps son similares a las características de Azure App Service. Sin embargo, hay algunas diferencias. Para obtener más información, consulte Consideraciones para usar la autenticación integrada.
Identidades administradas
Puede usar identidades administradas de Microsoft Entra ID para permitir que la aplicación de contenedor acceda a otros recursos autenticados por microsoft Entra ID. Cuando se usan identidades administradas, la aplicación contenedora no necesita administrar credenciales para la comunicación entre servicios. Puede conceder permisos específicos a la identidad de su aplicación contenedora para el sistema Azure de control de acceso basado en roles (Azure RBAC).
Al usar identidades administradas, tenga en cuenta la elección del modelo de aislamiento. Por ejemplo, supongamos que comparte las aplicaciones de contenedor entre todos los inquilinos e implementa bases de datos específicas del inquilino. Debe asegurarse de que la aplicación de un inquilino no pueda acceder a la base de datos de otro inquilino.
Para más información, consulte Identidades administradas en Container Apps.
Perfiles de carga de trabajo en computación dedicada
Container Apps proporciona un plan dedicado que permite reservar recursos dedicados para un inquilino. Este plan es útil para limitar los recursos disponibles para un inquilino, que se pueden compartir entre varias aplicaciones de contenedor. También ayuda a satisfacer requisitos de inquilino específicos, como mayores ratios de memoria a CPU o disponibilidad de GPU.
Para obtener más información, consulte Perfiles de carga de trabajo en Container Apps.
Enrutamiento basado en reglas
El enrutamiento basado en reglas permite dirigir el tráfico entrante a aplicaciones de contenedor específicas o revisiones de aplicaciones de contenedor. Las solicitudes se pueden enrutar en función de la ruta de la solicitud HTTP y puede modificar la ruta en la dirección URL. Esta función es útil para los sistemas multicliente que necesitan asignar solicitudes a aplicaciones de contenedores específicas del cliente o revisiones que utilizan la ruta en la solicitud. Esta funcionalidad se usa normalmente con el modelo de aislamiento de aplicaciones de contenedor específicas del inquilino.
Para más información, consulte Uso del enrutamiento basado en reglas con Container Apps.
Colaboradores
Microsoft mantiene este artículo. Los colaboradores siguientes escribieron este artículo.
Autores principales:
- Daniel Larsen | Ingeniero principal de clientes, FastTrack para Azure
- Will Velida | Ingeniero de clientes 2, FastTrack para Azure
Otros colaboradores:
- John Downs | Ingeniero principal de software, Patrones y prácticas de Azure
- Chad Kittel | Ingeniero principal de software, Patrones y prácticas de Azure
- Xuhong Liu | Ingeniero de servicio sénior, FastTrack para Azure
- Aarthi Murugan | Director de programas sénior, Innovación de aplicaciones de estrategia tecnológica de CS
- Kendall Roden | Senior Program Manager, Container Apps
- Paolo Salvatori | Ingeniero principal de clientes, FastTrack para Azure
- Daniel Scott-Raynsford | Arquitecto de soluciones asociadas, datos e inteligencia artificial
- Arsen Vladimirskiy | Ingeniero Principal de Clientes, FastTrack para Azure
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.