Automatisieren von Containerimage-Builds und Wartung mit ACR Tasks

Container bieten neue Virtualisierungsmöglichkeiten und trennen Anwendungs- und Entwicklerabhängigkeiten von Infrastruktur- und Betriebsanforderungen. Ein Aspekt, der allerdings weiterhin behandelt werden muss, ist das das Verwalten und Patchen dieser Anwendungsvirtualisierung im Laufe des Containerlebenszyklus.

Was ist ACR Tasks?

ACR Tasks ist eine Suite von Funktionen in Azure Container Registry. Sie bietet cloudbasierte Containerimageerstellung für Plattformen inklusive Linux, Windows und ARM. Außerdem kann sie Betriebssystem- und Frameworkpatching für Ihre Docker-Container automatisieren. ACR Tasks erweitert nicht nur Ihren „inneren“ Entwicklungszyklus für die Cloud mit bedarfsgesteuerten Containerimagebuilds, sondern ermöglicht auch automatisierte Builds, die durch Quellcodeupdates, Updates des Basisimages eines Containers oder Timer aktualisiert werden. Mit Triggern für Basisimageaktualisierungen können Sie z. B. Ihren Workflow für Betriebssystem- und Anwendungspatches automatisieren und so die Sicherheit von Umgebungen gewährleisten sowie die Prinzipien unveränderlicher Container einhalten.

[! WICHTIG] ACR wird vorübergehend angehalten, ACR-Aufgaben werden aus kostenlosem Azure Guthaben ausgeführt. Dies kann sich auf vorhandene Aufgabenausführungen auswirken. Wenn Probleme auftreten, öffnen Sie einen Supportfall für unser Team, um zusätzliche Anleitungen bereitzustellen. Beachten Sie, dass bestehende Kunden von dieser Pause nicht betroffen sind. Wir werden unsere Dokumentationshinweis hier aktualisieren, wenn die Pause aufgehoben wird.

Taskszenarien

ACR Tasks unterstützt verschiedene Szenarien zum Erstellen und Verwalten von Containerimages und anderen Artefakten. Weitere Informationen finden Sie in den folgenden Abschnitten dieses Artikels.

Jeder ACR Tasks-Instanz ist ein Quellcodekontext zugeordnet: der Speicherort eines Satzes von Quelldateien, der zum Erstellen eines Containerimages oder eines anderen Artefakts verwendet wird. Beispielkontexte sind ein Git-Repository oder ein lokales Dateisystem.

Tasks können auch Laufzeitvariablen nutzen, sodass Sie Taskdefinitionen wiederverwenden und Tags für Images und Artefakte standardisieren können.

Schnelltask

Der „interne“ Entwicklungszyklus, der iterative Prozess, der das Schreiben von Code sowie das Erstellen und Testen Ihrer Anwendung umfasst, bevor sie zur Quellcodeverwaltung committet wird, ist wirklich der Beginn der Lebenszyklusverwaltung des Containers.

Bevor Sie Ihre erste Zeile Code committen, kann das Feature Schnelltask von ACR Tasks eine integrierte Entwicklungsumgebung bereitstellen, indem Ihre Containerimage-Buildvorgänge in Azure ausgelagert werden. Mit Schnelltasks können Sie Ihre automatisierten Builddefinitionen überprüfen und potenzielle Probleme abfangen, bevor Sie Ihren Code committen.

Der Befehl az acr build der Azure-Befehlszeilenschnittstelle verwendet das vertraute docker build-Format. Er akzeptiert einen Kontext (Satz zu erstellender Dateien), sendet ihn an ACR Tasks und pusht das erstellte Image nach dessen Fertigstellung standardmäßig in die entsprechende Registrierung.

Eine Einführung finden Sie im Schnellstart: Erstellen und Ausführen eines Containerimages in Azure Container Registry.

ACR Tasks ist als Grundtyp für den Containerlebenszyklus konzipiert. Sie können ACR Tasks also beispielsweise in Ihre CI/CD-Lösung integrieren. Wenn Sie az login mit einem Dienstprinzipal ausführen, kann Ihre CI/CD-Lösung mithilfe von Befehlen vom Typ az acr build Imagebuildvorgänge initiieren.

Informationen zur Verwendung der Schnelltasks finden Sie im ersten ACR Tasks-Tutorial: Erstellen von Containerimages in der Cloud mit Azure Container Registry Tasks.

Tipp

Wenn Sie ein Image direkt aus dem Quellcode ohne Dockerfile-Datei erstellen und pushen möchten, nutzen Sie den az acr pack build-Befehl (Vorschau) der Azure Container Registry. Mit diesem Tool wird ein Image aus dem Quellcode der Anwendung mithilfe von Cloud Native Buildpacks erstellt und gepusht.

Auslösen des Tasks beim Update des Quellcodes

