Delen via


Een Azure Container Registry-taak uitvoeren op een toegewezen agentgroep

Stel een door Azure beheerde VM-pool (agentgroep) in om het uitvoeren van uw Azure Container Registry-taken in een toegewezen rekenomgeving mogelijk te maken. Nadat u een of meer pools in uw register hebt geconfigureerd, kunt u een pool kiezen om een taak uit te voeren in plaats van de standaard-rekenomgeving van de service.

Een agentgroep biedt:

  • Ondersteuning voor virtuele netwerken : wijs een agentgroep toe aan een Azure-VNet en geef toegang tot resources in het VNet, zoals een containerregister, sleutelkluis of opslag.
  • Schaal indien nodig : verhoog het aantal exemplaren in een agentgroep voor rekenintensieve taken of schaal naar nul. Facturering is gebaseerd op pooltoewijzing. Zie Prijzen voor meer informatie.
  • Flexibele opties : kies uit verschillende poollagen en schaalopties om te voldoen aan de behoeften van uw taakworkload.
  • Azure-beheer : taakgroepen worden gepatcht en onderhouden door Azure, waardoor gereserveerde toewijzing wordt geboden zonder dat de afzonderlijke VM's hoeven te worden onderhouden.

Deze functie is beschikbaar in de Premium-servicelaag van het containerregister. Zie Azure Container Registry-SKU's voor informatie over registerservicelagen en -limieten.

Belangrijk

Deze functie is momenteel beschikbaar als preview en er gelden enkele beperkingen. Previews worden voor u beschikbaar gesteld op voorwaarde dat u akkoord gaat met de aanvullende gebruiksvoorwaarden. Sommige aspecten van deze functie worden mogelijk nog gewijzigd voordat de functie algemeen beschikbaar wordt.

Preview-beperkingen

  • Taakagentpools ondersteunen momenteel Linux-knooppunten. Windows-knooppunten worden momenteel niet ondersteund.

  • Taakagentgroepen zijn beschikbaar in de preview-fase in de volgende regio's: VS - west 2, VS - zuid-centraal, VS - oost 2, VS - oost, VS - centraal, Europa - west, Europa - noord, Canada - centraal, Azië - oost, Zwitserland - noord, Zweden - centraal, Jio India - west, Jio India - centraal, USGov Arizona, USGov Texas en USGov Virginia.

  • Voor elk register is het standaardquotum voor vCPU (core) 16 voor alle standaardagentgroepen en is 0 voor geïsoleerde agentpools. Als u het quotum wilt verhogen, opent u een ondersteuningsaanvraag.

Vereiste voorwaarden

  • Als u de Azure CLI-stappen in dit artikel wilt gebruiken, is Azure CLI versie 2.3.1 of hoger vereist. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren. Of voer deze uit in Azure Cloud Shell.
  • Als u nog geen containerregister hebt, maakt u er een (Premium-laag vereist) in een preview-regio.

Poolniveaus

Agentpoollagen bieden de volgende resources per instantie in de pool.

Rang Typologie CPU (Centrale Verwerkings Eenheid) Geheugen (Gigabyte)
S1 standaard 2 3
S2 standaard 4 8
S3 standaard 8 16
I6 geïsoleerd 64 216

Een taakagentgroep maken en beheren

Standaardregister instellen (optioneel)

Als u azure CLI-opdrachten die volgen wilt vereenvoudigen, stelt u het standaardregister in door de opdracht uit te az config voeren:

az config set defaults.acr=<registryName>

In de volgende voorbeelden wordt ervan uitgegaan dat u het standaardregister al hebt ingesteld. Als dat niet het is, geeft u een --registry <registryName> parameter door in elke az acr opdracht.

Agentpool maken

Maak een agentpool met behulp van de az acr agentpool create opdracht. In het volgende voorbeeld wordt een laag S2-pool (4 CPU/exemplaar) gemaakt. De pool bevat standaard één exemplaar.

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

Opmerking

Het maken van een agentpool en andere poolbeheerbewerkingen duurt enkele minuten.

Pool opschalen

Schaal de poolgrootte omhoog of omlaag met de az acr agentpool update opdracht. In het volgende voorbeeld wordt de pool geschaald naar twee instanties.

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

Pool maken in een virtueel netwerk

Firewallregels toevoegen

Voor taakagentpools is toegang tot de volgende Azure-services vereist. De volgende firewallregels moeten worden toegevoegd aan bestaande netwerkbeveiligingsgroepen of door de gebruiker gedefinieerde routes.

Richting protocol Bron Bronpoort Bestemming Dest-poort Gebruikt Opmerkingen
Vertrekkend TCP VirtualNetwork Welke dan ook AzureKeyVault 443 Verstek
Vertrekkend TCP VirtualNetwork Welke dan ook Opslag 443 Verstek
Vertrekkend TCP VirtualNetwork Welke dan ook EventHub 443 Verstek
Vertrekkend TCP VirtualNetwork Welke dan ook AzureActiveDirectory 443 Verstek
Vertrekkend TCP VirtualNetwork Welke dan ook AzureMonitor 443,12000 Verstek Poort 12000 is een unieke poort die wordt gebruikt voor diagnostische gegevens

