Eseguire un'attività del Registro Azure Container in un pool di agenti dedicato

Configurare un pool di macchine virtuali gestito da Azure (pool di agenti) per abilitare l'esecuzione delle attività del Registro Azure Container in un ambiente di calcolo dedicato. Dopo aver configurato uno o più pool nel registro, è possibile scegliere un pool per eseguire un'attività anziché l’ambiente di calcolo predefinito del servizio.

Un pool di agenti fornisce:

  • Supporto della rete virtuale: assegnare un pool di agenti a una rete virtuale di Azure, fornendo l'accesso alle risorse nella rete virtuale, ad esempio un registro contenitori, un insieme di credenziali delle chiavi o un archivio.
  • Ridimensionamento in base alle esigenze: aumentare il numero di istanze in un pool di agenti per le attività a elevato utilizzo di calcolo o scalare a zero. La fatturazione si basa sull'allocazione del pool. Per informazioni dettagliate, vedere Prezzi.
  • Opzioni flessibili: scegliere tra i diversi livelli di pool e le opzioni di scalabilità per soddisfare le esigenze del carico di lavoro delle attività.
  • Gestione di Azure: vengono applicate patch ai pool di attività gestiti da Azure in modo da fornire allocazioni riservate senza che sia necessario gestire le singole macchine virtuali.

Questa funzionalità è disponibile per il livello di servizio Premium del registro contenitori. Per informazioni sui livelli di servizio e sui limiti del registro, vedere SKU del Registro Azure Container.

Importante

Questa funzionalità è attualmente in anteprima e si applicano alcune limitazioni. Le anteprime vengono rese disponibili a condizione che l'utente accetti le condizioni supplementari per l'utilizzo. Alcuni aspetti di questa funzionalità potrebbero subire modifiche prima della disponibilità a livello generale.

Limiti dell'anteprima

  • I pool di agenti attività attualmente supportano i nodi Linux. I nodi Windows non sono attualmente supportati.
  • I pool di agenti attività sono disponibili in anteprima nelle aree seguenti: Stati Uniti occidentali 2, Stati Uniti centro-meridionali, Stati Uniti orientali 2, Stati Uniti orientali, Stati Uniti centrali, Europa occidentale, Europa settentrionale, Canada centrale, Asia orientale, Svizzera settentrionale, USGov Arizona, USGov Texas e USGov Virginia.
  • Per ogni registro, la quota totale di vCPU (core) predefinita è 16 per tutti i pool di agenti standard e 0 per i pool di agenti isolati. Aprire una richiesta di supporto per un'allocazione aggiuntiva.

Prerequisiti

  • Per usare la procedura dell'interfaccia della riga di comando di Azure descritta in questo articolo, è necessaria la versione 2.3.1 o successiva dell'interfaccia della riga di comando di Azure. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. In alternativa, eseguire la procedura in Azure Cloud Shell.
  • Se non si dispone già un registro contenitori, crearne uno (è necessario il livello Premium) in un'area di anteprima.

Livelli di pool

I livelli del pool di agenti forniscono le risorse seguenti per ogni istanza nel pool.

Livello Type CPU Memoria (GB)
S1 standard 2 3
S2 standard 4 8
S3 standard 8 16
I6 isolato 64 216

Creare e gestire un pool di agenti attività

Impostare il registro predefinito (facoltativo)

Per semplificare i comandi dell'interfaccia della riga di comando di Azure seguenti, impostare il registro predefinito eseguendo il comando az config:

az config set defaults.acr=<registryName>

Gli esempi seguenti presuppongono che sia stato impostato il registro predefinito. In caso contrario, passare un parametro --registry <registryName> in ogni comando az acr.

Creare un pool di agenti

Creare un pool di agenti con il comando az acr agentpool create. Nell'esempio seguente viene creato un pool di livello S2 (4 CPU/istanza). Per impostazione predefinita, il pool contiene 1 istanza.

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

Nota

Il completamento della creazione di un pool di agenti e delle altre operazioni di gestione del pool richiede alcuni minuti.

Ridimensionare il pool

Aumentare o ridurre le dimensioni del pool con il comando az acr agentpool update. Nell'esempio seguente il pool viene ridimensionato a 2 istanze. È possibile ridimensionare fino a 0 istanze.

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

Creare un pool in una rete virtuale

Aggiungere regole di firewall

I pool di agenti attività richiedono l'accesso ai servizi di Azure seguenti. Le regole del firewall seguenti devono essere aggiunte a qualsiasi gruppo di sicurezza di rete esistente o route definite dall'utente.

