Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.