Azure Container Apps en Azure Arc

Azure Container Apps on Azure Arc-enabled Kubernetes permite ejecutar cargas de trabajo Container Apps en infraestructuras Kubernetes soportadas fuera de los centros de datos Azure, incluyendo AKS on Azure Local. Gestionas las aplicaciones como recursos de Azure mientras los contenedores de aplicaciones y el plano de datos de Aplicaciones de Contenedores se ejecutan en tu clúster Kubernetes.

Ejecutar Aplicaciones de contenedores en Azure Arc puede ayudarte:

  • Ejecuta aplicaciones cerca de usuarios, dispositivos o fuentes de datos locales para reducir la latencia.
  • Mantén el procesamiento de solicitudes en un lugar que respalde los requisitos de residencia de datos, soberanía o cumplimiento de tu organización.
  • Proporcionar a los equipos de aplicaciones un modelo de aplicaciones Contenedores mientras los equipos de infraestructura mantienen el control del clúster Kubernetes, la redes, el almacenamiento, la capacidad y el ciclo de vida.
  • Gestiona aplicaciones entre ubicaciones compatibles a través de Azure Resource Manager, CLI de Azure y el portal de Azure.
  • Utiliza las funcionalidades compatibles de Container Apps, como revisiones, entrada, escalado automático, Dapr, tareas, métricas, transmisión de registros en tiempo real, dominios personalizados y acceso a la consola de la aplicación.

Container Apps en Azure Arc no es un servicio de cómputo alojado. Tu organización proporciona, protege, escala, aplica parches y opera el clúster de Kubernetes subyacente y sus recursos de proceso, red y almacenamiento.

Para preparar un clúster y desplegar tu primera aplicación, completa Configurar un clúster Kubernetes habilitado para Azure Arc para ejecutar Azure Container Apps, y luego completar Crear una aplicación contenedor en Azure Arc.

Mientras configuras tu clúster, creas o usas estos recursos:

  • Clúster conectado: La representación de Azure Resource Manager de tu clúster Kubernetes. Los agentes de Azure Arc que se ejecutan en el clúster mantienen la conexión con Azure. Para más información, consulte ¿Qué es Kubernetes habilitado para Azure Arc?.

  • Extensión de clúster de Container Apps: Software instalado en el clúster que proporciona los controladores de Container Apps, la entrada, el escalado, Dapr, el registro y otros componentes del plano de datos. La extensión es un recurso hijo del clúster conectado.

  • Ubicación personalizada: Un recurso de ubicación de Azure que asocia el clúster conectado, la extensión Contenedores de Apps y el espacio de nombres Kubernetes donde se crean los recursos de Contenedores.

  • Entorno de aplicaciones en contenedores: El límite de la aplicación en el que los desarrolladores implementan aplicaciones y trabajos en contenedores. El entorno conectado hace referencia a la ubicación personalizada y contiene la configuración compartida por sus aplicaciones.

El orden de dependencias es: clúster conectado > extensión de clúster > ubicación personalizada > entorno conectado > aplicación de contenedor o trabajo. Si un recurso anterior es poco saludable, los recursos posteriores en la cadena pueden no abastecerse.

Limitaciones

Las siguientes limitaciones se aplican a Azure Container Apps on Azure Arc-enabled Kubernetes.

Limitación Detalles
Regiones de Azure compatibles Australia Este, Asia Oriental, Este de EE. UU., Norte Central de EE. UU., Sudeste Asiático, Suecia Central, Reino Unido Sur, Europa Occidental, Oeste de EE. UU.
Requisito de redes del clúster Debe admitir el tipo de servicio LoadBalancer
Requisitos del sistema operativo del nodo Solo Linux.
Característica: identidades administradas No disponible
Característica: extracción de imágenes de ACR con identidad administrada No disponible (depende de las identidades administradas)
Funcionalidad: Azure Files El controlador SMB (>= v1.18.0) debe instalarse antes de usar el almacenamiento SMB de Azure Files
Registros Log Analytics se debe configurar con la extensión de clúster; no por cada aplicación

Se admiten las siguientes características:

  • Etiquetas
  • Métricas
  • Autenticación sencilla
  • Transmisión de registro
  • Resiliencia
  • Dominios personalizados
  • Trabajos de Container Apps
  • Administración de revisiones
  • Consola del contenedor de aplicaciones

Importante

Antes de instalar la extensión en AKS en Azure Local, configura HAProxy u otro balanceador de carga compatible y configura CoreDNS personalizado. Para configurar CoreDNS para AKS en Azure Local, ejecuta az containerapp arc setup-core-dns --distro AksAzureLocal. Para las opciones de comando, véase az containerapp arc.

Recursos creados por la extensión Container Apps

Cuando la extensión Container Apps se instala en el clúster de Kubernetes habilitado para Azure Arc, se crean varios recursos en el espacio de nombres de versión especificado. Estos pods permiten que el clúster sea una extensión del proveedor de recursos Microsoft.App para admitir la administración y el funcionamiento de las aplicaciones.

La extensión puede instalar los componentes KEDA utilizados para la escalada basada en eventos y HTTP. Solo una instalación KEDA compatible puede ejecutarse en el clúster. Antes de instalarla, corre kubectl get deployment -A | grep -i keda a comprobar si hay una instalación existente. Si KEDA ya existe, deténgase y confirme la configuración de coexistencia admitida antes de continuar. No elimines la instalación existente del KEDA ni apliques configuraciones de extensiones no documentadas porque otras cargas de trabajo podrían depender de ello.

La siguiente tabla describe el papel de cada componente de extensión creado para ti:

