Implementación de una aplicación spring AI en Azure Container Apps
En esta unidad, aprenderá a implementar su aplicación Spring de generación aumentada mediante recuperación (RAG) en Azure Container Apps. Azure Container Apps es una plataforma sin servidor que permite mantener menos infraestructura y ahorrar costos al ejecutar aplicaciones en contenedores. En esta unidad se describen los conceptos necesarios de Container Apps para que pueda incluir en contenedores la aplicación, configurar Azure Container Apps y garantizar una implementación segura y escalable.
Entornos
Un entorno de aplicaciones de contenedor es un límite seguro alrededor de una o varias aplicaciones y trabajos de contenedor. El entorno de ejecución de Container Apps administra cada entorno controlando las actualizaciones del sistema operativo, las operaciones de escalado, los procedimientos de conmutación por error y el equilibrio de recursos. Para poder implementar una aplicación de contenedor, debe crear un entorno de Azure Container Apps.
Hay dos tipos de entornos de aplicaciones de contenedor:
Perfil de carga de trabajo: ejecute aplicaciones sin servidor compatibles con la escala a cero y pague solo por los recursos que usan las aplicaciones con el perfil de consumo. También puede ejecutar aplicaciones con hardware personalizado y una mayor previsibilidad de costos mediante perfiles de carga de trabajo dedicados.
Solo consumo: ejecute aplicaciones sin servidor compatibles con la escala a cero y pague solo por los recursos que usan las aplicaciones.
Réplicas
Las réplicas son instancias de la aplicación contenedora que se ejecutan simultáneamente para controlar las solicitudes entrantes o las tareas en segundo plano. Al escalar el número de réplicas, puede asegurarse de que la aplicación pueda controlar cargas variables de forma eficaz. Azure Container Apps admite el escalado manual y automático de réplicas en función de métricas predefinidas o reglas personalizadas.
Revisiones
Las revisiones son instantáneas inmutables de la configuración y el código de la aplicación contenedora en un momento dado específico. Cada implementación crea una nueva revisión, lo que le permite revertir a versiones anteriores si es necesario. Las revisiones permiten actualizaciones seguras y control de versiones para las aplicaciones en contenedor. Puede configurar la división de tráfico entre revisiones para implementar gradualmente nuevas características o realizar pruebas A/B.
Tipos de implementación
Hay tres tipos de implementación principales para Azure Container Apps:
Implementación desde una imagen existente: puede implementar una aplicación contenedora que use una imagen existente en un registro de contenedor público o privado.
Implementación desde código fuente: puede implementar la aplicación directamente desde el repositorio de código fuente local. El
az container upcomando compila la imagen de contenedor, la inserta en un registro e implementa la aplicación contenedora. También crea el registro en Azure Container Registry si no proporciona uno. Este comando puede compilar la imagen con o sin un Dockerfile. Si compila sin usar un Dockerfile, se admiten los siguientes lenguajes:- .NET
- Node.js.
- PHP
- Pitón
Implementación desde un repositorio de GitHub: cuando se usa el
az containerapp upcomando para implementar desde un repositorio de GitHub, genera un flujo de trabajo de Acciones de GitHub que compila la imagen de contenedor, la inserta en un registro e implementa la aplicación contenedora. Se requiere un Dockerfile para compilar la imagen.
Opciones de entrada
Azure Container Apps admite las siguientes opciones de entrada para controlar cómo se accede a la aplicación:
Entrada externa: esta opción expone la aplicación contenedora a Internet, lo que permite a los clientes externos acceder a ella. Puede configurar dominios personalizados y certificados TLS/SSL para el acceso seguro.
Entrada interna: esta opción restringe el acceso a dentro de la red virtual, lo que hace que la aplicación contenedora solo sea accesible para otros recursos dentro de la misma red. Esta opción es útil para los servicios internos que no necesitan exponerse a Internet.
Sin entrada: si no necesita ningún acceso externo o interno, puede deshabilitar la entrada. Esta opción es útil para trabajos o servicios en segundo plano que no requieren acceso directo.
Ampliación
Azure Container Apps proporciona opciones de escalado flexibles para asegurarse de que la aplicación pueda controlar cargas variables de forma eficaz. En la lista siguiente se describen las opciones de escalado principales:
Escalado manual: establezca manualmente el número de réplicas de la aplicación de contenedor. Esta opción le ofrece control total sobre el proceso de escalado, lo que le permite ajustar el número de instancias en función de sus necesidades específicas.
Escalado automático: Azure Container Apps admite el escalado automático en función de varias métricas. Puede configurar reglas de escalado automático para ajustar automáticamente el número de réplicas en función del uso de CPU, el uso de memoria o las métricas personalizadas, incluidas
JVMlas métricas de la máquina virtual Java, mediante el escalado automático controlado por eventos (KEDA) de Kubernetes. Esta funcionalidad garantiza que la aplicación pueda controlar el aumento del tráfico sin intervención manual.Escalado a cero: en el caso de las aplicaciones sin servidor, configure la aplicación de contenedor para reducir verticalmente instancias cuando no haya tráfico. Esto ayuda a ahorrar costos mediante el uso de recursos solo cuando sea necesario.
Para configurar el escalado, puede usar la CLI de Azure, Azure Portal o plantillas de ARM. En el ejemplo siguiente se muestra cómo configurar el escalado automático mediante la CLI de Azure:
az containerapp update \
--resource-group spring-ai-demo \
--name spring-ai-app \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name http-rule \
--scale-rule-type http \
--scale-rule-http-concurrency 15
En este ejemplo, la aplicación contenedora está configurada para escalar entre 1 y 10 réplicas en función de la simultaneidad HTTP. La simultaneidad HTTP se establece en 50, lo que significa que cada réplica controla hasta 50 solicitudes HTTP simultáneas antes de crear más instancias.
Resumen de la unidad
En esta unidad, ha obtenido información sobre los conceptos clave de Azure Container Apps, incluidos entornos, tipos de implementación, opciones de entrada y mecanismos de escalado. En el ejercicio siguiente, colocará estos conceptos en práctica mediante la implementación de la aplicación Spring RAG mediante Azure Container Apps.