Opmerking

Als voor uw taken andere resources van het openbare internet nodig zijn, voegt u de bijbehorende regels toe. Er zijn bijvoorbeeld regels nodig om een Docker-buildtaak uit te voeren waarmee de basisinstallatiekopieën worden opgehaald uit Docker Hub of waarmee een NuGet-pakket wordt hersteld.

Klanten die hun implementaties met MCR baseren, kunnen verwijzen naar MCR/MAR-firewallregels.

Geavanceerde netwerkconfiguratie

Als de standaardregels van de firewall/NSG (netwerkbeveiligingsgroep) te permissief worden geacht en er meer verfijnde controle is vereist voor uitgaande verbindingen, kunt u de volgende aanpak overwegen:

  • Schakel service-eindpunten in het subnet van de agentgroep in. Hierdoor krijgt de agentpool toegang tot zijn serviceafhankelijkheden, terwijl de netwerkbeveiliging behouden blijft.
  • Het is belangrijk te weten dat uitgaande firewall-/NSG-regels nog steeds nodig zijn. Deze regels vergemakkelijken de mogelijkheid van het virtuele netwerk om het bron-IP-adres van openbaar naar privé over te schakelen. Dit is nog een stap verder dan het inschakelen van service-eindpunten.

Voor meer informatie over service-eindpunten, zie Azure-services beveiligen van virtuele netwerken.

De volgende service-eindpunten zijn minimaal vereist:

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry (alleen als het register geen privékoppeling gebruikt)
  • Microsoft.EventHub
  • Microsoft KeyVault (Een dienst voor het beheren van certificaten en geheime gegevens)
  • Microsoft.Storage (of de bijbehorende opslagregio's waarbij rekening wordt gehouden met geo-replicatie)

Opmerking

Er bestaat momenteel geen service-eindpunt voor Azure Monitor. Als uitgaand verkeer voor Azure Monitor niet is geconfigureerd, kan de agentgroep geen diagnostische logboeken verzenden, maar werkt deze mogelijk nog steeds normaal. In dit geval kan ACR geen problemen die zijn opgetreden, volledig oplossen. Het is dus belangrijk dat u rekening houdt met dit probleem bij het plannen van de netwerkconfiguratie.

Houd er ook rekening mee dat ACR Tasks voorgecachete afbeeldingen bevatten voor enkele van de meest voorkomende gebruiksscenario's. Taken slaan slechts één versie tegelijk in de cache op, wat betekent dat als de volledige verwijzing naar het gelabelde image wordt gebruikt, de build-agent probeert het image op te halen. Een veelvoorkomende use-case is cmd: mcr.microsoft.com/acr/acr-cli:<tag>bijvoorbeeld . De vooraf in de cache opgestelde versie wordt echter regelmatig bijgewerkt, wat betekent dat de werkelijke versie op de computer waarschijnlijk hoger is. In dit geval moet de netwerkconfiguratie een route configureren voor uitgaand verkeer naar de doelregisterhost, die in het vorige voorbeeld zou zijn mcr.microsoft.com. Dezelfde regels zijn van toepassing op elk ander extern openbaar register (docker.io, quay.io, ghcr.io, enzovoort).

Aangepaste DNS gebruiken

Als het subnet een aangepaste DNS-server heeft geconfigureerd, wordt deze configuratie tijdens runtime overgenomen door de buildagent.

Belangrijk

Het IP-bereik dat wordt gebruikt door het aangepaste DNS-eindpunt mag niet conflicteren met het standaardbereik van 172.17.0.0/16Docker.

Pool maken in VNet

In het volgende voorbeeld wordt een agentgroep gemaakt in het subnet van het mysubnet netwerk 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

Taak uitvoeren op agentenpool

In de volgende voorbeelden ziet u hoe u een agentgroep opgeeft bij het in de wachtrij plaatsen van een taak.

Opmerking

Als u een agentgroep in een ACR-taak wilt gebruiken, moet u ervoor zorgen dat de pool ten minste één exemplaar bevat.

Snelle taak

Een snelle taak in de agentgroep in de wachtrij plaatsen met behulp van de az acr build opdracht en de --agent-pool parameter doorgeven:

az acr build \
    --registry myregistry \
    --agent-pool myagentpool \
    --image myimage:mytag \
    --file Dockerfile \
    https://github.com/Azure-Samples/acr-build-helloworld-node.git#main

Automatisch geactiveerde taak

Maak bijvoorbeeld een geplande taak in de agentgroep met az acr task create, waarbij de --agent-pool parameter wordt doorgegeven.

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

Voer het volgende uit az acr task runom de installatie van de taak te controleren:

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

Status van querygroep

Als u het aantal runs wilt vinden dat op dit moment is gepland in de agent pool, voert u de opdracht uit az acr agentpool show.

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

Volgende stappen

Bekijk de zelfstudiecursus ACR Tasks voor meer voorbeelden van container imaging builds en onderhoud in de cloud.