Compartilhar via


Executar uma tarefa do ACR em um pool dedicado de agentes

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 à rede virtual – atribua um pool de agentes a uma VNet do Azure, fornecendo acesso aos recursos na VNet, como um registro de contêiner, um cofre de chaves ou um armazenamento.
  • Dimensionar conforme necessário – aumente o número de instâncias em um pool de agentes para tarefas de uso intensivo de computação ou dimensione para zero. A cobrança é baseada na alocação do pool. Para obter detalhes, confira Preços.
  • Opções flexíveis – escolha entre diferentes camadas de pool e opções de escala para atender às suas necessidades de carga de trabalho de tarefa.
  • 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 Premium do registro de contêiner. Para obter informações sobre os limites e as camadas de serviço do registro, confira SKUs do Registro de Contêiner do Azure.

Importante

Esse recurso está na versão prévia no momento; algumas limitações se aplicam. As versões prévias são disponibilizadas com a condição de que você concorde com os termos de uso complementares. Alguns aspectos desse recurso podem alterar antes da GA (disponibilidade geral).

Limitações de visualização

  • Os pools de agentes de tarefa atualmente dão suporte a nós do Linux. Atualmente não há suporte para nós do Windows.
  • Os pools de agentes de tarefa estão disponíveis em versão prévia nas seguintes regiões: Oeste dos EUA 2, Centro-Sul dos EUA, Leste dos EUA 2, Leste dos EUA, EUA Central, Oeste da Europa, Norte da Europa, Canadá Central, Leste da Ásia, Norte da Suíça, USGov Arizona, USGov Texas e USGov Virgínia.
  • Para cada registro, a cota padrão total 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 você precisa instalar ou atualizar, consulte Instalar a CLI do Azure. Ou executá-la no Azure Cloud Shell.
  • Se ainda não houver um registro de contêiner, crie um (camada Premium necessária) em uma região preliminar.

Camadas de pool

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

Camada Tipo 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 a seguir, 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 parâmetro --registry <registryName> em cada comando az acr.

Criar pool de agentes

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

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

Observação

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

Escalar pool

Aumente ou reduza o tamanho do pool com o comando az acr agentpool update. O exemplo a seguir dimensiona o pool para duas instâncias. Você pode dimensionar para zero instância.

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

Criar um pool em uma rede virtual

Adicionar regras de firewall

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

Direção Protocolo Fonte Porta de origem Destino Porta de destino Usado Comentários
Saída TCP VirtualNetwork Qualquer AzureKeyVault 443 Padrão
Saída TCP VirtualNetwork Qualquer Armazenamento 443 Padrão
Saída TCP VirtualNetwork Qualquer EventHub 443 Padrão
Saída TCP VirtualNetwork Qualquer AzureActiveDirectory 443 Padrão
Saída TCP VirtualNetwork Qualquer AzureMonitor 443,12000 Padrão A porta 12000 é uma porta exclusiva usada para diagnósticos

Observação

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 Regras de firewall do MCR/MAR.

Configuração avançada da rede

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

  • Habilite os 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 e, ao mesmo tempo, mantém uma postura de rede segura.
  • É importante observar que as regras de Firewall/NSG de saída ainda são necessárias. Essas regras facilitam a capacidade da Rede Virtual de alternar o IP de origem de público para privado, o que é uma etapa adicional além de habilitar pontos de extremidade de serviço.

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

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

  • 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)

Observação

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 conseguirá emitir registros de diagnóstico, mas poderá parecer que ainda está operando normalmente. Nesse caso, o ACR não poderá ajudar a solucionar totalmente os problemas encontrados, portanto, é importante que o administrador da rede leve isso em consideração ao planejar a configuração da rede.

Além disso, é importante observar que todas as tarefas do 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 por vez, o que significa que, se a referência completa da imagem marcada for usada, o agente de compilação tentará efetuar pull da 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 no computador provavelmente será maior. Nesse caso, a configuração de rede deve definir uma rota para o tráfego de saída para o host de registro de destino que, no exemplo acima, seria mcr.microsoft.com. As mesmas regras se aplicariam a qualquer outro registro público externo (docker.io, quay.io, ghcr.io etc.).

Criar pool na VNet

O seguinte exemplo 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 em um pool de agentes

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

Observação

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

Tarefa rápida

Enfileire uma tarefa rápida no pool de agentes usando o comando az acr build e passe o 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

Tarefa disparada automaticamente

Por exemplo, crie uma tarefa agendada no pool de agentes com az acr task create, passando o 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 verificar a configuração da tarefa, execute az acr task run:

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

Status do pool de consulta

Para localizar 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óximas etapas

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