Freigeben über


Ausführen eines ACR Tasks mit einem dedizierten Agentpool

Richten Sie einen von Azure verwalteten VM-Pool (Agentpool) ein, um die Ausführung Ihrer Azure Container Registry-Tasks in einer dedizierten Computeumgebung zu ermöglichen. Nachdem Sie mindestens einen Pool in der Registrierung konfiguriert haben, können Sie einen Pool auswählen, um einen Task anstelle der standardmäßigen Computeumgebung des Diensts auszuführen.

Ein Agentpool bietet Folgendes:

  • Unterstützung für virtuelle Netzwerke: Weisen Sie einen Agentpool einem Azure-VNET zu, und stellen Sie so Zugriff auf Ressourcen im VNET bereit, z. B. auf eine Containerregistrierung, einen Schlüsseltresor oder auf Speicher.
  • Skalierung nach Bedarf: Erhöhen Sie die Anzahl der Instanzen in einem Agentpool für rechenintensive Aufgaben, oder skalieren Sie auf null. Die Abrechnung basiert auf der Poolzuordnung. Weitere Informationen finden Sie unter Preise.
  • Flexible Optionen: Wählen Sie unter verschiedenen Pooltarifen und Skalierungsoptionen, um die Anforderungen der Workload für den Task zu erfüllen.
  • Azure-Verwaltungs: Task-Pools werden von Azure gepatcht und verwaltet und bieten eine reservierte Zuordnung, ohne dass die einzelnen VMs verwaltet werden müssen.

Diese Funktion ist auf der Dienstebene Premium der Containerregistrierung verfügbar. Weitere Informationen zu den Tarifen des Registrierungsdiensts und zu den Einschränkungen finden Sie unter Azure Container Registry-SKUs.

Wichtig

Dieses Feature befindet sich derzeit in der Vorschauphase. Es gelten einige Einschränkungen. Vorschauversionen werden Ihnen zur Verfügung gestellt, wenn Sie die zusätzlichen Nutzungsbedingungen akzeptieren. Einige Aspekte dieses Features werden bis zur allgemeinen Verfügbarkeit unter Umständen noch geändert.

Einschränkungen der Vorschau

  • Taskagentpools unterstützen derzeit Linux-Knoten. Windows-Knoten werden zurzeit nicht unterstützt.
  • Task-Agent-Pools sind als Vorschau in den folgenden Regionen verfügbar: „USA, Westen 2“, „USA, Süden-Mitte“, „USA, Osten 2“, „USA, Osten“, „USA, Mitte“, „Europa, Westen“, „Europa, Norden“, „Kanada, Mitte“, „Asien, Osten“, „Schweiz, Norden“ „USGov, Arizona“, „USGov, Texas“ und „USGov, Virginia“.
  • Für jede Registrierung hat das standardmäßige vCPU-Kontingent (Core) für alle Standard-Agentpools den Wert 16 und den Wert 0 für isolierte Agentpools. Öffnen Sie eine Supportanfrage, um zusätzliche Zuordnungen zu erhalten.

Voraussetzungen

  • Um die in diesem Artikel beschriebenen Schritte mit der Azure CLI ausführen zu können, ist die Azure CLI-Version 2.3.1 oder höher erforderlich. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI. Alternativ können Sie Azure Cloud Shell verwenden.
  • Sollten Sie noch nicht über eine Containerregistrierung verfügen, können Sie eine Registrierung in einer Vorschauregion erstellen (Premium-Tarif erforderlich).

Pooltarife

Agentpooltarife stellen die folgenden Ressourcen pro Instanz im Pool bereit.

Tarif type CPU Arbeitsspeicher (GB)
S1 Standard 2 3
S2 Standard 4 8
S3 Standard 8 16
I6 Isoliert 64 216

Erstellen und Verwalten eines Taskagentpools

Festlegen der Standardregistrierung (optional)

Wenn Sie die folgenden Befehle der Azure CLI vereinfachen möchten, legen Sie die Standardregistrierung fest, indem Sie den Befehl az config ausführen:

az config set defaults.acr=<registryName>

In den folgenden Beispielen wird davon ausgegangen, dass Sie die Standardregistrierung festgelegt haben. Wenn dies nicht der Typ ist, übergeben Sie einen --registry <registryName>-Parameter in jedem az acr-Befehl.

Erstellen des Agentpools

Erstellen Sie einen Agentpool mithilfe des Befehls az acr agentpool create. Im folgenden Beispiel wird ein Pool mit dem Tarif S2 (4 CPUs/Instanz) erstellt. Standardmäßig enthält der Pool eine Instanz.

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

Hinweis

Das Erstellen eines Agentpools und andere Poolverwaltungsvorgänge nehmen einige Minuten in Anspruch.

Skalieren des Pools

Skalieren Sie die Poolgröße mit dem Befehl az acr agentpool update zentral hoch oder herunter. Im folgenden Beispiel wird der Pool auf zwei Instanzen skaliert. Sie können auf null Instanzen skalieren.

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

Erstellen des Pools in einem virtuellen Netzwerk

Hinzufügen von Firewallregeln

Taskagentpools benötigen Zugriff auf die folgenden Azure-Dienste. Die folgenden Firewallregeln müssen allen vorhandenen Netzwerksicherheitsgruppen oder benutzerdefinierten Routen hinzugefügt werden.

