Compartir vía


Visión general de Azure Functions en Azure Container Apps

Azure Functions en Azure Container Apps ofrece un entorno de alojamiento sin servidor totalmente administrado que combina las capacidades basadas en 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, es posible 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 realiza la implementación a través del Azure Portal, puede habilitar la opción Optimizar para la aplicación Functions durante la configuració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 es ideal para una amplia gama de casos de uso, especialmente cuando se necesita una ejecución basada en eventos, flexibilidad de contenedores o una integración segura con otros servicios:

  • API de línea de negocio: empaquete 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 basado en eventos: administre eventos de Event Grid, Service Bus, Event Hubs y otras fuentes 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.
  • Microservicios: integre Azure Functions con otros servicios alojados en 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 le permite desarrollar, depurar y orquestar un proyecto .NET de Azure Functions como parte del host de aplicaciones .NET Aspire. Más información sobre Azure Functions con .NET Aspire
  • Funciones generales: ejecutar cualquier escenario estándar compatible con Azure Functions (por ejemplo, temporizadores, procesamiento de archivos, desencadenadores de bases de datos).

Implementación y configuración

Para implementar Azure Functions en Azure Container Apps, empaquete la aplicación Functions como una imagen de contenedor personalizada e impleméntela como cualquier otra aplicación de contenedor, con una diferencia clave. Debe establecer la propiedad kind=functionapp cuando utilice la CLI de Azure o las plantillas 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 Azure Portal, seleccione la opción Optimizar para Azure Functions durante la creación de Container Apps para agilizar la configuración.

Recorte de pantalla de Azure Portal 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 sigue 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 utilizar el modelo de programación Azure Functions dentro de Container Apps.
  • Durable Functions y otros patrones avanzados se admiten y se facturan en el mismo modelo de precios de Container Apps. Para obtener ejemplos y mecanismos de facturación detallados, consulte la documentación sobre facturación en Azure Container Apps .

Escalado controlado por eventos

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

Las 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 definir manualmente las reglas de escalado de KEDA. Por eso, el botón "Agregar reglas de escalado" de Azure Portal está deshabilitado para Azure 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.

Todas las activaciones y vínculos estándar de Azure Functions son compatibles con Container Apps, con las siguientes excepciones:

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

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

Escalado y rendimiento

Azure Functions en Container Apps se escala 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 cómo reducir el 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 más información, consulte Establecimiento de reglas de escalado en Azure Container Apps.

Redes y seguridad

Azure Functions en Container Apps se beneficia de las sólidas características de redes y seguridad de Container Apps 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.
  • Identidad administrada: autentíquese con servicios de Azure mediante identidades asignadas por el sistema o el usuario, sin secretos ni cadenas de conexión necesarias.
  • 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 integra 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 más información, consulte Supervisión de Azure Functions.
  • Análisis de registros: captura eventos relacionados con el ciclo de vida y el escalado de contenedores (por ejemplo, entradas FunctionsScalerInfo). Para más información, consulte 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.

Consideraciones

Tenga en cuenta estas otras consideraciones al utilizar 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 utilizan Azure Queue Storage, Azure Event Hub, Azure Service Bus o los desencadenadores de Durable Functions son ejemplos de desencadenadores basados en 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. Para escenarios de puerta de enlace API, intégrese con Azure API Management.
  • Ranuras de implementación: las ranuras de ensayo y producción no están disponibles. Utilice estrategias de implementación azul-verde para lanzamientos sin tiempo de inactividad.
  • Claves de acceso a Functions: no se admite el uso del portal para generar claves de acceso a funciones. Considere utilizar 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 manual de reglas de escala: el botón "Agregar reglas de escala" del Azure Portal está deshabilitado para Azure Functions alojadas en Container Apps, ya que las reglas de escala se configuran automáticamente en función del origen del evento. En esta configuración no es necesario definir manualmente las reglas KEDA.

Enviar comentarios

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

Próximos pasos / Recursos adicionales

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