App Service, Functions y Logic Apps en Azure Arc (versión preliminar)

Puede ejecutar App Service, Functions y Logic Apps en un clúster de Kubernetes habilitado para Azure Arc. El clúster de Kubernetes puede ser local o estar hospedado en una nube de terceros. Este enfoque permite a los desarrolladores de aplicaciones aprovechar las características de App Service. Al mismo tiempo, permite a los administradores de TI mantener el cumplimiento corporativo hospedando las aplicaciones de App Service en la infraestructura interna. También permite que otros operadores de TI protejan sus inversiones anteriores en otros proveedores de nube mediante la ejecución de App Service en clústeres de Kubernetes existentes.

Nota

Para obtener información sobre cómo configurar el clúster de Kubernetes para App Service, Functions y Logic Apps, consulte Creación de un entorno de Kubernetes de App Service (versión preliminar).

En la mayoría de los casos, los desarrolladores de aplicaciones no necesitan saber nada más que cómo implementar en la región correcta de Azure que representa el entorno de Kubernetes implementado. Para los operadores que proporcionan el entorno y mantienen la infraestructura subyacente de Kubernetes, debe tener en cuenta los siguientes recursos de Azure:

Limitaciones de la vista preliminar pública

Las siguientes limitaciones de la versión preliminar pública se aplican los entornos de Kubernetes de App Service. Esta lista de limitaciones se actualiza a medida que los cambios y las características están disponibles.

Limitación Detalles
Regiones de Azure compatibles Este de EE. UU., Oeste de Europa
Requisito de redes del clúster Debe admitir el tipo de servicio LoadBalancer
Requisito de almacenamiento del clúster Debe tener la clase de almacenamiento asociada al clúster disponible para que la extensión la use a fin de admitir la implementación y la compilación de aplicaciones basadas en código cuando corresponda.
Característica: redes No disponible (se basa en las redes del clúster)
Característica: identidades administradas No disponible
Característica: referencias de Key Vault No disponible (depende de las identidades administradas)
Característica: extracción de imágenes de ACR con identidad administrada No disponible (depende de las identidades administradas)
Característica: edición en el portal para Functions y Logic Apps No disponible
Característica: lista de funciones o claves del portal No disponible si no se puede acceder al clúster públicamente
Característica: publicación FTP No disponible
Registros Log Analytics se debe configurar con la extensión de clúster; no por cada sitio.

Pods creados por la extensión de App Service

Cuando la extensión de App Service se instala en el clúster de Kubernetes habilitado para Azure Arc, varios pods se crean en el espacio de nombres de versión que se especificó. Estos pods permiten que el clúster de Kubernetes sea una extensión del proveedor de recursos Microsoft.Web en Azure y ayudan en la administración y el funcionamiento de las aplicaciones. Opcionalmente, puede optar por que la extensión instale KEDA para el escalado controlado por eventos.

En la tabla siguiente se describe el rol de cada pod que se crea de manera predeterminada:

Pod Descripción
<extensionName>-k8se-app-controller Pod de operador principal que crea recursos en el clúster y mantiene el estado de los componentes.
<extensionName>-k8se-envoy Una capa de proxy de front-end para todas las solicitudes del plano de datos. Enruta el tráfico entrante a las aplicaciones correctas.
<extensionName>-k8se-activator Un destino de enrutamiento alternativo para ayudar con las aplicaciones que se han escalado a cero mientras el sistema obtiene la primera instancia disponible.
<extensionName>-k8se-build-service Admite operaciones de implementación y ofrece la característica Herramientas avanzadas.
<extensionName>-k8se-http-scaler Supervisa el volumen de solicitudes entrantes para proporcionar información de escalado a KEDA.
<extensionName>-k8se-img-cacher Extrae imágenes de marcador de posición y de aplicación en una caché local en el nodo.
<extensionName>-k8se-log-processor Recopila registros de las aplicaciones y otros componentes y los envía a Log Analytics.
placeholder-azure-functions-* Se usa para acelerar los arranques en frío para Azure Functions.

Entorno de Kubernetes de App Service

El recurso de entorno de Kubernetes de App Service es necesario antes de que se puedan crear aplicaciones. Habilita la configuración común de las aplicaciones de la ubicación personalizada, como el sufijo DNS predeterminado.

Solo se puede crear un recurso de entorno de Kubernetes en una ubicación personalizada. En la mayoría de los casos, un desarrollador que crea e implementa aplicaciones no necesita conocer directamente el recurso. Se puede deducir directamente del identificador de ubicación personalizada proporcionado. Sin embargo, al definir plantillas de Azure Resource Manager, cualquier recurso de plan debe hacer referencia directamente al identificador de recurso del entorno. Los valores de ubicación personalizada del plan y el entorno especificado deben coincidir.

Preguntas frecuentes sobre App Service, Functions y Logic Apps en Azure Arc (versión preliminar)

