Partilhar via


Executar uma tarefa ACR em um pool de agentes dedicado

Configure um pool de VMs gerenciado pelo Azure (pool de agentes) para habilitar a execução de suas tarefas do Registro de Contêiner do Azure em um ambiente de computação dedicado. Depois de configurar um ou mais pools no Registro, você pode escolher um pool para executar uma tarefa no lugar do ambiente de computação padrão do serviço.

Um pool de agentes fornece:

  • Suporte de rede virtual - Atribua um pool de agentes a uma rede virtual do Azure, fornecendo acesso a recursos na rede virtual, como um registro de contêiner, cofre de chaves ou armazenamento.
  • Dimensionar conforme necessário - Aumente o número de instâncias em um pool de agentes para tarefas de computação intensiva ou dimensione para zero. O faturamento é baseado na alocação do pool. Para obter detalhes, consulte Preços.
  • Opções flexíveis - Escolha entre diferentes níveis de pool e opções de dimensionamento para atender às suas necessidades de carga de trabalho.
  • Gerenciamento do Azure - Os pools de tarefas são corrigidos e mantidos pelo Azure, fornecendo alocação reservada sem a necessidade de manter as VMs individuais.

Esse recurso está disponível na camada de serviço de registro de contêiner Premium . Para obter informações sobre camadas e limites do serviço de registro, consulte SKUs do Registro de Contêiner do Azure.

Importante

Este recurso está atualmente em pré-visualização e algumas limitações se aplicam. As pré-visualizações são disponibilizadas a si na condição de concordar com os termos suplementares de utilização. Alguns aspetos desta funcionalidade podem alterar-se após a disponibilidade geral (GA).

Limitações de pré-visualização

  • Atualmente, os pools de agentes de tarefas suportam nós Linux. Atualmente, não há suporte para nós do Windows.
  • Os pools de agentes de tarefas estão disponíveis em visualização nas seguintes regiões: Oeste dos EUA 2, Centro-Sul dos EUA, Leste dos EUA 2, Leste dos EUA, Central dos EUA, Europa Ocidental, Europa do Norte, Canadá Central, Ásia Oriental, Suíça Norte, USGov Arizona, USGov Texas e USGov Virginia.
  • Para cada registro, a cota total padrão de vCPU (núcleo) é 16 para todos os pools de agentes padrão e é 0 para pools de agentes isolados. Abra uma solicitação de suporte para alocação adicional.

Pré-requisitos

  • Para usar as etapas da CLI do Azure neste artigo, a CLI do Azure versão 2.3.1 ou posterior é necessária. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI). Ou execute no Azure Cloud Shell.
  • Se você ainda não tiver um registro de contêiner, crie um (camada Premium necessária) em uma região de visualização.

Níveis de piscina

As camadas do pool de agentes fornecem os seguintes recursos por instância no pool.

Escalão de serviço Type CPU Memória (GB)
S1 padrão 2 3
S2 padrão 4 8
S3 padrão 8 16
I6 isolado 64 216

Criar e gerenciar um pool de agentes de tarefas

Definir registro padrão (opcional)

Para simplificar os comandos da CLI do Azure que se seguem, defina o registro padrão executando o comando az config :

az config set defaults.acr=<registryName>

Os exemplos a seguir pressupõem que você definiu o registro padrão. Caso contrário, passe um --registry <registryName> parâmetro em cada az acr comando.

Criar pool de agentes

Crie um pool de agentes usando o comando az acr agentpool create . O exemplo a seguir cria um pool S2 de camada (4 CPU/instância). Por padrão, o pool contém 1 instância.

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

Nota

A criação de um pool de agentes e outras operações de gerenciamento de pool leva vários minutos para ser concluída.

Piscina de escalas

Dimensione o tamanho do pool para cima ou para baixo com o comando az acr agentpool update . O exemplo a seguir dimensiona o pool para 2 instâncias. Você pode dimensionar para 0 instâncias.

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

Criar pool em uma rede virtual

Adicionar regras de firewall

Os pools de agentes de tarefas exigem acesso aos seguintes serviços do Azure. As seguintes regras de firewall devem ser adicionadas a quaisquer grupos de segurança de rede existentes ou rotas definidas pelo usuário.