Lösen Sie einen Containerimage-Buildvorgang oder Task in mehreren Schritten aus, wenn Code in ein öffentliches oder privates Git-Repository in GitHub oder Azure DevOps committet oder ein Pull Request erstellt oder aktualisiert wird. Konfigurieren Sie z. B. einen Buildtask mithilfe des Azure CLI-Befehls az acr task create, indem Sie ein Git-Repository und optional einen Branch und eine Dockerfile-Datei angeben. Wenn Ihr Team Code im Repository aktualisiert, löst ein von ACR Tasks erstellter Webhook einen Buildvorgang für das im Repository definierte Containerimage aus.

ACR Tasks unterstützt die folgenden Trigger, wenn Sie ein Git-Repository als Taskkontext festlegen:

Trigger Standardmäßig aktiviert
Commit Ja
Pull Request Nein

Hinweis

Derzeit unterstützt ACR Tasks keine Anforderungstrigger für Commit- oder Pullvorgänge in GitHub Enterprise-Repositorys.

Informationen zum Auslösen von Buildvorgängen nach dem Committen von Quellcode finden Sie im zweiten ACR Tasks-Tutorial: Automatisieren von Buildvorgängen für Containerimages mit Azure Container Registry Tasks.

Persönliches Zugriffstoken

Um den Trigger für die Quellcodeaktualisierung zu konfigurieren, stellen Sie dem Task ein persönliches Zugriffstoken (Personal Access Token, PAT) zur Verfügung, um den Webhook im öffentlichen oder privaten GitHub- oder Azure DevOps-Repository festzulegen. Die erforderlichen Bereiche für das persönliche Zugriffstoken lauten:

Repositorytyp GitHub DevOps
Öffentliches Repository repo:status
public_repo
Code (Lesen)
Privates Repository Repository (Vollzugriff) Code (Lesen)

Informationen zum Erstellen eines persönlichen Zugriffstokens finden Sie in der Dokumentation zu GitHub oder Azure DevOps.

Automatisierung von Betriebssystem- und Frameworkpatching

Durch die Möglichkeit zur Erkennung von Basisimageaktualisierungen bietet ACR Tasks einen echten Mehrwert für Ihren Containererstellungsworkflow. Ein Basisimage, das ein Feature der meisten Containerimages ist, ist ein übergeordnetes Image, auf dem ein oder mehrere Anwendungsimages basieren. Basisimages enthalten in der Regel das Betriebssystem und manchmal auch Anwendungsframeworks.

Sie können einen ACR Task einrichten, um eine Abhängigkeit von einem Basisimage zu verfolgen, wenn es ein Anwendungsimage erstellt. Wenn das aktualisierte Basisimage in Ihre Registrierung gepusht oder ein Basisimage in einem öffentlichen Repository. wie Docker Hub, aktualisiert wird, kann ACR Tasks automatisch alle darauf basierenden Anwendungsimages erstellen. Die automatische Erkennung und Neuerstellung von ACR Tasks spart Zeit, die ansonsten für die manuelle Nachverfolgung und Aktualisierung der einzelnen Anwendungsimages aufgewendet werden müsste, die auf Ihr aktualisiertes Basisimage verweisen.

Erfahren Sie mehr über die Basisimageaktualisierungs-Trigger für ACR Tasks. Und erfahren Sie, wie Sie einen Imagebuild auslösen, wenn ein Basisimage per Pushvorgang in eine Containerregistrierung übertragen wird, im Tutorial Automatisieren von Buildvorgängen für Containerimages nach der Aktualisierung eines Basisimages in einer Azure-Containerregistrierung

Planen eines Tasks

Planen Sie optional einen Task, indem Sie einen oder mehrere Zeitgebertrigger einrichten, wenn Sie den Task erstellen oder aktualisieren. Das Planen eines Tasks eignet sich zum Ausführen von Containerworkloads nach einem definierten Zeitplan oder zum Ausführen von Wartungsvorgängen oder Tests für Images, die regelmäßig in Ihre Registrierung gepusht werden. Weitere Informationen finden Sie unter Ausführen einer ACR-Aufgabe nach einem definierten Zeitplan.

Mehrstufige Aufgaben

Mehrstufige Aufgaben bieten schrittbasierte Aufgabendefinition und -ausführung für Erstellen, Testen und Patchen von Containerimages in der Cloud. In einer YAML-Datei definierte Taskschritte legen einzelne Build- und Pushvorgänge für Containerimages oder andere Artefakte fest. Sie können auch die Ausführung eines oder mehrerer Container mit jedem Schritt definieren, wobei der Container als Ausführungsumgebung verwendet wird.

