Compartilhar via


Executar uma tarefa do Registro de Contêiner do Azure 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 em seu 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 tarefas 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, Europa Ocidental, Norte da Europa, Canadá Central, Leste da Ásia, Norte da Suíça, Suécia Central, Jio India West, Jio India Central, USGov Arizona, USGov Texas e USGov Virginia.

  • 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. Para aumentar sua cota, abra uma solicitação de suporte.

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 oito
S3 padrão oito 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 az config comando:

az config set defaults.acr=<registryName>

Os exemplos a seguir pressupõem que você já defina 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 az acr agentpool create comando. 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

Dimensione o tamanho do pool para cima ou para baixo com o az acr agentpool update comando. O exemplo a seguir dimensiona o pool para duas instâncias.

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 suas tarefas exigirem outros recursos da Internet pública, adicione as regras correspondentes. Por exemplo, as regras são necessárias para executar uma tarefa de build do Docker que extraia as imagens base do Hub do Docker ou que restaura um pacote NuGet.

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

Configuração de rede avançada

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 mudar o IP de origem de público para privado, o que é mais uma etapa além de habilitar pontos de extremidade de serviço.

Para obter mais informações sobre pontos de extremidade de serviço, consulte Proteger os serviços do Azure para redes virtuais.

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

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry (somente se o registro não estiver usando um link privado)
  • Microsoft.EventHub
  • Microsoft.KeyVault (cofre de chaves da Microsoft)
  • Microsoft.Storage (ou as regiões de armazenamento correspondentes levando em consideração a replicação geográfica)

Observação

No momento, não existe um ponto de extremidade de serviço para o Azure Monitor. Se o tráfego de saída do Azure Monitor não estiver configurado, o pool de agentes não poderá emitir logs de diagnóstico, mas pode parecer que ainda funciona normalmente. Nesse caso, o ACR não é capaz de solucionar totalmente os problemas encontrados, portanto, é importante levar isso em conta ao planejar a configuração de rede.

Lembre-se também de que as Tarefas do ACR têm imagens pré-carregadas para alguns dos casos de uso mais comuns. As tarefas armazenam 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 build tentará baixar a imagem. Por exemplo, um caso de uso comum é cmd: mcr.microsoft.com/acr/acr-cli:<tag>. No entanto, a versão pré-cacheada é 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 do Registro de destino, que no exemplo anterior seria mcr.microsoft.com. As mesmas regras se aplicariam a qualquer outro registro público externo (docker.io, quay.io, ghcr.io etc.).

Usar um DNS personalizado

Se a sub-rede tiver um servidor DNS personalizado configurado, essa configuração será herdada pelo agente de build durante o runtime.

Importante

O intervalo de IP usado pelo ponto de extremidade DNS personalizado não deve entrar em conflito com o intervalo padrão de 172.17.0.0/16 do Docker.

Criar pool na VNet

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