Compartir a través de


Azure Functions en Azure Container Apps: visión general

Azure Functions en Azure Container Apps ofrece un entorno de hospedaje sin servidor totalmente administrado que reúne las funcionalidades controladas por eventos de Azure Functions con las sólidas características de Container Apps. Esta integración incluye capacidades avanzadas como la orquestación basada en Kubernetes, el autoescalado integrado impulsado por KEDA (autoescalado basado en eventos impulsado por Kubernetes), la integración de Dapr (Application Runtime distribuidas), la compatibilidad con cargas de trabajo de GPU, la compatibilidad con sidecar, la conectividad de red virtual (VNet) y la administración de revisiones.

Este enfoque resulta útil cuando se desea que las funciones se ejecuten junto con otras aplicaciones en contenedores, como microservicios, API o sitios web. Además, la contenedorización de sus aplicaciones de funciones puede resultar útil cuando necesite dependencias personalizadas o desee aprovechar la escalabilidad a cero para ahorrar costes. Si está ejecutando tareas que requieren un gran poder de cálculo, como la inferencia de IA, Container Apps también admite el alojamiento basado en GPU a través de la oferta de GPU sin servidor y perfiles de carga de trabajo dedicados.

Como característica integrada en Azure Container Apps, puede implementar imágenes de Azure Functions directamente en Azure Container Apps mediante el proveedor de recursos Microsoft.App estableciendo kind=functionapp al llamar a az containerapp create. Las aplicaciones creadas de esta manera tienen acceso a todas las características de Azure Container Apps. Si se implementa mediante Azure portal, puede habilitar la opción Optimize para la aplicación Functions durante la instalación. Para obtener más información, consulte la sección implementación y configuración para obtener más detalles.

Ventajas clave

El modelo de hospedaje de Container Apps se basa en la flexibilidad de las cargas de trabajo en contenedor y la naturaleza controlada por eventos de Azure Functions. Ofrece las siguientes ventajas clave:

La tabla siguiente le ayuda a comparar las características de Functions en Container Apps con el plan de consumo Flex.

Característica Aplicaciones de contenedor Plan de Consumo flexible
Escala a cero ✅ Sí (a través de KEDA) ✅ Sí
Escalado horizontal máximo 1000 (valor predeterminado 10, configurable) 1,000
Instancias always-on ✅ Sí (a través de minReplicas) ✅ Sí (a través de instancias siempre preparadas)
Integración con red virtual ✅ Sí ✅ Sí
Compatibilidad con contenedores personalizados ✅ Sí (traiga su propia imagen) ❌ Limitado (sin traer su propio contenedor)
Compatibilidad con GPU ✅ Sí (a través del perfil de carga de trabajo dedicado de GPU sin servidor) ❌ No
Características integradas Soporte para las características de Container Apps. Por ejemplo, KEDA, Dapr, varias revisiones, mTLS, sidecars, control de entrada y mucho más Funciones exclusivas
Modelo de facturación Precios de Container Apps: plan de consumo (vCPU, memoria, solicitudes) y plan dedicado (basado en perfiles de carga de trabajo) Tiempo de ejecución + instancias siempre preparadas

Para obtener una comparación completa de Functions on Container Apps con el plan de consumo flexible y todos los demás tipos de plan y hospedaje, consulte Opciones de escalado y hospedaje de Functions.

Escenarios

