Compartir vía


Compatibilidad con contenedores de Linux en Azure Functions

Al planear y desarrollar las funciones individuales para que se ejecuten en Azure Functions, normalmente se centra en el propio código. Azure Functions facilita la implementación del proyecto de código en una aplicación de funciones en Azure. Al implementar el proyecto de código en una aplicación de funciones que se ejecuta en Linux, el proyecto se ejecuta en un contenedor que se crea automáticamente. Functions administra este contenedor.

Functions también admite implementaciones de aplicaciones de funciones en contenedor. En una implementación en contenedor, creará su propia instancia de aplicación de función en un contenedor de Docker local a partir de una imagen basada en compatibilidad. A continuación, puede implementar esta aplicación de funciones en contenedor en un entorno de hospedaje en Azure. La creación de su propio contenedor de aplicaciones de funciones le permite personalizar o controlar de otro modo el entorno de tiempo de ejecución inmediato del código de función.

Importante

Al crear contenedores propios, tendrá que mantener actualizada la imagen base del contenedor con la imagen base compatible más reciente. Las imágenes base admitidas para Azure Functions son específicas del lenguaje y se encuentran en los repositorios de imágenes base de Azure Functions.

El equipo de Functions se compromete a publicar actualizaciones mensuales de estas imágenes base. Las actualizaciones regulares incluyen las actualizaciones de versión secundaria y las correcciones de seguridad más recientes tanto del entorno de ejecución de Functions como de los lenguajes. Debería actualizar periódicamente el contenedor desde la imagen base más reciente y volver a implementar desde la versión actualizada del contenedor.

Opciones de hospedaje de contenedores

Hay varias opciones para hospedar las aplicaciones de funciones en contenedor en Azure:

Opción de hospedaje Ventajas
Azure Container Apps Azure Functions proporciona compatibilidad integrada para desarrollar, implementar y administrar aplicaciones de funciones contenedorizadas en Azure Container Apps. Esto le permite administrar las aplicaciones con las mismas herramientas y páginas de Functions en Azure Portal. Use Azure Container Apps para hospedar los contenedores de aplicaciones de funciones cuando necesite ejecutar las funciones controladas por eventos en Azure en el mismo entorno que otros microservicios, API, sitios web, flujos de trabajo o programas hospedados en contenedores. El hospedaje de Container Apps permite ejecutar las funciones en un entorno administrado basado en Kubernetes con compatibilidad integrada con la supervisión de código abierto, mTLS, Dapr y KEDA. Es compatible con el escalado a cero y ofrece un modelo de hospedaje sin servidor de pago por uso. También puede solicitar hardware dedicado, incluso GPU, mediante perfiles de carga de trabajo. Opción de hospedaje recomendada para ejecutar aplicaciones de funciones en contenedor en Azure.
Clústeres de Kubernetes habilitados para Azure Arc (versión preliminar) Puede hospedar las aplicaciones de funciones en clústeres de Kubernetes habilitados para Azure Arc como una implementación solo de código o en un contenedor de Linux personalizado. Azure Arc le permite asociar clústeres de Kubernetes para que pueda administrarlos y configurarlos en Azure. El hospedaje de contenedores de Azure Functions en clústeres de Kubernetes habilitados para Azure Arc está actualmente en versión preliminar.
Funciones de Azure Puede hospedar sus aplicaciones contenedorizadas de funciones en Azure Functions ejecutando el contenedor en un Plan Elastic Premium o en un Plan dedicado. El hospedaje del plan Premium proporciona las ventajas del escalado dinámico. Es posible que quiera usar el hospedaje del plan dedicado para aprovechar las ventajas de los recursos del plan de App Service no utilizados existentes.
Kubernetes Dado que el entorno de ejecución de Azure Functions proporciona flexibilidad para hospedar dónde y cómo quiere, puede hospedar y administrar los contenedores de la aplicación de funciones directamente en clústeres de Kubernetes. KEDA (escalado automático controlado por eventos basado en Kubernetes) se empareja sin problemas con el tiempo de ejecución y las herramientas de Azure Functions para proporcionar la escala controlada por eventos en Kubernetes. Tenga en cuenta que la ejecución de sus aplicaciones funcionales en contenedores en Kubernetes, ya sea utilizando KEDA o mediante implementación directa, es un esfuerzo de código abierto que puede utilizar de forma gratuita, con el mejor apoyo posible proporcionado por los colaboradores y la comunidad. Usted es responsable de mantener sus propios contenedores de aplicación de funciones en un clúster, incluso cuando se implementa en Azure Kubernetes Service (AKS).

Comparación de compatibilidad de características