¿Cuánto cuesta?

App Service en Azure Arc es gratis durante la versión preliminar pública.

¿Se admiten aplicaciones windows y Linux?

Solo se admiten aplicaciones basadas en Linux, tanto de código como de contenedores personalizados. No se admiten las aplicaciones de Windows.

¿Qué pilas de aplicaciones integradas se admiten?

Se admiten todas las pilas de Linux integradas.

¿Se admiten todos los tipos de implementación de aplicaciones?

No se admite la implementación de FTP. Actualmente tampoco se admite az webapp up. Se admiten otros métodos de implementación, como Git, ZIP, CI/CD, Visual Studio y Visual Studio Code.

¿Qué características de App Service se admiten?

Durante el período de versión preliminar, se están validando determinadas características de App Service. Cuando se admitan, se activarán sus opciones en la barra de navegación izquierda de Azure Portal. Las características que aún no se admiten permanecen atenuadas.

¿Se admiten todas las características de redes?

No. No se admiten características de redes, como las conexiones híbridas o la integración de Virtual Network. La compatibilidad con las restricciones de acceso se agregó en abril de 2022. Las redes se deben controlar directamente en las reglas de red del propio clúster de Kubernetes.

¿Se admiten identidades administradas?

No. No se pueden asignar identidades administradas a las aplicaciones cuando se ejecutan en Azure Arc. Si la aplicación necesita una identidad para trabajar con otro recurso de Azure, considere la posibilidad de usar una entidad de servicio de aplicación en su lugar.

¿Existen límites de escalado?

Todas las aplicaciones implementadas con Azure App Service en Kubernetes con Azure Arc se pueden escalar dentro de los límites del clúster de Kubernetes subyacente. Si el clúster de Kubernetes subyacente se queda sin recursos de proceso disponibles (CPU y memoria principalmente), las aplicaciones solo podrán escalarse al número de instancias de la aplicación que Kubernetes pueda programar con el recurso disponible.

¿Qué registros se recopilan?

Los registros de los componentes del sistema y las aplicaciones se escriben en la salida estándar. Ambos tipos de registro se pueden recopilar para su análisis mediante las herramientas estándar de Kubernetes. También puede configurar la extensión de clúster de App Service con un área de trabajo de Log Analytics y se enviarán todos los registros a esa área de trabajo.

De manera predeterminada, los registros de los componentes del sistema se envían al equipo de Azure. No se envían los registros de aplicaciones. Para evitar que estos registros se transfieran, establezca logProcessor.enabled=false como un valor de configuración de extensión. Este valor de configuración también deshabilitará el reenvío de la aplicación al área de trabajo de Log Analytics. Deshabilitar el procesador de registro puede afectar al tiempo necesario para cualquier caso de soporte técnico y se le pedirá que recopile registros de la salida estándar mediante otros medios.

¿Qué debo hacer si veo un error de registro del proveedor?

Al crear un recurso de entorno de Kubernetes, es posible que se muestre el error "No registered resource provider found" (No se encontró ningún proveedor de recursos registrado) para algunas suscripciones. Los detalles del error pueden incluir un conjunto de ubicaciones y de versiones de API que se consideran válidas. Si se produce este error, se debe volver a registrar la suscripción en el proveedor Microsoft.Web, una operación que no afecta a las aplicaciones o a las API existentes. Para volver a registrarse, use la CLI de Azure para ejecutar az provider register --namespace Microsoft.Web --wait. A continuación, vuelva a intentar ejecutar el comando del entorno de Kubernetes.

¿Puedo implementar la extensión de servicios de aplicación en un clúster basado en ARM64?

Los clústeres basados en ARM64 no se admiten en este momento.

¿En qué distribuciones de Kubernetes puedo implementar la extensión?

La extensión se ha validado en AKS, AKS en Azure Stack HCI, Google Kubernetes Engine, Amazon Elastic Kubernetes Service y la API de clúster de Kubernetes.

Notas de la versión de la extensión

Extensión de servicios de aplicación v. 0.9.0 (mayo de 2021)

  • Versión preliminar pública inicial de la extensión de los servicios de aplicación.
  • Compatibilidad con el código y las implementaciones basadas en contenedores de aplicaciones web, de funciones y lógicas.
  • Compatibilidad con el entorno de ejecución de aplicaciones web: .NET 3.1 y 5.0; Node JS 12 y 14; Python 3.6, 3.7, y 3.8; PHP 7.3 y 7.4; Ruby 2.5, 2.5.5, 2.6, y 2.6.2; Java SE 8u232, 8u242, 8u252, 11.05, 11.06 y 11.07; Tomcat 8.5, 8.5.41, 8.5.53, 8.5.57, 9.0, 9.0.20, 9.0.33 y 9.0.37.