Direction Protocol `Source` Quellport Ziel Dest Port Verwendet Hinweise
Ausgehend TCP VirtualNetwork Any AzureKeyVault 443 Standard
Ausgehend TCP VirtualNetwork Beliebig Storage 443 Standard
Ausgehend TCP VirtualNetwork Beliebig EventHub 443 Standard
Ausgehend TCP VirtualNetwork Any AzureActiveDirectory 443 Standard
Ausgehend TCP VirtualNetwork Any AzureMonitor 443, 12000 Standard Port 12000 ist ein eindeutiger Port, der für die Diagnose verwendet wird.

Hinweis

Wenn Ihre Tasks zusätzliche Ressourcen aus dem öffentlichen Internet benötigen, fügen Sie die entsprechenden Regeln hinzu. Zusätzliche Regeln sind z. B. erforderlich, wenn Sie einen Docker-Buildtask ausführen, der die Basisimages von Docker Hub pullt oder ein NuGet-Paket wiederherstellt.

Kunden, die ihre Bereitstellungen mit MCR erstellen, können sich auf MCR/MAR-Firewallregeln beziehen.

Erweiterte Netzwerkkonfiguration

Wenn die standardmäßigen Firewall-/NSG-Regeln (Netzwerksicherheitsgruppe) als zu freizügig eingestuft werden und für ausgehende Verbindungen eine differenziertere Steuerung erforderlich ist, sollten Sie den folgenden Ansatz berücksichtigen:

  • Aktivieren Sie Dienstendpunkte im Agentpoolsubnetz. Dadurch erhält der Agentpool Zugriff auf seine Dienstabhängigkeiten, während ein sicherer Netzwerkstatus erhalten bleibt.
  • Es ist wichtig zu beachten, dass ausgehende Firewall-/NSG-Regeln weiterhin erforderlich sind. Diese Regeln erleichtern die Möglichkeit des virtuellen Netzwerks, die Quell-IP von öffentlich in privat zu ändern. Dies ist ein weiterer Schritt, der über die Aktivierung von Dienstendpunkten hinausgeht.

Weitere Informationen zu Dienstendpunkten finden Sie hier.

Die folgenden Dienstendpunkte sind mindestens erforderlich:

  • Microsoft.AzureActiveDirectory
  • Microsoft.ContainerRegistry
  • Microsoft.EventHub
  • Microsoft.KeyVault
  • Microsoft.Storage (oder die entsprechenden Speicherregionen unter Berücksichtigung der Georeplikation)

Hinweis

Derzeit ist kein Dienstendpunkt für Azure Monitor vorhanden. Wenn der ausgehende Datenverkehr für Azure Monitor nicht konfiguriert ist, kann der Agentpool keine Diagnoseprotokolle ausgeben, scheint aber möglicherweise weiterhin normal zu funktionieren. In diesem Fall kann ACR keine vollständige Problembehandlung unterstützen. Daher ist es wichtig, dass der Netzwerkadministrator dies bei der Planung der Netzwerkkonfiguration berücksichtigt.

Außerdem ist es wichtig zu beachten, dass alle ACR-Aufgaben vorab zwischengespeicherte Images für einige der gängigeren Anwendungsfälle enthalten. Aufgaben speichern jeweils nur eine einzelne Version zwischen, d. h., wenn der vollständige markierte Imageverweis verwendet wird, versucht der Build-Agent, das Image abzurufen. Ein gängiger Anwendungsfall ist z. B. cmd: mcr.microsoft.com/acr/acr-cli:<tag>. Die vorab zwischengespeicherte Version wird jedoch häufig aktualisiert. Das bedeutet, dass die tatsächliche Version auf dem Computer wahrscheinlich höher ist. In diesem Fall muss die Netzwerkkonfiguration eine Route für ausgehenden Datenverkehr an den Zielregistrierungshost konfigurieren. Im obigen Beispiel wäre dies „mcr.microsoft.com“. Dieselben Regeln gelten für alle anderen externen öffentlichen Registrierungen (docker.io, quay.io, ghcr.io usw.).

Erstellen des Pools in einem VNET

Im folgenden Beispiel wird ein Agentpool im Subnetz mysubnet des Netzwerks myvnet erstellt:

# 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

Ausführen einer Task für einen Agentpool

In den folgenden Beispielen wird veranschaulicht, wie Sie einen Agentpool angeben, wenn Sie einen Task in eine Warteschlange einreihen.

Hinweis

Um einen Agentpool in einem ACR Task zu verwenden, stellen Sie sicher, dass der Pool mindestens eine Instanz enthält.

Schnelltask

Reihen Sie einen Schnelltask für den Agentpool mit dem Befehl az acr build in die Warteschlange ein, und übergeben Sie den --agent-pool-Parameter:

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 ausgelöster Task

Erstellen Sie z. B. einen geplanten Task für den Agentpool mit az acr task create, und übergeben Sie dabei den --agent-pool-Parameter.

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

Führen Sie az acr task run aus, um das Setup des Tasks zu überprüfen:

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

Abfragen des Poolstatus

Führen Sie az acr agentpool show aus, um die Anzahl der zurzeit für den Agentpool geplanten Ausführungen zu ermitteln.

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

Nächste Schritte

Weitere Beispiele für die Erstellung und Wartung von Containerimages in der Cloud finden Sie in der Tutorialreihe zu ACR Tasks.