Partilhar via


Execute uma tarefa Azure Container Registry num pool de agentes dedicado

Configure um pool de VM gerido pelo Azure (pool de agentes) para permitir a execução das suas tarefas do Azure Container Registry num ambiente de computação dedicado. Depois de configurar um ou mais pools no seu registo, pode escolher um pool para executar uma tarefa em vez do ambiente de computação padrão do serviço.

Um grupo de agentes proporciona:

  • Suporte a rede virtual - Atribuir um pool de agentes a um Azure VNet, fornecendo acesso a recursos no VNet, como um registo de contentores, cofre de chaves ou armazenamento.
  • Escalar conforme necessário - Aumentar o número de instâncias num pool de agentes para tarefas intensivas em computação, ou escalar até zero. A faturação baseia-se na alocação do pool. Para mais detalhes, consulte Preços.
  • Opções flexíveis - Escolha entre diferentes níveis de pool e opções de escala para satisfazer as suas necessidades de carga de trabalho.
  • Gestão Azure - Os pools de tarefas são atualizados e mantidos pelo Azure, fornecendo alocação reservada sem necessidade de manter as VMs individuais.

Esta funcionalidade está disponível no nível Premium de serviço do registo de contentores. Para informações sobre os níveis e limites dos serviços de registo, consulte os SKUs do Azure Container Registers.

Important

Esta funcionalidade está atualmente em pré-visualização, e aplicam-se algumas limitações. 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

  • Os pools de agentes de tarefas suportam atualmente nós Linux. Os nós do Windows não são suportados neste momento.

  • Os pools de agentes de tarefas estão disponíveis em pré-visualização nas seguintes regiões: Oeste dos EUA 2, Sul Central dos EUA, Leste dos EUA 2, Leste dos EUA, Centro dos EUA, Europa Ocidental, Norte da Europa, Canadá Central, Leste da Ásia, Suíça Norte, Jio Índia Oeste, Jio Índia Central, USGov Arizona, USGov Texas e USGov Virgínia.

  • Para cada registo, a quota total padrão de vCPU (núcleo) é 16 para todos os pools de agentes padrão e 0 para pools de agentes isolados. Para aumentar a sua quota, abra um pedido de apoio.

Prerequisites

  • Para utilizar os passos do Azure CLI neste artigo, é necessária a versão 2.3.1 ou posterior do Azure CLI. Se precisar de instalar ou atualizar, consulte Install Azure CLI. Ou correr no Azure Cloud Shell.
  • Se ainda não tiver um registo de contentores, crie um (é necessário nível Premium) numa região de pré-visualização.

Escalões de grupos

Os níveis do pool de agentes fornecem os seguintes recursos por instância no pool.

Tier Tipo CPU Memória (GB)
S1 norma 2 3
S2 norma 4 8
S3 norma 8 16
I6 isolated 64 216

Criar e gerir um pool de agentes de tarefas

Definir o registro por defeito (opcional)

Para simplificar os comandos Azure CLI que se seguem, defina o registo predefinido executando o comando az config :

az config set defaults.acr=<registryName>

Os exemplos seguintes assumem que já definiu o registo padrão. Se não, passe um --registry <registryName> parâmetro em cada az acr comando.

Criar pool de agentes

Cria um pool de agentes usando o az acr agentpool create comando. O exemplo seguinte cria um pool de nível S2 (4 CPU/instância). Por defeito, o pool contém uma instância.

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

Note

A criação de um pool de agentes e outras operações de gestão de pool demora vários minutos a ser concluída.

Pool de escalas

Aumenta ou diminui o tamanho da piscina com o az acr agentpool update comando. O exemplo seguinte dimensiona o pool para duas instâncias.

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

Criar pool numa rede virtual

Adicionar regras de firewall

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

Direction Protocol Source Porta de origem Destination Porto de Dest Used Remarks
Outbound TCP VirtualNetwork Any AzureKeyVault 443 Default
Outbound TCP VirtualNetwork Any Armazenamento 443 Default
Outbound TCP VirtualNetwork Any EventHub 443 Default
Outbound TCP VirtualNetwork Any AzureActiveDirectory 443 Default
Outbound TCP VirtualNetwork Any AzureMonitor 443,12000 Default A porta 12000 é uma porta única usada para diagnósticos

Note

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

Os clientes que baseiam as suas implementações no MCR podem consultar as regras do firewall MCR/MAR.

Configuração avançada da rede

Se as regras padrão do Firewall/NSG (Network Security Group) forem consideradas demasiado permissivas, e for necessário um controlo mais detalhado para ligações de saída, considere a seguinte abordagem:

  • Ativar os pontos finais de serviço na sub-rede do grupo de agentes. Isto 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 saída do Firewall/NSG continuam a ser necessárias. Estas regras facilitam a capacidade da Rede Virtual de mudar o IP de origem de público para privado, o que é mais um passo para além da ativação de endpoints de serviço.

Para mais informações sobre endpoints de serviço, consulte Serviços Azure Seguros para redes virtuais.

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

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry (apenas se o registo não estiver a usar um link privado)
  • Microsoft.EventHub
  • Microsoft.KeyVault
  • Microsoft.Storage (ou as respetivas regiões de armazenamento tendo em conta a geo-replicação)

Note

Atualmente, não existe um endpoint 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 pode emitir logs de diagnóstico, mas pode parecer que ainda funciona normalmente. Neste caso, a ACR não consegue resolver completamente quaisquer problemas encontrados, por isso é importante ter isto em conta ao planear a configuração da rede.

Também tenha em mente que as ACR Tasks têm imagens pré-cacheadas para alguns dos casos de uso mais comuns. As tarefas apenas armazenam em cache uma única versão de cada vez, o que significa que, se for usada a referência completa da imagem marcada, o agente de compilação tenta puxar a imagem. Por exemplo, um caso de uso comum é cmd: mcr.microsoft.com/acr/acr-cli:<tag>. No entanto, a versão pré-cache é frequentemente atualizada, o que significa que a versão real na máquina provavelmente será superior. Neste caso, a configuração da rede deve configurar uma rota para o tráfego de saída para o host do registo alvo, que no exemplo anterior seria mcr.microsoft.com. As mesmas regras aplicar-se-iam a qualquer outro registo público externo (docker.io, quay.io, ghcr.io, etc.).

Utilização de DNS personalizado

Se a sub-rede tiver um servidor DNS personalizado configurado, esta configuração é herdada pelo agente de compilação durante a execução.

Important

O intervalo de IP usado pelo endpoint DNS personalizado não deve entrar em conflito com o intervalo padrão do docker, 172.17.0.0/16de .

Criar pool no VNet

O exemplo seguinte cria um pool de agentes na mysubnet sub-rede myvnetda rede:

# 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 uma tarefa no pool de agentes

Os exemplos seguintes mostram como especificar um pool de agentes ao colocar uma tarefa na fila.

Note

Para usar um pool de agentes numa tarefa ACR, certifique-se de que o pool contém pelo menos uma instância.

Tarefa rápida

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

Estado do pool de consultas

Para encontrar a quantidade de tarefas atualmente programadas no pool de agentes, execute az acr agentpool show.

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

Próximos passos

Para mais exemplos de construção e manutenção de imagens de contentores na cloud, consulte a série de tutoriais ACR Tasks.