Partager via


Exécuter une tâche ACR sur un pool d’agents dédié

Configurez un pool de machines virtuelles gérées par Azure (pool d’agents) pour permettre l’exécution de vos tâches Azure Container Registry dans un environnement de calcul dédié. Une fois que vous avez configuré un ou plusieurs pools dans votre registre, vous pouvez choisir un pool pour exécuter une tâche à la place de l’environnement de calcul par défaut du service.

Un pool d’agents fournit les fonctionnalités suivantes :

  • Prise en charge des réseaux virtuels : affectez un pool d’agents à un réseau virtuel Azure, ce qui permet d’accéder aux ressources du réseau virtuel, comme un registre de conteneurs, un coffre de clés ou un stockage.
  • Mise à l’échelle en fonction des besoins : augmentez le nombre d’instances dans un pool d’agents pour les tâches nécessitant beaucoup de ressources, ou mettez à l’échelle sur zéro. La facturation est basée sur l’allocation de pool. Pour plus d’informations, consultez les tarifs.
  • Options flexibles : choisissez parmi différents niveaux de pool et mettez à l’échelle des options pour répondre aux besoins de la charge de travail de votre tâche.
  • Gestion Azure : les pools de tâches sont corrigés et gérés par Azure, ce qui permet une allocation réservée sans avoir à gérer les machines virtuelles individuelles.

Cette fonctionnalité est disponible uniquement au niveau de service Premium de registre de conteneurs. Pour plus d’informations sur les niveaux de service et les limites de registre, consultez Références SKU Azure Container Registry.

Important

Cette fonctionnalité est actuellement en préversion et certaines limitations s’appliquent. Les préversions sont à votre disposition, à condition que vous acceptiez les conditions d’utilisation supplémentaires. Certains aspects de cette fonctionnalité sont susceptibles d’être modifiés avant la mise à disposition générale.

Limitations de la version préliminaire

  • Les pools d’agents de tâche prennent actuellement en charge les nœuds Linux. Les nœuds Windows ne sont actuellement pas pris en charge.
  • Les pools d’agents de tâche sont disponibles en préversion dans les régions suivantes : USA Ouest 2, USA Centre Sud, USA Est 2, USA Est, USA Centre, Europe Ouest, Europe Nord, Canada Centre, Asie Est, Suisse Nord, USGov Arizona, USGov Texas et USGov Virginie.
  • Pour chaque registre, le quota total par défaut de processeurs virtuels (Core) est de 16 pour tous les pools d’agents standard et de 0 pour les pools d’agents isolés. Ouvrez une demande de support pour une allocation supplémentaire.

Prérequis

  • Pour utiliser les étapes Azure CLI décrites dans cet article, vous devez disposer d’Azure CLI version 2.3.1 ou ultérieure. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI. Ou exécutez cela dans Azure Cloud Shell.
  • Si vous ne disposez pas d’un registre de conteneurs, créez-en un (niveau Premium requis) dans une région de préversion.

Niveaux de pool

Les niveaux de pool d’agents fournissent les ressources suivantes par instance dans le pool.

Niveau Type UC Mémoire (Go)
S1 standard 2 3
S2 standard 4 8
S3 standard 8 16
I6 isolés 64 216

Créer et gérer un pool d’agents de tâche

Définir le registre par défaut (facultatif)

Pour simplifier les commandes Azure CLI qui suivent, définissez le registre par défaut en exécutant la commande az config :

az config set defaults.acr=<registryName>

Les exemples suivants supposent que vous avez défini le registre par défaut. Si ce n’est pas le cas, transmettez un paramètre --registry <registryName> dans chaque commande az acr.

Créer un pool d’agents

Créez un pool d’agents à l’aide de la commande az acr agentpool create. L’exemple suivant crée un pool de niveau S2 (4 UC/instance). Par défaut, le pool contient 1 instance.

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

Notes

La création d’un pool d’agents et d’autres opérations de gestion de pool prend quelques minutes.

Pool de mise à l’échelle

Mettez à l’échelle la taille du pool vers le haut ou vers le bas avec la commande az acr agentpool update. L’exemple suivant met à l’échelle le pool à 2 instances. Vous pouvez mettre à l’échelle jusqu’à 0 instance.

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

Créer un pool dans un réseau virtuel

Ajouter des règles de pare-feu

Les pools d’agents de tâche requièrent un accès aux services Azure suivants. Les règles de pare-feu suivantes doivent être ajoutées à tous les groupes de sécurité réseau existants ou itinéraires définis par l’utilisateur.

