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
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
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 6, waarbij 0 begint met zondag.
- De namen zijn in het Engels. Bijvoorbeeld:
Monday
,January
. - Namen zijn niet hoofdlettergevoelig.
- Namen kunnen worden afgekort. U wordt aangeraden drie letters te gebruiken 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.