Direção Protocolo Origem Porta de origem Destino Porto de Dest Used Observações
Saída TCP VirtualNetwork Qualquer AzureKeyVault 443 Predefinido
Saída TCP VirtualNetwork Qualquer Armazenamento 443 Predefinido
Saída TCP VirtualNetwork Qualquer EventHub 443 Predefinido
Saída TCP VirtualNetwork Qualquer AzureActiveDirectory 443 Predefinido
Saída TCP VirtualNetwork Qualquer AzureMonitor 443,12000 Predefinido A porta 12000 é uma porta exclusiva usada para diagnósticos

Nota

Se as suas tarefas exigirem recursos adicionais da Internet pública, adicione as regras correspondentes. Por exemplo, regras adicionais são necessárias para executar uma tarefa de compilação do docker que extrai as imagens base do Docker Hub ou restaura um pacote NuGet.

Os clientes que baseiam suas implantações com MCR podem consultar as regras de firewall MCR/MAR.

Configuração avançada de rede

Se as regras padrão de Firewall/NSG (Network Security Group) forem consideradas muito permissivas e for necessário um controle mais refinado para conexões de saída, considere a seguinte abordagem:

  • Habilite pontos de extremidade de serviço na sub-rede do pool de agentes. Isso concede ao pool de agentes acesso às suas dependências de serviço, mantendo uma postura de rede segura.
  • É importante notar que as regras de Firewall/NSG de saída ainda são necessárias. Essas regras facilitam a capacidade da Rede Virtual de mudar o IP de origem de público para privado, o que é um passo adicional além de habilitar pontos de extremidade de serviço.

Mais informações sobre pontos de extremidade de serviço estão documentadas aqui.

No mínimo, os seguintes pontos de extremidade de serviço serão necessários

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry
  • Microsoft.EventHub
  • Microsoft.KeyVault
  • Microsoft.Storage (ou as regiões de armazenamento correspondentes levando em consideração a replicação geográfica)

Nota

Atualmente, não existe um ponto de extremidade de serviço para o Azure Monitor. Se o tráfego de saída para o Azure Monitor não estiver configurado, o pool de agentes não poderá emitir logs de diagnóstico, mas poderá parecer que ainda funciona normalmente. Nesse caso, o ACR não poderá ajudar a solucionar totalmente quaisquer problemas encontrados, por isso é importante que o administrador da rede leve isso em consideração ao planejar a configuração da rede.

Além disso, é importante notar que todas as tarefas ACR têm imagens pré-armazenadas em cache para alguns dos casos de uso mais comuns. As tarefas armazenarão em cache apenas uma única versão de cada vez, o que significa que, se a referência de imagem marcada completa for usada, o agente de compilação tentará extrair a imagem. Por exemplo, um caso de uso comum é cmd: mcr.microsoft.com/acr/acr-cli:<tag>. No entanto, a versão pré-armazenada em cache é atualizada com frequência, o que significa que a versão real na máquina provavelmente será maior. Nesse caso, a configuração de rede deve configurar uma rota para o tráfego de saída para o host de registro de destino que, no exemplo acima, seria mcr.microsoft.com. Aplicar-se-iam as mesmas regras a qualquer outro registo público externo (docker.io, quay.io, ghcr.io, etc.).

Criar pool na VNet

O exemplo a seguir cria um pool de agentes na sub-rede mysubnet da rede 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

Executar tarefa no pool de agentes

Os exemplos a seguir mostram como especificar um pool de agentes ao enfileirar uma tarefa.

Nota

Para usar um pool de agentes em uma tarefa ACR, verifique se o pool contém pelo menos 1 instância.

Tarefa rápida

Enfileire uma tarefa rápida no pool de agentes usando o comando az acr build e passe o --agent-pool parâmetro:

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

Tarefa acionada automaticamente

Por exemplo, crie uma tarefa agendada no pool de agentes com az acr task create, passando o --agent-pool parâmetro.

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 verificar a configuração da tarefa, execute az acr task run:

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

Status do pool de consultas

Para encontrar o número de execuções atualmente agendadas no pool de agentes, execute az acr agentpool show.

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

Próximos passos

Para obter mais exemplos de compilações e manutenção de imagens de contêiner na nuvem, confira a série de tutoriais Tarefas do ACR.