Azure Functions en Container Apps son ideales para una amplia gama de casos de uso, especialmente cuando se necesita la ejecución controlada por eventos, la flexibilidad del contenedor o la integración segura con otros servicios:

  • API de línea de negocio: Empaquetar bibliotecas personalizadas, paquetes y API con Azure Functions para aplicaciones de línea de negocio.
  • Migración y modernización: migración de aplicaciones heredadas o monolíticas locales a microservicios nativos de la nube en contenedores.
  • Procesamiento orientado a eventos: Maneja eventos de Event Grid, Service Bus, Event Hubs y otros orígenes de eventos con la facilidad del modelo de programación de Functions.
  • Cargas de trabajo de IA y GPU: procesamiento sin servidor de cargas de trabajo de vídeos, imágenes, transcripciones o cualquier otra tarea que requiera un procesamiento intensivo y recursos informáticos de GPU. Para obtener más información, consulte Uso de GPU sin servidor en Azure Container Apps.
  • Microservices: Integrar Azure Functions con otros servicios hospedados de Container Apps.
  • Contenedores personalizados: Empaquetar funciones con entornos de ejecución personalizados o sidecars.
  • Aplicaciones privadas: seguridad de Functions solo internas mediante VNet y entrada interna.
  • .NET Aspire: La integración de .NET Aspire con Azure Functions permite desarrollar, depurar y organizar un proyecto de Azure Functions .NET como parte del host de la aplicación de .NET Aspire. Obtenga más información sobre Azure Functions con .NET Aspire
  • General Functions: Ejecutar cualquier escenario estándar compatible Azure Functions (por ejemplo, temporizadores, procesamiento de archivos, desencadenadores de base de datos).

Implementación y configuración

Para implementar Azure Functions en Azure Container Apps, empaqueta la aplicación de Functions como una imagen de contenedor personalizada e implementarla como cualquier otra aplicación contenedora con una diferencia clave. Debe establecer la propiedad kind=functionapp al usar las plantillas de CLI de Azure o ARM/Bicep. Para obtener pasos detallados y ejemplos, consulte la documentación oficial de introducción.

az containerapp create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name $CONTAINER_APP_NAME \
  --environment $ENVIRONMENT_NAME \
  --image mcr.microsoft.com/k8se/quickstart-functions:latest \
  --ingress external \
  --target-port 80 \
  --kind functionapp \
  --query properties.outputs.fqdn

Este comando devuelve la URL de la aplicación Functions. Copie esta URL y péguela en un navegador web.

En el portal de Azure, seleccione la opción Optimize para Azure Functions durante la creación de aplicaciones de contenedor para simplificar la configuración.

Screenshot del portal de Azure al crear una aplicación contenedora preconfigurada para Azure Functions.

Se admiten todos los métodos de implementación estándar, incluidos:

Para obtener pasos detallados y ejemplos, consulte la documentación oficial de introducción.

Precios y facturación

Azure Functions en Azure Container Apps siguen el mismo modelo de precios que Azure Container Apps. La facturación se basa en el tipo de plan que seleccione para su entorno, que puede ser Consumo o Dedicado.

  • Plan de consumo: esta opción de proceso sin servidor solo le factura los recursos que usan las aplicaciones mientras se ejecutan.
  • Plan dedicado: esta opción proporciona recursos de computación personalizados, cobrando por las instancias asignadas a cada perfil de carga de trabajo.

La elección del plan determina cómo se realizan los cálculos de facturación. Diferentes aplicaciones dentro de un entorno pueden usar planes diferentes.

Puntos clave que se deben tener en cuenta:

  • Sin cargos adicionales por usar el modelo de programación de Azure Functions dentro de Container Apps.
  • Durable Functions y otras funcionalidades avanzadas se admiten y se facturan bajo el mismo modelo de precios de Container Apps. Para obtener ejemplos y mecanismos de facturación detallados, consulte la documentación de Billing en Azure Container Apps.

Escalado controlado por eventos

Azure Functions en Container Apps admiten todos los entornos de ejecución principales language disponibles en Azure Functions, incluidos C#, JavaScript y TypeScript (Node.js), Python, Java, PowerShell y Contenedores personalizados (traiga su propia imagen).

Azure Functions que se ejecutan en Azure Container Apps configuran automáticamente las reglas de escalado en función del origen del evento, lo que elimina la necesidad de definiciones manuales de reglas de escalado KEDA. Por eso el botón "Agregar reglas de escalado" en el portal de Azure está deshabilitado para Functions en Container Apps. Sin embargo, aún puede definir recuentos mínimos y máximos de réplicas para establecer límites de escalado y mantener el control sobre la asignación de recursos.