Direzione Protocollo Origine Porta di origine Destinazione Porta Dest nr. utilizzato Osservazioni:
In uscita TCP VirtualNetwork Any AzureKeyVault 443 Predefiniti
In uscita TCP VirtualNetwork Any Storage 443 Predefiniti
In uscita TCP VirtualNetwork Any EventHub 443 Predefiniti
In uscita TCP VirtualNetwork Any AzureActiveDirectory 443 Predefiniti
In uscita TCP VirtualNetwork Any AzureMonitor 443,12000 Predefiniti La porta 12000 è una porta univoca usata per la diagnostica

Nota

Se le attività richiedono risorse aggiuntive dalla rete Internet pubblica, aggiungere le regole corrispondenti. Ad esempio, nel caso siano necessarie regole aggiuntive per eseguire un'attività di compilazione Docker che esegue il pull delle immagini di base dall'hub Docker o ripristina un pacchetto NuGet.

I clienti che basano le distribuzioni su MCR possono fare riferimento alle regole del firewall MCR/MAR.

Configurazione di rete avanzata

Se le regole del firewall/del gruppo di sicurezza di rete (NSG) standard sono considerate troppo permissive e per le connessioni in uscita è necessario un controllo più granulare, considerare l'approccio seguente:

  • Abilitare gli endpoint servizio nella subnet del pool di agenti. Ciò concede al pool di agenti l'accesso alle dipendenze del servizio mantenendo al tempo stesso un comportamento di rete sicuro.
  • È importante notare che le regole del firewall/gruppo di sicurezza di rete in uscita sono comunque necessarie. Queste regole facilitano la capacità della rete virtuale di cambiare l'indirizzo IP di origine da pubblico a privato, un ulteriore passaggio oltre all'abilitazione degli endpoint servizio.

Altre informazioni sugli endpoint servizio sono documentate qui.

Saranno necessari almeno gli endpoint servizio seguenti

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry
  • Microsoft.EventHub
  • Microsoft.KeyVault
  • Archiviazione di Microsoft (o le aree di archiviazione corrispondenti che prendono in considerazione la replica geografica)

Nota

Attualmente non esiste un endpoint servizio per Monitoraggio di Azure. Se il traffico in uscita per Monitoraggio di Azure non è configurato, il pool di agenti non sarà in grado di generare log di diagnostica sebbene il suo funzionamento possa sembrare normale. In questo caso Registro Azure Container non sarà in grado di risolvere completamente eventuali problemi riscontrati. Pertanto, è importante che l'amministratore di rete tenga conto di questo aspetto durante la pianificazione della configurazione di rete.

Inoltre, è importante notare che tutte le attività del Registro Azure Container includono immagini pre-memorizzate nella cache per alcuni dei casi d'uso più comuni. Le attività memorizzano nella cache una singola versione alla volta, ovvero se viene usato il riferimento completo all'immagine con tag, l'agente di compilazione tenterà di eseguire il pull dell'immagine. Ad esempio, un caso d'uso comune è cmd: mcr.microsoft.com/acr/acr-cli:<tag>. Tuttavia, la versione pre-memorizzata nella cache viene aggiornata di frequente, il che significa che la versione effettiva nel computer sarà probabilmente superiore. In questo caso, la configurazione di rete deve configurare una route per il traffico in uscita verso l'host del registro di destinazione che nell'esempio precedente sarebbe mcr.microsoft.com. Le stesse regole si applicano a qualsiasi altro registro pubblico esterno (docker.io, quay.io, ghcr.io e così via).

Creare un pool nella rete virtuale

Nell'esempio seguente viene creato un pool di agenti nella subnet mysubnet della rete 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

Eseguire l'attività nel pool di agenti

Negli esempi seguenti viene spiegato come specificare un pool di agenti durante l'accodamento di un'attività.

Nota

Per usare un pool di agenti in un'attività del Registro Azure Container, assicurarsi che il pool contenga almeno 1 istanza.

Attività rapida

Accodare un'attività rapida nel pool di agenti con il comando az acr build e passare il parametro --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

Attività attivata automaticamente

Ad esempio, creare un'attività pianificata nel pool di agenti con az acr task create, passando il parametro --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

Per verificare l'installazione dell'attività, eseguire az acr task run:

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

Stato del pool di query

Per trovare il numero di esecuzioni attualmente pianificate nel pool di agenti, eseguire az acr agentpool show.

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

Passaggi successivi

Per altri esempi di compilazioni e manutenzione di immagini del contenitore nel cloud, vedere la serie di esercitazioni su Attività del Registro Azure Container.