El grado en que se admiten diversas características y comportamientos de Azure Functions al ejecutar la aplicación de funciones en un contenedor depende de la opción de hospedaje del contenedor que elija.

Característica/comportamiento Container Apps (integrado) Container Apps (directo) Plan Premium Plan dedicado Kubernetes
Asistencia de productos No No
Integración del portal de Functions No No
Escalado controlado por eventos 5 Sí (reglas de escalado) No No
Escala máxima (instancias) 10001  10001  1002  10-303  Varía en función del clúster
Instancias de escalado a cero No No KEDA
Límite de tiempo de ejecución Sin límites6 Sin límites6 Sin límites7 Sin límites8 Ninguno
Implementación de Core Tools func azurecontainerapps No N.º No func kubernetes 
Revisiones No No No No
Ranuras de implementación  No No No
Registros de streaming    No
Acceso a la consola  No disponible actualmente4  Sí (con Kudu) Sí (con Kudu) Sí (en pods mediante kubectl)
Mitigación de arranque en frío Réplicas mínimas Reglas de escalado  Instancias siempre listas/precalentadas  N/D N/D
Autenticación de App Service  No disponible actualmente4  No
Nombres de dominio personalizados  No disponible actualmente4  No
Certificados de clave privada  No disponible actualmente4  No
Redes virtuales
Zonas de disponibilidad
Diagnóstico No disponible actualmente4      No
Hardware dedicado Sí (perfiles de carga de trabajo) Sí (perfiles de carga de trabajo) No
GPU dedicadas Sí (perfiles de carga de trabajo) Sí (perfiles de carga de trabajo) No No
Recuento de memoria/CPU configurable No No
Opción "Concesión gratuita" No N.º No
Detalles de precios Facturación de Container Apps Facturación de Container Apps Facturación del plan Premium Facturación de plan dedicado Precios de AKS
Requisitos de nombre de servicio 2-32 caracteres: limitado a letras minúsculas, números y guiones. Debe comenzar con una letra y terminar con un carácter alfanumérico. 2-32 caracteres: limitado a letras minúsculas, números y guiones. Debe comenzar con una letra y terminar con un carácter alfanumérico. Menos de 64 caracteres: limitado a caracteres alfanuméricos y guiones. No puede empezar ni terminar con un guion. Menos de 64 caracteres: limitado a caracteres alfanuméricos y guiones. No puede empezar ni terminar con un guion. Menos de 253 caracteres: limitado a caracteres alfanuméricos y guiones. Debe empezar y terminar con un carácter alfanumérico.
  1. En Container Apps, el valor predeterminado es 10 instancias, pero puede establecer el número máximo de réplicas en 1000. Esta configuración se respeta siempre que haya suficiente cuota de núcleos disponible. Si crea la aplicación de funciones en Azure Portal, tendrá un límite de 300 instancias.
  2. En algunas regiones, las aplicaciones de Linux de un plan Premium se pueden escalar a 100 instancias. Para obtener más información, consulte el artículo Plan Premium.
  3. Para conocer los límites específicos de las distintas opciones del plan de App Service, consulte los límites del plan de App Service.
  4. La paridad de características es un objetivo de hospedaje integrado en Azure Container Apps.
  5. Requiere KEDA; compatible con la mayoría de los desencadenadores. Para saber qué desencadenadores son compatibles con el escalado controlado por eventos, consulte Consideraciones para el hospedaje de Container Apps.
  6. Cuando el número mínimo de réplicas se establece en cero, el tiempo de espera predeterminado depende de los desencadenadores específicos usados en la aplicación.
  7. No se impone una duración máxima del tiempo de espera de ejecución. Sin embargo, el periodo de gracia concedido a la ejecución de una función es de 60 minutos durante la reducción horizontal, y se concede un periodo de gracia de 10 minutos durante las actualizaciones de la plataforma.
  8. Requiere que el plan de App Service se establezca en Always On. Se da un período de gracia de 10 minutos durante las actualizaciones de la plataforma.

Introducción

Use estos vínculos para empezar a trabajar con Azure Functions en contenedores de Linux:

Quiero... Consulte el artículo:
Creación de mis primeras funciones en contenedor Creación de una aplicación de funciones en un contenedor de Linux local
Creación e implementación de funciones en Azure Container Apps Creación de las primeras funciones contenedorizadas en Azure Container Apps
Creación e implementación de funciones en contenedor en Azure Functions Creación de la primera instancia de Azure Functions contenedorizada
Creación e implementación de funciones en Kubernetes habilitado para Azure Arc Creación de la primera instancia de Azure Functions contenedorizada en Azure Arc (versión preliminar)