Pod Descripción Número de instancias Unidad Central de Procesamiento (CPU) Memoria Tipo
<extensionName>-k8se-activator Se usa como parte de la canalización de escalado 2 100 millicpu 500 MB ReplicaSet
<extensionName>-k8se-billing Generación de registros de facturación 3 100 millicpu 100 MB ReplicaSet
<extensionName>-k8se-containerapp-controller Pod de operador principal que crea recursos en el clúster y mantiene el estado de los componentes. 2 100 millicpu 1 GB ReplicaSet
<extensionName>-k8se-envoy Capa de proxy de front-end para todas las solicitudes del plano de datos. Enruta el tráfico entrante a las aplicaciones correctas. 3 1 núcleo 1536 MB ReplicaSet
<extensionName>-k8se-envoy-controller Operador, que genera la configuración de Envoy 2 200 millicpu 500 MB ReplicaSet
<extensionName>-k8se-event-processor Un destino de enrutamiento alternativo para ayudar con las aplicaciones que se han escalado a cero mientras el sistema obtiene la primera instancia disponible. 2 100 millicpu 500 MB ReplicaSet
<extensionName>-k8se-http-scaler Supervisa el volumen de solicitudes entrantes para proporcionar información de escalado a KEDA. 1 100 millicpu 500 MB ReplicaSet
<extensionName>-k8se-keda-cosmosdb-scaler Escalador de Cosmos DB de KEDA 1 10 m 128 MB ReplicaSet
<extensionName>-k8se-keda-metrics-apiserver Servidor de métricas de KEDA 1 1 núcleo 1000 MB ReplicaSet
<extensionName>-k8se-keda-operator Escala las cargas de trabajo dentro y fuera de 0/1 a N instancias 1 100 millicpu 500 MB ReplicaSet
<extensionName>-k8se-log-processor Recopila registros de las aplicaciones y otros componentes y los envía a Log Analytics. 2 200 millicpu 500 MB DaemonSet
<extensionName>-k8se-mdm Agente de métricas y registros 2 500 millicpu 500 MB ReplicaSet
dapr-metrics Pod de métricas de Dapr 1 100 millicpu 500 MB ReplicaSet
dapr-operator Administra las actualizaciones de componentes y los puntos de conexión de servicio para Dapr 1 100 millicpu 500 MB ReplicaSet
dapr-placement-server Se usa solo para actores: crea tablas de asignación que asignan instancias de actor a los pods 1 100 millicpu 500 MB StatefulSet
dapr-sentry Administra mTLS entre los servicios y actúa como entidad de certificación 2 800 millicpu 200 MB ReplicaSet

Preguntas más frecuentes sobre Azure Container Apps en Azure Arc

¿Qué características de Container Apps se admiten?

Para el estado documentado del soporte y los requisitos previos de cada funcionalidad, véase Limitaciones. El portal de Azure también desactiva controles que no están disponibles en un entorno conectado. El soporte puede depender de la versión instalada de la extensión, así que verifica las notas de lanzamiento antes de usar una función añadida recientemente.

¿Se admiten identidades administradas?

No. No puedes asignar una identidad gestionada a una aplicación o trabajo contenedor en un entorno conectado. La autenticación mediante identidad administrada para la extracción de imágenes de Azure Container Registry tampoco está disponible.

Si una aplicación debe autenticarse en un recurso de Azure, utilice una aplicación y una entidad de servicio de Microsoft Entra:

  1. Crea o identifica un registro de aplicación.
  2. Concede a su entidad de servicio únicamente el rol de Azure requerido por la aplicación.
  3. Almacena la credencial como un secreto de Container Apps.
  4. Haz referencia al secreto mediante variables de entorno en la aplicación.
  5. Establece un proceso de rotación de credenciales.

Para obtener más información, consulte Objetos de aplicación y entidad de servicio en Microsoft Entra ID. Evita incrustar credenciales en un repositorio de imágenes o fuentes.

¿Existen límites de escalado?

Las aplicaciones en contenedores y los trabajos solo pueden escalar dentro de los límites de la CPU, la memoria y los recursos especializados asignables disponibles en el clúster de Kubernetes subyacente. Establecer un número máximo de réplicas no reserva capacidad.

Cuando el clúster carece de capacidad, Kubernetes deja nuevas réplicas pendientes y la aplicación no alcanza el recuento solicitado. Compruebe si se da esta condición con:

kubectl get pods -n <APPS_NAMESPACE>
kubectl describe pod <PENDING_POD_NAME> -n <APPS_NAMESPACE>
kubectl get events -n <APPS_NAMESPACE> --sort-by=.lastTimestamp

Planifica la capacidad del clúster para los componentes de extensión, réplicas de aplicaciones de pico, cargas de trabajo del sistema Kubernetes, actualizaciones progresivas y fallos de nodos.

¿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 entorno de aplicación con un área de trabajo de Log Analytics y enviar 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 deshabilita el reenvío de la aplicación al área de trabajo de Log Analytics. Es posible que deshabilitar el procesador de registro afecte 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.

¿Cómo puedo instalar SMB Driver?

Puede instalar el controlador SMB mediante el siguiente comando de Helm. Para obtener métodos de instalación adicionales, consulte Instalación del controlador en un clúster de Kubernetes.

helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.18.0

¿Se puede instalar la extensión en los nodos de Windows?

No, la extensión no se puede instalar en los nodos de Windows. La extensión admite la instalación en nodos de Linuxsolo.

¿Puedo desplegar la extensión Contenedores Apps en un clúster basado en Arm64?

No. La extensión no soporta clústeres basados en Arm64.