Beispielsweise können Sie eine mehrstufige Aufgaben erstellen, die die folgenden Vorgänge automatisiert:

  1. Erstellen eines Webanwendungsimages
  2. Ausführen des Webanwendungscontainers
  3. Erstellen eines Webanwendungs-Testimages
  4. Ausführen des Webanwendungs-Testcontainers, der Tests für den aktuell ausgeführten Anwendungscontainer durchführt
  5. Wenn die Tests erfolgreich sind: Erstellen eines Helm-Chart-Archivpakets
  6. Ausführen von helm upgrade mithilfe des neuen Helm-Chart-Archivpakets

Mit mehrstufigen Aufgaben können Sie das Erstellen, Ausführen und Testen eines Images in mehrere individuelle Schritte aufteilen, wobei Abhängigkeiten zwischen den Schritten unterstützt werden. Mit mehrstufigen Aufgaben in ACR Tasks erhalten Sie eine bessere Kontrolle über die Workflows zur Erstellung von Images, Tests, Betriebssystem- und Frameworkpatches.

Weitere Informationen zu mehrstufigen Aufgaben finden Sie unter Ausführen von mehrstufigen Build-, Test- und Patchaufgaben in ACR Tasks.

Kontextspeicherorte

Die folgende Tabelle zeigt Beispiele von unterstützten Kontextspeicherorten für ACR Tasks:

Kontextspeicherort BESCHREIBUNG Beispiel
Lokales Dateisystem Dateien in einem Verzeichnis auf dem lokalen Dateisystem. /home/user/projects/myapp
GitHub-Mainbranch Dateien im Mainbranch (oder einem anderen Standardbranch) eines öffentlichen oder privaten GitHub-Repositorys https://github.com/gituser/myapp-repo.git
GitHub-Branch Bestimmter Branch eines öffentlichen oder privaten GitHub-Repositorys https://github.com/gituser/myapp-repo.git#mybranch
GitHub-Unterordner Dateien in einem Unterordner in einem öffentlichen oder privaten GitHub-Repository. Das Beispiel zeigt die Kombination der Branch- und Unterordnerspezifikation. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
GitHub-Commit Spezifischer Commit in ein öffentliches oder privates GitHub-Repository. Das Beispiel zeigt die Kombination aus einem Commit-Hash (SHA) und einer Unterordnerspezifikation. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Azure DevOps-Unterordner Dateien in einem Unterordner in einem öffentlichen oder privaten Azure-Repository. Das Beispiel zeigt die Kombination der Branch- und Unterordnerspezifikation. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Remotetarball Dateien in einem komprimierten Archiv auf einem Remotewebserver. http://remoteserver/myapp.tar.gz
Artefakt in Containerregistrierung OCI-Artefaktdateien in einem Repository einer Containerregistrierung. oci://myregistry.azurecr.io/myartifact:mytag

Hinweis

Bei Verwendung eines Git-Repositorys als Kontext für einen Task, der durch ein Quellcodeupdate ausgelöst wird, müssen Sie ein persönliches Zugriffstoken (Personal Access Token, PAT) angeben.

Imageplattformen

ACR Tasks erstellt standardmäßig Images für das Linux-Betriebssystem und die amd64-Architektur. Geben Sie das Tag --platform an, um Windows-Images oder Linux-Images für andere Architekturen zu erstellen. Geben Sie das Betriebssystem und optional eine unterstützte Architektur im Format „Betriebssystem/Architektur“ an (z. B. --platform Linux/arm). Geben Sie bei ARM-Architekturen optional eine Variante im Format „Betriebssystem/Architektur/Variante“ an (z. B. --platform Linux/arm64/v8):

OS Aufbau
Linux amd64
ARM
arm64
386
Windows amd64

Anzeigen der Aufgabenausgabe

Bei jeder Aufgabenausführung wird eine Protokollausgabe erzeugt, die Sie überprüfen können, um festzustellen, ob die Aufgabenschritte erfolgreich ausgeführt wurden. Wenn Sie eine Aufgabe manuell auslösen, wird die Protokollausgabe für die Ausführung der Aufgabe an die Konsole gestreamt und auch für einen späteren Abruf gespeichert. Wenn ein Task automatisch ausgelöst wird, z. B. durch einen Quellcodecommit oder ein Basisimageupdate, werden die Aufgabenprotokolle nur gespeichert. Zeigen Sie die Ausführungsprotokolle im Azure-Portal an, oder verwenden Sie den Befehl az acr task logs.

Weitere Informationen finden Sie unter Anzeigen und Verwalten von Aufgabenprotokollen.

Nächste Schritte

Wenn Sie bereit sind, die Erstellung und Wartung von Containerimages in der Cloud zu automatisieren, informieren Sie sich in der ACR Tasks-Tutorialreihe.

Installieren Sie optional die Docker-Erweiterung für Visual Studio Code und die Azure-Kontoerweiterung für die Verwendung mit Ihren Azure-Containerregistrierungen. In Visual Studio Code können Sie Pull- und Pushvorgänge für Images in einer Azure-Containerregistrierung oder auch ACR Tasks ausführen.