La plataforma traduce automáticamente los parámetros del desencadenador de Functions (de la configuración host.json o de los atributos del desencadenador) a los parámetros de escalador KEDA adecuados. Para obtener una referencia detallada sobre cómo las configuraciones de desencadenadores de funciones se asignan a los parámetros de escalado de KEDA, consulte mapas de escalado de KEDA de Azure Functions.

Todos los desencadenadores y enlaces de Azure Functions estándar se admiten en las aplicaciones de contenedores con las siguientes excepciones:

Las identidades administradas son compatibles con los desencadenadores y enlaces que lo permiten. También están disponibles para:

Para desencadenadores no admitidos, use recuentos fijos de réplicas (es decir, establezca minReplicas > 0) en Azure Functions en Azure Container Apps. Para más información, consulte la guía para desarrolladores de Functions.

Escalado y rendimiento

Azure Functions en container Apps se escalan automáticamente en función de eventos que usan KEDA, sin necesidad de configurar las reglas de escalado manualmente. Todavía puede establecer réplicas mínimas o máximas para controlar el comportamiento de escalado.

  • Escalado controlado por eventos: escala automáticamente en función de desencadenadores como Event Grid, Service Bus o HTTP.
  • Escalado a cero: las aplicaciones inactivas se reducen horizontalmente a cero para ahorrar costes.
  • Control de inicio en frío: Obtenga información sobre la reducción del tiempo de inicio en frío en Azure Container Apps.
  • Simultaneidad: cada instancia puede procesar varios eventos en paralelo.
  • Escalado alto: escale horizontalmente a 1000 instancias por aplicación (el valor predeterminado es 10).
  • Compatibilidad con GPU: ejecute cargas de trabajo de proceso intensivo, como la inferencia de IA mediante nodos respaldados por GPU.

Esto hace que Container Apps sea ideal para cargas de trabajo de estado constante y de ráfaga. Para obtener más información, consulte Configurar las reglas de escalado en Azure Container Apps

Redes y seguridad

Azure Functions en Container Apps se benefician de las sólidas características de red y seguridad para implementaciones seguras y escalables.

  • Integración de red virtual: acceda a recursos privados de forma segura a través de puntos de conexión internos y bases de datos privadas.
  • Entidad administrada: Autenticación con servicios de Azure mediante identidades asignadas por el sistema o el usuario, sin necesidad de secretos ni cadenas de conexión.
  • Compatibilidad con Dapr: habilite el pub/sub, la administración de estado y la invocación de servicio segura mediante sidecars de Dapr. Para obtener más información, consulte Api de microservicios con tecnología de Dapr.
  • Ingress y TLS: Exponga puntos de conexión HTTP seguros con TLS/mTLS, dominios personalizados o manténgalos internos.
  • Aislamiento del Entorno: Las funciones comparten los límites del entorno de Container Apps para una comunicación segura y delimitada.

Estas funcionalidades hacen que las funciones hospedadas en Container Apps sean ideales para aplicaciones sin servidor seguras y de nivel empresarial.

Supervisión y registro

Azure Functions en Container Apps se integran perfectamente con las herramientas de observabilidad de Azure para el seguimiento del rendimiento y el diagnóstico de problemas:

  • Application Insights: Proporciona telemetría para solicitudes, dependencias, excepciones y trazas personalizadas. Para obtener más información, consulte Monitor Azure Functions.
  • Análisis de registros: captura eventos relacionados con el ciclo de vida y el escalado de contenedores (por ejemplo, entradas FunctionsScalerInfo). Para obtener más información, vea Registro de aplicaciones en Azure Container Apps.
  • Registro personalizado: admite marcos estándar como ILogger y registro en consola para obtener resultados estructurados.
  • Supervisión centralizada: el entorno de Container Apps ofrece paneles de control y alertas unificados para todas las aplicaciones.

