Kurze Hintergrundaufgabe benötigt? Container Apps Job erstellen

Veröffentlicht am:

CloudTrips muss eine kurze containerisierte Aufgabe ausführen und nach Abschluss beenden. Ein Container Apps Job ist für endliche Hintergrundarbeit gedacht; im Gegensatz zu einer Container App stellt er keinen dauerhaft erreichbaren Webendpunkt bereit.

Container App → beantwortet Anfragen und kann weiterlaufen
Container Apps Job → startet, erledigt Arbeit und beendet sich
Job → wiederverwendbare Konfiguration
Ausführung → ein einzelner Lauf dieses Jobs
Replikat → Containerinstanz innerhalb einer Ausführung

Ein Job kann Manual für Arbeit bei Bedarf, Schedule für einen Cron-Zeitplan oder Event für Quellen wie Warteschlangennachrichten verwenden. Diese Reise verwendet Manual, damit eine Person, Pipeline, ein CLI-Befehl oder eine API jeden Lauf gezielt startet.

Job erstellen

Im Azure-Portal nach Container App Jobs suchen, Create auswählen und eingeben:

Subscription: CloudTrips TEST
Resource group: Create new → rg-cloudtrips-containerapps-job-test-weu
Container job name: caj-cloudtrips-task-test-weu
Region: West Europe
Container Apps environment: Create new
Environment name: cae-cloudtrips-job-test-weu
Environment type: Workload profiles
Zone redundancy: Disabled
Trigger type: Manual

Das aktuelle Portal zeigt Replica timeout, Retry, Parallelism oder Completion count während der Erstellung möglicherweise nicht an. Lasse die erzeugten Standardwerte unverändert.

Container konfigurieren

Unter Container das öffentliche Job-Beispiel von Microsoft verwenden:

Container name: main
Image source: Docker Hub or other registries
Image type: Public
Registry login server: mcr.microsoft.com
Image and tag: k8se/quickstart-jobs:latest
Workload profile: Consumption
CPU and memory: 0.25 CPU cores, 0.5 Gi

Ingress nicht aktivieren: Ein Hintergrundjob ist keine HTTP-Anwendung. Das Beispiel wartet einige Sekunden, schreibt Meldungen in die Standardausgabe und beendet sich. In einem echten Job würde dieses Image durch einen Container ersetzt, der etwa eine Datei verarbeitet, einen Bericht erzeugt, eine Migration ausführt oder Warteschlangenarbeit erledigt.

Der Container wird nicht als separate Container-App-Ressource erstellt. Er ist Teil des Job-Templates. Jede Jobausführung startet ein Replikat mit diesem main-Container; wenn dessen Prozess erfolgreich endet, ist das Replikat abgeschlossen.

Review + create > Create und danach Go to resource auswählen.

Übersicht des Container Apps Jobs mit Jobname, Environment und manuellem Triggertyp

Ausführungskonfiguration prüfen

Prüfe nach der Erstellung Settings > Configuration, falls dein Portal diese Felder anzeigt. Andernfalls lies die wirksamen Werte aus:

az containerapp job show \
  --name caj-cloudtrips-task-test-weu \
  --resource-group rg-cloudtrips-containerapps-job-test-weu \
  --query "properties.configuration.{TriggerType:triggerType,ReplicaTimeout:replicaTimeout,ReplicaRetryLimit:replicaRetryLimit,Parallelism:manualTriggerConfig.parallelism,CompletionCount:manualTriggerConfig.replicaCompletionCount}" \
  --output yaml

Diese Werte steuern eine Ausführung und keinen dauerhaft laufenden Dienst:

Replica timeout → maximale Laufzeit eines Replikats
Replica retry limit → Ersatzversuche nach einem Fehler
Parallelism → gleichzeitig arbeitende Replikate
Completion count → erfolgreiche Replikate für den Abschluss

Die erzeugten Werte können von beispielhaften Standardwerten abweichen; für diesen kurzen Beispieljob ist keine Änderung erforderlich.

Terminal mit Trigger, Timeout, Retry, Parallelism und Completion-Konfiguration des Container Apps Jobs

Ausführung starten

Das Erstellen eines manuellen Jobs speichert seine Konfiguration, führt ihn aber noch nicht aus. Öffne Overview des Jobs und wähle in der oberen Aktionsleiste Run now. Öffne nach Annahme der Anforderung Monitoring > Execution history und wähle Refresh.

Die Ausführung durchläuft normalerweise:

Pending → Running → Succeeded

Succeeded bedeutet, dass die erforderliche Anzahl erfolgreicher Abschlüsse mit Exitcode 0 erreicht wurde. Failed bedeutet, dass der Container fehlerhaft beendet wurde, ein Timeout erreicht oder alle Wiederholungen verbraucht wurden.

Ausführungsverlauf mit einer manuell gestarteten und erfolgreichen Jobausführung

Ausgabe prüfen

Die Ausführung und danach View logs auswählen. Die Beispielausgabe sollte zeigen, dass der Job gestartet, kurz gewartet und beendet wurde. Da Protokolle asynchron gesammelt werden, können sie erst nach ein oder zwei Minuten erscheinen.

Protokolle der Container-Apps-Jobausführung mit erfolgreichem Abschluss der Beispielaufgabe

Den Job erneut starten, um zu prüfen, dass Azure eine neue Ausführung erstellt und nicht die alte neu startet. Jede Ausführung besitzt einen eigenen Namen, Status, Start- und Endzeitpunkt, Replikate und Protokolle.

Optional eine weitere Ausführung über die CLI starten:

az containerapp job start \
  --name caj-cloudtrips-task-test-weu \
  --resource-group rg-cloudtrips-containerapps-job-test-weu

Alle Ausführungen auflisten:

az containerapp job execution list \
  --name caj-cloudtrips-task-test-weu \
  --resource-group rg-cloudtrips-containerapps-job-test-weu \
  --query "[].{Execution:name,Status:properties.status,Started:properties.startTime,Finished:properties.endTime}" \
  --output table

Terminal mit mehreren Container-Apps-Jobausführungen sowie Status, Start- und Endzeit

Beim Consumption-Workloadprofil werden Ressourcen während der Ausführungen berechnet. Zusätzlich können Kosten für die Protokollaufnahme entstehen; es gibt kein inaktives Job-Replikat, das dauerhaft laufen muss.

Bereinigen

Die eigenständige Ressourcengruppe löschen, um Job, Umgebung und Überwachungsressourcen zu entfernen:

az group delete \
  --name rg-cloudtrips-containerapps-job-test-weu \
  --yes

Prüfen, ob sie entfernt wurde:

az group exists --name rg-cloudtrips-containerapps-job-test-weu

Erwartetes Ergebnis: false.