Extensión de servicios de aplicación v. 0.10.0 (noviembre de 2021)

  • Se ha eliminado el requisito de la dirección IP estática preasignada necesaria para la asignación al punto final de Envoy
  • Actualización de Keda a v2.4.0
  • Actualización de Envoy a v1.19.0
  • Actualización del entorno de ejecución de Azure Function a v3.3.1
  • Establezca el recuento de réplicas predeterminado de App Controller y Envoy Controller en 2 para agregar más estabilidad.

Si su extensión estaba en la versión estable y la actualización automática de la versión secundaria está configurada en true, la extensión se actualiza automáticamente. Para actualizar manualmente la extensión a la versión más reciente, puede ejecutar el comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.10.0

Extensión de servicios de aplicación v 0.11.0 (diciembre de 2021)

  • Se ha agregado compatibilidad de Application Insights con Java y aplicaciones web .NET
  • Se ha agregado compatibilidad con aplicaciones web .NET 6.0
  • Se ha quitado .NET Core 2.0
  • Problemas resueltos que provocaron errores en las operaciones de intercambio de ranuras
  • Problemas resueltos que experimentaron los clientes durante la creación de aplicaciones web de Ruby

Si su extensión estaba en la versión estable y la actualización automática de la versión secundaria está configurada en true, la extensión se actualiza automáticamente. Para actualizar manualmente la extensión a la versión más reciente, puede ejecutar el comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.0

Extensión de servicios de aplicación v 0.11.1 (diciembre de 2021)

  • Versión secundaria para resolver el problema con la actualización de CRD

Si su extensión estaba en la versión estable y la actualización automática de la versión secundaria está configurada en true, la extensión se actualiza automáticamente. Para actualizar manualmente la extensión a la versión más reciente, puede ejecutar el comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.1

Extensión de servicios de aplicación v. 0.12.0 (enero de 2022)

  • Compatibilidad con el proxy de salida
  • Compatibilidad con compilaciones paralelas en el servicio de compilación
  • Actualización de Envoy a 1.20.1
  • Se ha resuelto el problema con la compatibilidad de Application Insights con aplicaciones .NET

Si su extensión estaba en la versión estable y la actualización automática de la versión secundaria está configurada en true, la extensión se actualiza automáticamente. Para actualizar manualmente la extensión a la versión más reciente, puede ejecutar el comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.0

Extensión de servicios de aplicación v 0.12.1 (marzo de 2022)

  • Problema resuelto con la compatibilidad con el proxy de salida para habilitar el registro en el área de trabajo de Log Analytics

Si su extensión estaba en la versión estable y la actualización automática de la versión secundaria está configurada en true, la extensión se actualiza automáticamente. Para actualizar manualmente la extensión a la versión más reciente, puede ejecutar el comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.1

Extensión de servicios de aplicación v 0.12.2 (marzo de 2022)

  • Actualización para resolver errores de actualización al actualizar v 0.12.0 cuando la longitud del nombre de la extensión es superior a 35 caracteres

Si su extensión estaba en la versión estable y la actualización automática de la versión secundaria está configurada en true, la extensión se actualiza automáticamente. Para actualizar manualmente la extensión a la versión más reciente, puede ejecutar el comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.2

Extensión de servicios de aplicación v 0.13.0 (abril de 2022)

  • Se ha agregado compatibilidad con la integración sin código de Application Insights para aplicaciones de Node JS.
  • Se ha agregado compatibilidad con las restricciones de acceso a través de la CLI.
  • Con el fin de ayudarle a solucionar los problemas, se proporcionan más detalles cuando la extensión no se instala

Si su extensión estaba en la versión estable y la actualización automática de la versión secundaria está configurada en true, la extensión se actualiza automáticamente. Para actualizar manualmente la extensión a la versión más reciente, puede ejecutar el comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.0

Extensión de servicios de aplicación v 0.13.1 (abril de 2022)

  • Actualización para resolver errores de actualización detectados durante la actualización automática de clústeres a la versión 0.13.0

Si su extensión estaba en la versión estable y la actualización automática de la versión secundaria está configurada en true, la extensión se actualiza automáticamente. Para actualizar manualmente la extensión a la versión más reciente, puede ejecutar el comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.1

Extensión de servicios de aplicación v 0.13.5 (diciembre de 2023)

  • Actualización para admitir la versión 1.26 y posteriores de Kubernetes
  • Actualizar Envoy a 1.2.1
  • Actualización de Keda a v2.10.0
  • Actualización de EasyAuth a v1.6.20
  • Actualización de imágenes base para lenguaje admitidos

Si su extensión estaba en la versión estable y la actualización automática de la versión secundaria está configurada en true, la extensión se actualiza automáticamente. Para actualizar manualmente la extensión a la versión más reciente, puede ejecutar el comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.5

Pasos siguientes

Creación de un entorno de Kubernetes de App Service (versión preliminar)