Sens Protocol Source Port source Destination Port de destination n° utilisé : Notes
Règle de trafic sortant TCP VirtualNetwork Quelconque AzureKeyVault 443 Default
Règle de trafic sortant TCP VirtualNetwork Quelconque Stockage 443 Default
Règle de trafic sortant TCP VirtualNetwork Quelconque Event Hub 443 Default
Règle de trafic sortant TCP VirtualNetwork Quelconque AzureActiveDirectory 443 Default
Règle de trafic sortant TCP VirtualNetwork Quelconque AzureMonitor 443,12000 Par défaut Le port 12000 est un port unique utilisé pour les diagnostics

Remarque

Si vos tâches requièrent des ressources supplémentaires provenant de l’Internet public, ajoutez les règles correspondantes. Par exemple, des règles supplémentaires sont nécessaires pour exécuter une tâche de génération de Docker qui extrait les images de base de Docker Hub ou restaure un package NuGet.

Les clients qui basent leurs déploiements avec MCR peuvent consulter les règles de pare-feu MCR/MAR.

Configuration réseau avancée

Si les règles standard du pare-feu/du groupe de sécurité réseau (NSG) sont considérées comme trop permissives et qu’un contrôle renforcé est nécessaire pour les connexions sortantes, il convient d’envisager l’approche suivante :

  • Activez les points de terminaison de service sur le sous-réseau du pool d’agents. Cela permet au pool d’agents d’accéder à ses dépendances de service tout en maintenant un réseau sécurisé.
  • Il est important de noter que les règles de pare-feu/groupe de sécurité (NSG) réseau sortantes sont toujours nécessaires. Ces règles facilitent la capacité du réseau virtuel à basculer l’adresse IP source du réseau public vers le privé, ce qui constitue une étape supplémentaire au-delà de l’activation des points de terminaison de service.

De plus amples informations sur les points de terminaison des services sont disponibles ici.

Au minimum, les points de terminaison de service suivants seront nécessaires

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry
  • Microsoft.EventHub
  • Microsoft.KeyVault
  • Microsoft.Storage (ou les régions de stockage correspondantes prenant en compte la géoréplication)

Remarque

Actuellement, aucun point de terminaison de service n’existe pour Azure Monitor. Si le trafic sortant pour Azure Monitor n’est pas configuré, le pool d’agents ne peut pas émettre de journaux de diagnostic, mais peut sembler continuer à fonctionner normalement. Dans ce cas, ACR ne sera pas en mesure d’aider à résoudre les problèmes rencontrés. Il est donc important que l’administrateur du réseau prenne cela en compte lors de la planification de la configuration du réseau.

Il est également important de noter que toutes les tâches ACR disposent d’images mises en cache pour certains des cas d’utilisation les plus courants. Les tâches ne mettent en cache qu’une seule version à la fois, ce qui signifie que si la référence complète de l’image étiquetée est utilisée, l’agent de build tentera d’extraire l’image. Par exemple, un cas d’usage courant est cmd: mcr.microsoft.com/acr/acr-cli:<tag>. Toutefois, la version pré-mise en cache est fréquemment mise à jour, ce qui signifie que la version réelle sur la machine sera probablement plus élevée. Dans ce cas, la configuration réseau doit configurer un itinéraire pour le trafic sortant vers l’hôte de registre cible, qui dans l’exemple ci-dessus serait mcr.microsoft.com. Les mêmes règles s’appliquent à tout autre registre public externe (docker.io, quay.io, ghcr.io, etc.).

Créer un pool dans un réseau virtuel

L’exemple suivant crée un pool d’agents dans le sous-réseau mysubnet du réseau 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

Exécuter la tâche sur le pool d’agents

Les exemples suivants montrent comment spécifier un pool d’agents lors de la mise en file d’attente d’une tâche.

Notes

Pour utiliser un pool d’agents dans une tâche ACR, assurez-vous que le pool contienne au moins 1 instance.

Tâche rapide

Mettez en file d’attente une tâche rapide sur le pool d’agents à l’aide de la commande az acr build et transmettez le paramètre --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

Tâche déclenchée automatiquement

Par exemple, créez une tâche planifiée sur le pool d’agents avec az acr task create, en transmettant le paramètre --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

Pour vérifier la configuration des tâches, exécutez az acr task run :

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

État du pool de requêtes

Pour trouver le nombre d’exécutions actuellement planifiées sur le pool d’agents, exécutez az acr agentpool show.

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

Étapes suivantes

Pour obtenir plus d’exemples de builds et de maintenance d’image de conteneur dans le cloud, consultez la série de tutoriels sur ACR Tasks.