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 | Sí | No | Sí | Sí | No |
Integración del portal de Functions | Sí | No | Sí | Sí | No |
Escalado controlado por eventos | Sí5 | Sí (reglas de escalado) | Sí | No | No |
Escala máxima (instancias) | 10001 | 10001 | 1002 | 10-303 | Varía en función del clúster |
Instancias de escalado a cero | Sí | Sí | 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 | Sí | No | No | No |
Ranuras de implementación | No | No | Sí | Sí | No |
Registros de streaming | Sí | Sí | Sí | Sí | No |
Acceso a la consola | No disponible actualmente4 | Sí | Sí (con Kudu) | Sí (con Kudu) | Sí (en pods mediante kubctl ) |
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 | Sí | Sí | Sí | No |
Nombres de dominio personalizados | No disponible actualmente4 | Sí | Sí | Sí | No |
Certificados de clave privada | No disponible actualmente4 | Sí | Sí | Sí | No |
Redes virtuales | Sí | Sí | Sí | Sí | Sí |
Zonas de disponibilidad | Sí | Sí | Sí | Sí | Sí |
Diagnóstico | No disponible actualmente4 | Sí | Sí | Sí | No |
Hardware dedicado | Sí (perfiles de carga de trabajo) | Sí (perfiles de carga de trabajo) | No | Sí | Sí |
GPU dedicadas | Sí (perfiles de carga de trabajo) | Sí (perfiles de carga de trabajo) | No | No | Sí |
Recuento de memoria/CPU configurable | Sí | Sí | No | No | Sí |
Opción "Concesión gratuita" | Sí | Sí | 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. |
- 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.
- 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.
- 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.
- La paridad de características es un objetivo de hospedaje integrado en Azure Container Apps.
- 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.
- 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.
- 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.
- 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) |