Självstudie: Köra en ACR-uppgift enligt ett definierat schema
Den här självstudien visar hur du kör en ACR-uppgift enligt ett schema. Schemalägg en aktivitet genom att konfigurera en eller flera timerutlösare. Timerutlösare kan användas ensamt eller i kombination med andra aktivitetsutlösare.
I den här självstudien lär du dig mer om schemaläggning av uppgifter och:
- Skapa en uppgift med en timerutlösare
- Hantera timerutlösare
Schemaläggning av en uppgift är användbart för scenarier som följande:
- Kör en containerarbetsbelastning för schemalagda underhållsåtgärder. Kör till exempel en containerbaserad app för att ta bort onödiga avbildningar från registret.
- Kör en uppsättning tester på en produktionsbild under arbetsdagen som en del av övervakningen av din live-plats.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Om schemaläggning av en aktivitet
Utlösare med cron-uttryck – Timerutlösaren för en uppgift använder ett cron-uttryck. Uttrycket är en sträng med fem fält som anger minut, timme, dag, månad och veckodag för att utlösa aktiviteten. Frekvenser på upp till en gång per minut stöds.
Uttrycket
"0 12 * * Mon-Fri"
utlöser till exempel en aktivitet kl. 12.00 UTC på varje veckodag. Mer information finns senare i den här artikeln.Flera timerutlösare – Det är tillåtet att lägga till flera timers i en aktivitet, så länge schemana skiljer sig åt.
- Ange flera timerutlösare när du skapar uppgiften eller lägg till dem senare.
- Du kan också ge utlösarna ett namn för enklare hantering, eller så ger ACR Tasks standardnamn för utlösare.
- Om tidsinställda scheman överlappar åt gången utlöser ACR Tasks aktiviteten vid den schemalagda tiden för varje timer.
Andra aktivitetsutlösare – I en tidsinställd aktivitet kan du även aktivera utlösare baserat på incheckning av källkod eller uppdateringar av basavbildningar. Precis som andra ACR-uppgifter kan du också köra en schemalagd aktivitet manuellt.
Skapa en uppgift med en timerutlösare
Aktivitetskommando
Fyll först i följande gränssnittsmiljövariabel med ett värde som är lämpligt för din miljö. Det här steget är inte obligatoriskt, men det gör det lite enklare att köra de flerradiga Azure CLI-kommandona i den här självstudien. Om du inte fyller i miljövariabeln måste du manuellt ersätta varje värde var det än visas i exempelkommandona.
ACR_NAME=<registry-name> # The name of your Azure container registry
När du skapar en uppgift med kommandot az acr task create kan du lägga till en timerutlösare. Lägg till parametern --schedule
och skicka ett cron-uttryck för timern.
Som ett enkelt exempel utlöser följande uppgift körning av avbildningen hello-world
från Microsoft Container Registry varje dag kl. 21:00 UTC. Uppgiften körs utan källkodskontext.
az acr task create \
--name timertask \
--registry $ACR_NAME \
--cmd mcr.microsoft.com/hello-world \
--schedule "0 21 * * *" \
--context /dev/null
Kör kommandot az acr task show för att se att timerutlösaren är konfigurerad. Som standard är även utlösaren för basavbildningsuppdatering aktiverad.
az acr task show --name timertask --registry $ACR_NAME --output table
NAME PLATFORM STATUS SOURCE REPOSITORY TRIGGERS
-------- ---------- -------- ------------------- -----------------
timertask linux Enabled BASE_IMAGE, TIMER
Ett enkelt exempel på uppgiften som körs med källkodskontext. Följande uppgift utlöser körning av avbildningen hello-world
från Microsoft Container Registry varje dag kl. 21:00 UTC.
Följ kraven för att skapa källkodskontexten och skapa sedan en schemalagd aktivitet med kontext.
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 * * *"
Kör kommandot az acr task show för att se att timerutlösaren är konfigurerad. Som standard är även utlösaren för basavbildningsuppdatering aktiverad.
az acr task show --name timertask --registry $ACR_NAME --output table
Kör kommandot az acr task run för att utlösa aktiviteten manuellt.
az acr task run --name timertask --registry $ACR_NAME
Utlös uppgiften
Utlös aktiviteten manuellt med az acr task run för att säkerställa att den har konfigurerats korrekt:
az acr task run --name timertask --registry $ACR_NAME
Om containern körs korrekt liknar utdata följande. Utdata komprimeras för att visa viktiga steg
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.
[...]
Efter den schemalagda tiden kör du kommandot az acr task list-runs för att kontrollera att timern utlöste uppgiften som förväntat:
az acr task list-runs --name timertask --registry $ACR_NAME --output table
När timern lyckas liknar utdata följande:
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
Hantera timerutlösare
Använd kommandona az acr task timer för att hantera timerutlösare för en ACR-uppgift.
Lägga till eller uppdatera en timerutlösare
När en aktivitet har skapats kan du lägga till en timerutlösare med hjälp av kommandot az acr task timer add . I följande exempel läggs timerutlösarens namn timer2 till timertask som skapades tidigare. Den här timern utlöser uppgiften varje dag kl. 10:30 UTC.
az acr task timer add \
--name timertask \
--registry $ACR_NAME \
--timer-name timer2 \
--schedule "30 10 * * *"
Uppdatera schemat för en befintlig utlösare eller ändra dess status med hjälp av kommandot az acr task timer update . Uppdatera till exempel utlösaren med namnet timer2 för att utlösa aktiviteten kl. 11:30 UTC:
az acr task timer update \
--name timertask \
--registry $ACR_NAME \
--timer-name timer2 \
--schedule "30 11 * * *"
Lista timerutlösare
Kommandot az acr task timer list visar de timerutlösare som har konfigurerats för en aktivitet:
az acr task timer list --name timertask --registry $ACR_NAME
Exempel på utdata>
[
{
"name": "timer2",
"schedule": "30 11 * * *",
"status": "Enabled"
},
{
"name": "t1",
"schedule": "0 21 * * *",
"status": "Enabled"
}
]
Ta bort en timerutlösare
Använd kommandot az acr task timer remove för att ta bort en timerutlösare från en aktivitet. I följande exempel tar du bort timer2-utlösaren från timertask:
az acr task timer remove \
--name timertask \
--registry $ACR_NAME \
--timer-name timer2
Cron-uttryck
ACR Tasks använder biblioteket NCronTab för att tolka cron-uttryck. Uttryck som stöds i ACR Tasks har fem obligatoriska fält avgränsade med blanksteg:
{minute} {hour} {day} {month} {day-of-week}
Tidszonen som används med cron-uttrycken är Coordinated Universal Time (UTC). Timmarna är i 24-timmarsformat.
Kommentar
ACR Tasks stöder {second}
inte fältet eller {year}
i cron-uttryck. Om du kopierar ett cron-uttryck som används i ett annat system måste du ta bort fälten om de används.
Varje fält kan ha någon av följande typer av värden:
Typ | Exempel | När den utlöses |
---|---|---|
Ett specifikt värde | "5 * * * *" |
varje timme vid 5 minuter efter timmen |
Alla värden (* ) |
"* 5 * * *" |
varje minut i timmen med början 5:00 UTC (60 gånger om dagen) |
Ett intervall (- operator) |
"0 1-3 * * *" |
3 gånger per dag, kl. 1:00, 2:00 och 3:00 UTC |
En uppsättning värden (, operator) |
"20,30,40 * * * *" |
3 gånger per timme, vid 20 minuter, 30 minuter och 40 minuter efter timmen |
Ett intervallvärde (/ operator) |
"*/10 * * * *" |
6 gånger per timme, vid 10 minuter, 20 minuter och så vidare, efter timmen |
Om du vill ange månader eller dagar kan du använda numeriska värden, namn eller förkortningar av namn:
- För dagar är de numeriska värdena 0 till 6, där 0 börjar med söndag.
- Namnen är på engelska. Exempel:
Monday
,January
. - Namn är skiftlägesokänsliga.
- Namn kan förkortas. Vi rekommenderar att du använder tre bokstäver för förkortningar. Exempel:
Mon
,Jan
.
Cron-exempel
Exempel | När den utlöses |
---|---|
"*/5 * * * *" |
en gång var femte minut |
"0 * * * *" |
en gång högst upp i varje timme |
"0 */2 * * *" |
en gång varannan timme |
"0 9-17 * * *" |
en gång i timmen från 9:00 till 17:00 UTC |
"30 9 * * *" |
kl. 9:30 UTC varje dag |
"30 9 * * 1-5" |
kl. 9:30 UTC varje veckodag |
"30 9 * Jan Mon" |
kl. 9:30 UTC varje måndag i januari |
Rensa resurser
Om du vill ta bort alla resurser som du har skapat i den här självstudieserien, inklusive containerregistret eller -register, containerinstansen, nyckelvalvet och tjänstens huvudnamn, utfärdar du följande kommandon:
az group delete --resource-group $RES_GROUP
az ad sp delete --id http://$ACR_NAME-pull
Nästa steg
I den här självstudien har du lärt dig hur du skapar Azure Container Registry-uppgifter som utlöses automatiskt av en timer.
Ett exempel på hur du använder en schemalagd uppgift för att rensa lagringsplatser i ett register finns i Rensa avbildningar automatiskt från ett Azure-containerregister.
Exempel på uppgifter som utlöses av incheckningar av källkod eller basavbildningsuppdateringar finns i andra artiklar i självstudieserien ACR Tasks.