Variables de entorno

Azure Functions que se ejecutan en Container Apps tienen acceso a variables de entorno proporcionadas por el sistema. La CONTAINER_NAME variable de entorno se establece automáticamente en el nombre de réplica de la aplicación de funciones. Use esta variable para registrar, correlacionar y depurar en escenarios de varias réplicas.

Para obtener una lista completa de las variables de entorno proporcionadas por el sistema, consulte Environment variables en Azure Container Apps.

Consideraciones

Tenga en cuenta estas otras consideraciones al usar Azure Functions en Azure Container Apps:

  • Requisito de entrada para el escalado automático: para habilitar el escalado automático basado en eventos, se debe habilitar la entrada, ya sea públicamente o dentro del entorno interno de Container Apps.
  • Cuenta de almacenamiento obligatoria: todas las Functions Apps implementadas en Container Apps deben estar vinculadas a una cuenta de almacenamiento. Esto es necesario para administrar los desencadenadores, los registros y el estado. Consulte la guía sobre cuentas de almacenamiento para conocer las prácticas recomendadas.
  • Almacenamiento multirrevisión: al implementar con varias revisiones activas, asigne una cuenta de almacenamiento dedicada a cada revisión. El uso de una cuenta de almacenamiento dedicada ayuda a evitar conflictos y garantiza un aislamiento adecuado. Por otra parte, si no necesita revisiones simultáneas, considere la posibilidad de utilizar el modo de revisión única predeterminado para simplificar la administración.
  • Desencadenadores de varias revisiones: si usa el modo de revisión múltiple con un desencadenador basado en pull, use un origen de eventos diferente para cada revisión para evitar conflictos relacionados con los consumidores competidores. Las funciones que usan desencadenadores de Azure Queue Storage, de Azure Event Hubs, de Azure Service Bus o de Durable Functions son ejemplos de desencadenadores de extracción.
  • Latencia de arranque en frío: cuando sus Container Apps se reduce a cero durante los períodos de inactividad, la primera solicitud tras la inactividad experimenta un arranque en frío. Obtenga más información sobre cómo reducir los tiempos de arranque en frío.
  • Integración de Application Insights: para una supervisión y un diagnóstico sólidos, vincule su aplicación Functions a Application Insights. Para obtener más información, consulte Integración de App Insights con Functions.
  • Proxies de Functions: no compatibles. En el caso de escenarios de puerta de enlace de API, integre con Azure API Management en su lugar.
  • Ranuras de implementación: las ranuras de preparación y producción no están disponibles. Utilice estrategias de implementación azul-verde para lanzamientos sin tiempo de inactividad.
  • Claves de acceso de Functions: no se admite el uso del portal para generar claves de acceso de Functions. Considere la posibilidad de usar Azure Key Vault para almacenar claves. También puede utilizar las siguientes opciones para proteger los puntos de conexión HTTP en producción:
  • Límites de cuota y recursos: los entornos de Container Apps tienen límites predeterminados de memoria, CPU y número de instancias por región. Para obtener más información, consulte los límites del entorno y las cuotas predeterminadas. Si su carga de trabajo requiere más recursos, puede solicitar un aumento de la cuota.
  • Configuración de reglas de escalado: el botón "Agregar reglas de escalado" en el portal de Azure está deshabilitado para Azure Functions hospedado en Container Apps porque las reglas de escalado se configuran automáticamente en función del origen del evento. Las definiciones manuales de reglas KEDA no son necesarias en esta configuración.

Enviar comentarios

Envíe un problema o una solicitud de característica al repositorio Azure Container Apps GitHub.

Próximos pasos / Recursos adicionales

Para seguir aprendiendo y compilando con Azure Functions en Container Apps, explore los siguientes recursos: