Compartir vía


Ejecución de una tarea de ACR en un grupo de agentes dedicado

Configure un grupo de VM administradas por Azure (grupo de agentes) para habilitar la ejecución de tareas de Azure Container Registry en un entorno de proceso dedicado. Después de configurar uno o varios grupos en el registro, puede elegir un grupo para ejecutar una tarea en lugar del entorno de proceso predeterminado del servicio.

Un grupo de agentes proporciona:

  • Compatibilidad con redes virtuales: asigne un grupo de agentes a una red virtual de Azure, lo que proporciona acceso a los recursos de la red virtual, como un registro de contenedor, un almacén de claves o almacenamiento.
  • Escale según sea necesario: aumente el número de instancias de un grupo de agentes para tareas de proceso intensivo o escale a cero. La facturación se basa en la asignación de grupos. Para obtener información detallada, vea Precios.
  • Opciones flexibles: elija entre distintos niveles de grupo y opciones de escalado para satisfacer sus necesidades de carga de trabajo de tareas.
  • Administración de Azure: los grupos de tareas se revisan y mantienen en Azure, lo que proporciona una asignación reservada sin necesidad de mantener las VM individuales.

Esta característica está disponible en el nivel de servicio de un registro de contenedor Premium. Para obtener información sobre los límites y niveles de servicio de registro, consulte SKU de Azure Container Registry.

Importante

Esta funcionalidad actualmente está en su versión preliminar y se aplican algunas limitaciones. Las versiones preliminares están a su disposición con la condición de que acepte los términos de uso adicionales. Es posible que algunos de los aspectos de esta característica cambien antes de ofrecer disponibilidad general.

Limitaciones de vista previa

  • Actualmente, los grupos de agentes de tareas admiten nodos de Linux. Los nodos con Windows no se admiten en este momento.
  • Los grupos de agentes de tareas están disponibles en versión preliminar en las siguientes regiones: Oeste de EE. UU. 2, Centro-sur de EE. UU., Este de EE. UU. 2, Este de EE. UU., Centro de EE. UU.,Oeste de Europa, Norte de Europa, Centro de Canadá, Este de Asia, Norte de Suiza, USGov Arizona, USGov Texas y USGov Virginia.
  • Para cada registro, la cuota total predeterminada de vCPU (núcleos) es de 16 para todos los grupos de agentes estándar y de 0 para los grupos de agentes aislados. Abra una solicitud de soporte técnico para la asignación adicional.

Requisitos previos

  • Para usar los pasos de la CLI de Azure de este artículo, se requieren la versión 2.3.1 de la CLI de Azure o una versión posterior. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure. O bien ejecute en Azure Cloud Shell.
  • Si aún no tiene un registro de contenedor, créelo (se requiere un nivel Premium) en una región de la versión preliminar.

Niveles de grupos

Los niveles de grupos de agentes proporcionan los siguientes recursos por instancia en el grupo.

Nivel Tipo CPU Memoria (GB)
S1 estándar 2 3
S2 estándar 4 8
S3 estándar 8 16
I6 aislados 64 216

Crear y administrar un grupo de agentes de tareas

Definición del registro predeterminado (opcional)

A fin de simplificar los comandos de la CLI de Azure siguientes, ejecute el comando az config para establecer el registro predeterminado:

az config set defaults.acr=<registryName>

En los siguientes ejemplos se supone que ha establecido el registro predeterminado. Si no es así, pase un parámetro --registry <registryName> en cada comando az acr.

Creación de un grupo de agentes

Cree un grupo de agentes con el comando az acr agentpool create. En el ejemplo siguiente se crea una instancia de grupo S2 (4 CPU/instancia). De forma predeterminada, el grupo contiene 1 instancia.

az acr agentpool create \
    --registry MyRegistry \
    --name myagentpool \
    --tier S2

Nota

La creación de un grupo de agentes y otras operaciones de administración del grupo tarda varios minutos en completarse.

Escalado de grupos

Escale o reduzca verticalmente el tamaño del grupo con el comando az acr agentpool update. En el ejemplo siguiente, se escala el grupo a 2 instancias. Puede escalar a 0 instancias.

az acr agentpool update \
    --registry MyRegistry \
    --name myagentpool \
    --count 2

Creación de un grupo en una red virtual

Adición de reglas de firewall

Los grupos de agentes de tareas requieren acceso a los siguientes servicios de Azure. Las siguientes reglas de firewall deben agregarse a los grupos de seguridad de red o rutas definidas por el usuario existentes.

Dirección Protocolo Origen Puerto de origen Destination Puerto de destino Used Comentarios
Salida TCP VirtualNetwork Any AzureKeyVault 443 Valor predeterminado
Salida TCP VirtualNetwork Any Storage 443 Valor predeterminado
Salida TCP VirtualNetwork Any EventHub 443 Valor predeterminado
Salida TCP VirtualNetwork Any AzureActiveDirectory 443 Valor predeterminado
Salida TCP VirtualNetwork Any AzureMonitor 443, 12000 Valor predeterminado El puerto 12000 es un puerto único que se usa para los diagnósticos

Nota:

Si las tareas requieren recursos adicionales de la red pública de Internet, agregue las reglas correspondientes. Por ejemplo, se necesitan reglas adicionales para ejecutar una tarea de compilación de Docker que extraiga las imágenes base de Docker Hub o restaure un paquete de NuGet.

Los clientes que basen sus implementaciones con MCR pueden consultar las reglas de firewall de MCR/MAR.

Configuración de red avanzada

Si las reglas estándar de Firewall/NSG (grupo de seguridad de red) se consideran demasiado permisivas y se requiere un control más específico para las conexiones salientes, tenga en cuenta el siguiente enfoque:

  • Habilite los puntos de conexión de servicio en la subred del grupo de agentes. Esto concede al grupo de agentes acceso a sus dependencias de servicio al tiempo que mantiene una posición de red segura.
  • Es importante tener en cuenta que las reglas de firewall o NSG de salida siguen siendo necesarias. Estas reglas facilitan la capacidad de Virtual Network para cambiar la dirección IP de origen de pública a privada, que es un paso adicional más allá de habilitar los puntos de conexión de servicio.

Aquí encontrará más información sobre los puntos de conexión de servicio.

Como mínimo, se requerirán los siguientes puntos de conexión de servicio

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry
  • Microsoft.EventHub
  • Microsoft.KeyVault
  • Microsoft.Storage (o las regiones de almacenamiento correspondientes que tienen en cuenta la replicación geográfica)

Nota:

Actualmente no existe un punto de conexión de servicio para Azure Monitor. Si el tráfico saliente de Azure Monitor no está configurado, el grupo de agentes no podrá emitir registros de diagnóstico, pero puede parecer que sigue funcionando con normalidad. En este caso, ACR no podrá ayudar a solucionar por completo los problemas detectados, por lo que es importante que el administrador de red tenga esto en cuenta al planear la configuración de red.

Además, es importante tener en cuenta que todas las tareas de ACR tienen imágenes previamente almacenadas en caché para algunos de los casos de uso más comunes. Las tareas solo almacenarán en caché una sola versión a la vez, lo que significa que, si se usa la referencia de imagen etiquetada completa, el agente de compilación intentará extraer la imagen. Por ejemplo, un caso de uso común es cmd: mcr.microsoft.com/acr/acr-cli:<tag>. Sin embargo, la versión previamente almacenada en caché se actualiza con frecuencia, lo que significa que es probable que la versión real en la máquina sea mayor. En este caso, la configuración de red debe configurar una ruta para el tráfico saliente al host del registro de destino que en el ejemplo anterior sería mcr.microsoft.com. Las mismas reglas se aplicarían a cualquier otro registro público externo (docker.io, quay.io, ghcr.io, etc).

Crear grupo en VNet

En el ejemplo siguiente se crea un grupo de agentes en la subred mysubnet de la red myvnet:

# Get the subnet ID
subnetId=$(az network vnet subnet show \
        --resource-group myresourcegroup \
        --vnet-name myvnet \
        --name mysubnetname \
        --query id --output tsv)

az acr agentpool create \
    --registry MyRegistry \
    --name myagentpool \
    --tier S2 \
    --subnet-id $subnetId

Ejecutar tarea en el grupo de agentes

En los siguientes ejemplos se muestra cómo especificar un grupo de agentes al poner en cola una tarea.

Nota

Para usar un grupo de agentes en una tarea de ACR, asegúrese de que el grupo contiene al menos una instancia.

Tarea rápida

Ponga en cola una tarea rápida en el grupo de agentes mediante el comando az acr build y pase el parámetro --agent-pool:

az acr build \
    --registry MyRegistry \
    --agent-pool myagentpool \
    --image myimage:mytag \
    --file Dockerfile \
    https://github.com/Azure-Samples/acr-build-helloworld-node.git#main

Tarea desencadenada automáticamente

Por ejemplo, cree una tarea programada en el grupo de agentes con el comando az acr task create y pase el parámetro --agent-pool.

az acr task create \
    --registry MyRegistry \
    --name mytask \
    --agent-pool myagentpool \
    --image myimage:mytag \
    --schedule "0 21 * * *" \
    --file Dockerfile \
    --context https://github.com/Azure-Samples/acr-build-helloworld-node.git#main \
    --commit-trigger-enabled false

Para comprobar la configuración de la tarea, ejecute az acr task run:

az acr task run \
    --registry MyRegistry \
    --name mytask

Consulta del estado del grupo

Para averiguar el número de ejecuciones programadas actualmente en el grupo de agentes, ejecute az acr agentpool show.

az acr agentpool show \
    --registry MyRegistry \
    --name myagentpool \
    --queue-count

Pasos siguientes

Para obtener más ejemplos de compilaciones y mantenimiento de imágenes de contenedor en la nube, consulte la serie de tutoriales de ACR Tasks.