Een ACR-taak uitvoeren op een toegewezen agentpool
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 servicelaag Premium-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, 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. Open een ondersteuningsaanvraag voor extra toewijzing.
Vereisten
- 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.
Poollagen
Agentgroeplagen bieden de volgende resources per exemplaar in de pool.
Laag | Type | CPU | Geheugen (GB) |
---|---|---|---|
S1 | standard | 2 | 3 |
S2 | standard | 4 | 8 |
S3 | standard | 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 az config uit te voeren:
az config set defaults.acr=<registryName>
In de volgende voorbeelden wordt ervan uitgegaan dat u het standaardregister 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 opdracht az acr agentpool create . In het volgende voorbeeld wordt een laag S2-pool (4 CPU/exemplaar) gemaakt. De pool bevat standaard 1 exemplaar.
az acr agentpool create \
--registry MyRegistry \
--name myagentpool \
--tier S2
Notitie
Het maken van een agentpool en andere poolbeheerbewerkingen duurt enkele minuten.
Pool schalen
Schaal de poolgrootte omhoog of omlaag met de opdracht az acr agentpool update . In het volgende voorbeeld wordt de pool geschaald naar 2 exemplaren. U kunt schalen naar 0 exemplaren.
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 | Used | Opmerkingen |
---|---|---|---|---|---|---|---|
Uitgaand | TCP | VirtualNetwork | Alle | AzureKeyVault | 443 | Standaardinstelling | |
Uitgaand | TCP | VirtualNetwork | Alle | Storage | 443 | Standaardinstelling | |
Uitgaand | TCP | VirtualNetwork | Alle | EventHub | 443 | Standaardinstelling | |
Uitgaand | TCP | VirtualNetwork | Alle | AzureActiveDirectory | 443 | Standaardinstelling | |
Uitgaand | TCP | VirtualNetwork | Alle | AzureMonitor | 443,12000 | Standaardinstelling | Poort 12000 is een unieke poort die wordt gebruikt voor diagnostische gegevens |
Notitie
Als voor uw taken extra resources van het openbare internet nodig zijn, voegt u de bijbehorende regels toe. Er zijn bijvoorbeeld aanvullende regels nodig om een Docker-buildtaak uit te voeren waarmee de basisinstallatiekopieën uit Docker Hub worden opgehaald of 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 verleent de agentgroep toegang tot de serviceafhankelijkheden, terwijl de netwerkpostuur veilig 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 een extra stap verder dan het inschakelen van service-eindpunten.
Meer informatie over service-eindpunten wordt hier beschreven.
De volgende service-eindpunten zijn minimaal vereist
- Microsoft.AzureActiveDirectory
- Microsoft.ContainerRegistry
- Microsoft.EventHub
- Microsoft.KeyVault
- Microsoft.Storage (of de bijbehorende opslagregio's waarbij rekening wordt gehouden met geo-replicatie)
Notitie
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 niet helpen bij het volledig oplossen van eventuele problemen, dus het is belangrijk dat de netwerkbeheerder rekening houdt met dit bij het plannen van de netwerkconfiguratie.
Het is ook belangrijk om te weten dat alle ACR-taken vooraf in de cache geplaatste installatiekopieën bevatten voor enkele van de meest voorkomende gebruiksvoorbeelden. Taken worden slechts één versie tegelijk in de cache opgeslagen, wat betekent dat als de volledige verwijzing naar de gelabelde installatiekopie wordt gebruikt, de buildagent probeert de installatiekopie op te halen. Een veelvoorkomende use-case is cmd: mcr.microsoft.com/acr/acr-cli:<tag>
bijvoorbeeld . De vooraf in de cache geplaatste 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 bovenstaande voorbeeld zou worden mcr.microsoft.com. Dezelfde regels zijn van toepassing op elk ander extern openbaar register (docker.io, quay.io, ghcr.io, enzovoort).
Pool maken in VNet
In het volgende voorbeeld wordt een agentgroep gemaakt in het subnetsubnet van het myvnet-netwerk:
# 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 in agentgroep
In de volgende voorbeelden ziet u hoe u een agentgroep opgeeft bij het in de wachtrij plaatsen van een taak.
Notitie
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 opdracht az acr build 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 az acr task run uit om de installatie van de taak te controleren:
az acr task run \
--registry MyRegistry \
--name mytask
Status van querygroep
Voer az acr agentpool show uit om het aantal uitvoeringen te vinden dat momenteel is gepland in de agentgroep.
az acr agentpool show \
--registry MyRegistry \
--name myagentpool \
--queue-count
Volgende stappen
Bekijk de zelfstudiereeks ACR Tasks voor meer voorbeelden van builds en onderhoud van containerinstallatiekopieën in de cloud.