Zelfstudie: Een ACR-taak uitvoeren volgens een gedefinieerd schema

In deze zelfstudie leert u hoe u een ACR-taak volgens een schema uitvoert. Plan een taak door een of meer timertriggers in te stellen. Timertriggers kunnen alleen worden gebruikt of in combinatie met andere taaktriggers.

In deze zelfstudie leert u meer over het plannen van taken en:

  • Een taak maken met een timertrigger
  • Timertriggers beheren

Het plannen van een taak is handig voor scenario's zoals de volgende:

  • Voer een containerworkload uit voor geplande onderhoudsbewerkingen. Voer bijvoorbeeld een container-app uit om overbodige installatiekopieën uit het register te verwijderen.
  • Voer een reeks tests uit op een productie-installatiekopieën tijdens de werkdag als onderdeel van uw livesitebewaking.

Vereisten

Over het plannen van een taak

  • Trigger met cron-expressie: de timertrigger voor een taak maakt gebruik van een cron-expressie. De expressie is een tekenreeks met vijf velden die de minuut, het uur, de dag, de maand en de dag van de week opgeven om de taak te activeren. Frequenties van maximaal één keer per minuut worden ondersteund.

    De expressie "0 12 * * Mon-Fri" activeert bijvoorbeeld op elke weekdag een taak om middag UTC. Zie de details verderop in dit artikel.

  • Meerdere timertriggers : het toevoegen van meerdere timers aan een taak is toegestaan, zolang de planningen verschillen.

    • Geef meerdere timertriggers op wanneer u de taak maakt of voeg deze later toe.
    • Geef desgewenst de triggers een naam voor eenvoudiger beheer of ACR Tasks geeft standaard triggernamen op.
    • Als timerschema's elkaar tegelijk overlappen, activeert ACR Tasks de taak op het geplande tijdstip voor elke timer.
  • Andere taaktriggers: in een door timer geactiveerde taak kunt u ook triggers inschakelen op basis van het doorvoeren van broncode of updates van basisinstallatiekopieën. Net als andere ACR-taken kunt u ook handmatig een geplande taak uitvoeren .

Een taak maken met een timertrigger

Taakopdracht

Vul eerst de volgende shell-omgevingsvariabele in met een waarde die geschikt is voor uw omgeving. Hoewel deze stap strikt genomen niet vereist is, vereenvoudigt u hiermee de uitvoering van meerregelige Azure CLI-opdrachten in deze zelfstudie. Als u de omgevingsvariabele niet vult, moet u elke waarde handmatig vervangen waar deze wordt weergegeven in de voorbeeldopdrachten.

ACR_NAME=<registry-name>        # The name of your Azure container registry

Wanneer u een taak maakt met de opdracht az acr task create , kunt u desgewenst een timertrigger toevoegen. Voeg de --schedule parameter toe en geef een cron-expressie door voor de timer.

Als eenvoudig voorbeeld wordt met de volgende taak elke dag om 21:00 UTC de hello-world installatiekopieën vanuit Microsoft Container Registry uitgevoerd. De taak wordt uitgevoerd zonder broncodecontext.

az acr task create \
  --name timertask \
  --registry $ACR_NAME \
  --cmd mcr.microsoft.com/hello-world \
  --schedule "0 21 * * *" \
  --context /dev/null

Voer de opdracht az acr task show uit om te zien dat de timertrigger is geconfigureerd. Standaard is de updatetrigger van de basisinstallatiekopieën ook ingeschakeld.

az acr task show --name timertask --registry $ACR_NAME --output table
NAME      PLATFORM    STATUS    SOURCE REPOSITORY       TRIGGERS
--------  ----------  --------  -------------------     -----------------
timertask linux       Enabled                           BASE_IMAGE, TIMER

Een eenvoudig voorbeeld van de taak die wordt uitgevoerd met broncodecontext. De volgende taak activeert het uitvoeren van de hello-world installatiekopieën vanuit Microsoft Container Registry elke dag om 21:00 UTC.

Volg de vereisten om de broncodecontext te bouwen en maak vervolgens een geplande taak met context.

az acr task create \
  --name timertask \
  --registry $ACR_NAME \
  --context https://github.com/$GIT_USER/acr-build-helloworld-node.git#master \
  --file Dockerfile \
  --image timertask:{{.Run.ID}} \
  --git-access-token $GIT_PAT \
  --schedule "0 21 * * *"

Voer de opdracht az acr task show uit om te zien dat de timertrigger is geconfigureerd. Standaard is de updatetrigger van de basisinstallatiekopieën ook ingeschakeld.

az acr task show --name timertask --registry $ACR_NAME --output table

Voer de opdracht az acr task run uit om de taak handmatig te activeren.

az acr task run --name timertask --registry $ACR_NAME

De taak activeren

Activeer de taak handmatig met az acr task run om ervoor te zorgen dat deze correct is ingesteld:

az acr task run --name timertask --registry $ACR_NAME

Als de container wordt uitgevoerd, ziet de uitvoer er ongeveer als volgt uit. De uitvoer is verkort om belangrijke stappen weer te geven

Queued a run with ID: cf2a
Waiting for an agent...
2020/11/20 21:03:36 Using acb_vol_2ca23c46-a9ac-4224-b0c6-9fde44eb42d2 as the home volume
2020/11/20 21:03:36 Creating Docker network: acb_default_network, driver: 'bridge'
[...]
2020/11/20 21:03:38 Launching container with name: acb_step_0

Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]

Voer na de geplande tijd de opdracht az acr task list-runs uit om te controleren of de timer de taak heeft geactiveerd zoals verwacht:

az acr task list-runs --name timertask --registry $ACR_NAME --output table

Wanneer de timer is geslaagd, ziet de uitvoer er ongeveer als volgt uit:

RUN ID    TASK       PLATFORM    STATUS     TRIGGER    STARTED               DURATION
--------  ---------  ----------  ---------  ---------  --------------------  ----------
ca15      timertask  linux       Succeeded  Timer      2020-11-20T21:00:23Z  00:00:06
ca14      timertask  linux       Succeeded  Manual     2020-11-20T20:53:35Z  00:00:06

Timertriggers beheren

Gebruik de az acr-taaktimeropdrachten om de timertriggers voor een ACR-taak te beheren.

Een timertrigger toevoegen of bijwerken

Nadat een taak is gemaakt, kunt u eventueel een timertrigger toevoegen met behulp van de opdracht az acr task timer add . In het volgende voorbeeld wordt een timertriggernaam timer2 toegevoegd aan timertask die eerder is gemaakt. Deze timer activeert de taak elke dag om 10:30 UTC.

az acr task timer add \
  --name timertask \
  --registry $ACR_NAME \
  --timer-name timer2 \
  --schedule "30 10 * * *"

Werk het schema van een bestaande trigger bij of wijzig de status ervan met behulp van de opdracht az acr task timer update . Werk bijvoorbeeld de trigger met de naam timer2 bij om de taak om 11:30 UTC te activeren:

az acr task timer update \
  --name timertask \
  --registry $ACR_NAME \
  --timer-name timer2 \
  --schedule "30 11 * * *"

Timertriggers weergeven

De opdracht az acr task timer list toont de timertriggers die zijn ingesteld voor een taak:

az acr task timer list --name timertask --registry $ACR_NAME

Voorbeelduitvoer:

[
  {
    "name": "timer2",
    "schedule": "30 11 * * *",
    "status": "Enabled"
  },
  {
    "name": "t1",
    "schedule": "0 21 * * *",
    "status": "Enabled"
  }
]

Een timertrigger verwijderen

Gebruik de opdracht az acr task timer remove to remove a timer from a task. In het volgende voorbeeld wordt de timer2-trigger verwijderd uit timertask:

az acr task timer remove \
  --name timertask \
  --registry $ACR_NAME \
  --timer-name timer2

Cron-expressies

ACR Tasks maakt gebruik van de NCronTab-bibliotheek om cron-expressies te interpreteren. Ondersteunde expressies in ACR Tasks hebben vijf vereiste velden, gescheiden door witruimte:

{minute} {hour} {day} {month} {day-of-week}

De tijdzone die wordt gebruikt met de cron-expressies is Coordinated Universal Time (UTC). Uren hebben een indeling van 24 uur.

Notitie

ACR Tasks biedt geen ondersteuning voor het {second} of {year} veld in cron-expressies. Als u een cron-expressie kopieert die in een ander systeem wordt gebruikt, moet u deze velden verwijderen als deze worden gebruikt.

Elk veld kan een van de volgende typen waarden hebben:

Type Opmerking Wanneer geactiveerd
Een specifieke waarde "5 * * * *" elk uur om 5 minuten voorbij het uur
Alle waarden (*) "* 5 * * *" elke minuut van het uur vanaf 5:00 UTC (60 keer per dag)
Een bereik (- operator) "0 1-3 * * *" 3 keer per dag, om 1:00, 2:00 en 3:00 UTC
Een set waarden (, operator) "20,30,40 * * * *" 3 keer per uur, bij 20 minuten, 30 minuten en 40 minuten voorbij het uur
Een intervalwaarde (/ operator) "*/10 * * * *" 6 keer per uur, bij 10 minuten, 20 minuten, enzovoort, afgelopen het uur

Als u maanden of dagen wilt opgeven, kunt u numerieke waarden, namen of afkortingen van namen gebruiken:

  • Voor dagen zijn de numerieke waarden 0 tot en met 6, waarbij 0 voor zondag staat.
  • De namen zijn in het Engels. Bijvoorbeeld: Monday, January.
  • Namen zijn niet hoofdlettergevoelig.
  • Namen kunnen worden afgekort. Drie letters is de aanbevolen lengte voor afkortingen. Bijvoorbeeld: Mon, Jan.

Voorbeelden van Cron

Opmerking Wanneer geactiveerd
"*/5 * * * *" eenmaal om de vijf minuten
"0 * * * *" eenmaal bovenaan elk uur
"0 */2 * * *" eenmaal om de twee uur
"0 9-17 * * *" eenmaal per uur van 9:00 tot 17:00 UTC
"30 9 * * *" om 9:30 UTC elke dag
"30 9 * * 1-5" om 9:30 UTC elke weekdag
"30 9 * Jan Mon" om 9:30 UTC elke maandag in januari

Resources opschonen

Als u alle resources wilt verwijderen die u in deze reeks zelfstudies hebt gemaakt, inclusief het containerregister of de registers, het containerexemplaren, de sleutelkluis en de service-principal, voert u de volgende opdrachten uit:

az group delete --resource-group $RES_GROUP
az ad sp delete --id http://$ACR_NAME-pull

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u Azure Container Registry-taken maakt die automatisch worden geactiveerd door een timer.

Zie Automatisch installatiekopieën opschonen uit een Azure-containerregister voor een voorbeeld van het gebruik van een geplande taak om opslagplaatsen in een register op te schonen.

Zie andere artikelen in de zelfstudiereeks ACR Tasks voor voorbeelden van taken die worden geactiveerd door broncodedoorvoeringen of updates van basisinstallatiekopieën.