Kurz: Spuštění úlohy ACR podle definovaného plánu

V tomto kurzu se dozvíte, jak spustit úlohu ACR podle plánu. Naplánujte úlohu nastavením jednoho nebo více triggerů časovače. Triggery časovače je možné použít samostatně nebo v kombinaci s jinými triggery úloh.

V tomto kurzu se seznámíte s plánováním úkolů a:

  • Vytvoření úlohy s triggerem časovače
  • Správa triggerů časovače

Plánování úkolu je užitečné ve scénářích, jako jsou následující:

  • Spusťte úlohu kontejneru pro plánované operace údržby. Například spuštěním kontejnerizované aplikace odeberte nepotřebné image z registru.
  • V rámci monitorování živého webu spusťte sadu testů na produkční imagi během pracovního dne.

Požadavky

Plánování úkolu

  • Trigger s výrazem cron – trigger časovače pro úlohu používá výraz cron. Výraz je řetězec s pěti poli určujícími minutu, hodinu, den, měsíc a den v týdnu pro aktivaci úkolu. Podporují se frekvence až jednou za minutu.

    Výraz "0 12 * * Mon-Fri" například aktivuje úlohu v poledne (UTC) každý pracovní den. Podrobnosti najdete dále v tomto článku.

  • Více aktivačních událostí časovače – Přidání více časovačů do úlohy je povolené, pokud se plány liší.

    • Zadejte více aktivačních událostí časovače při vytváření úlohy nebo je přidejte později.
    • Volitelně pojmenujte triggery pro snadnější správu nebo ACR Tasks budou poskytovat výchozí názvy aktivačních událostí.
    • Pokud se plány časovače překrývají najednou, služba ACR Tasks aktivuje úlohu v naplánovaném čase pro každý časovač.
  • Další triggery úloh – V úloze aktivované časovačem můžete také povolit triggery na základě potvrzení zdrojového kódu nebo aktualizace základní image. Stejně jako jiné úlohy ACR můžete také ručně spustit naplánovanou úlohu.

Vytvoření úlohy s triggerem časovače

Příkaz Úkolu

Nejprve naplňte následující proměnnou prostředí s hodnotou odpovídající vašemu prostředí. Tento krok není nezbytně nutný, ale usnadní provádění víceřádkových příkazů Azure CLI v tomto kurzu. Pokud proměnnou prostředí nenaplníte, musíte ručně nahradit každou hodnotu všude, kde se zobrazí v ukázkových příkazech.

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

Když vytvoříte úlohu pomocí příkazu az acr task create , můžete volitelně přidat trigger časovače. --schedule Přidejte parametr a předejte výraz cron pro časovač.

Jako jednoduchý příklad aktivuje následující úloha spuštění hello-world image ze služby Microsoft Container Registry každý den v 21:00 UTC. Úloha se spustí bez kontextu zdrojového kódu.

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

Spuštěním příkazu az acr task show zjistěte, jestli je trigger časovače nakonfigurovaný. Ve výchozím nastavení je povolená také aktivační událost aktualizace základní image.

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

Jednoduchý příklad úlohy spuštěné s kontextem zdrojového kódu. Následující úloha aktivuje spuštění hello-world image ze služby Microsoft Container Registry každý den v 21:00 UTC.

Podle požadavků sestavte kontext zdrojového kódu a pak vytvořte naplánovanou úlohu s kontextem.

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 * * *"

Spuštěním příkazu az acr task show zjistěte, jestli je trigger časovače nakonfigurovaný. Ve výchozím nastavení je povolená také aktivační událost aktualizace základní image.

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

Spuštěním příkazu az acr task run aktivujte úlohu ručně.

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

Aktivace úlohy

Úlohu aktivujte ručně spuštěním příkazu az acr task , abyste měli jistotu, že je správně nastavená:

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

Pokud se kontejner úspěšně spustí, bude výstup podobný následujícímu. Výstup je zhuštěný tak, aby zobrazoval klíčové kroky.

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.
[...]

Po naplánovaném čase spusťte příkaz az acr task list-run a ověřte, že časovač aktivoval úlohu podle očekávání:

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

Pokud je časovač úspěšný, výstup se podobá následujícímu:

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

Správa triggerů časovače

Pomocí příkazů časovače úloh az acr můžete spravovat triggery časovače pro úlohu ACR.

Přidání nebo aktualizace triggeru časovače

Po vytvoření úlohy volitelně přidejte trigger časovače pomocí příkazu az acr task timer add . Následující příklad přidá do timertask dříve vytvořeného časovače název triggeru časovače 2. Tento časovač aktivuje úlohu každý den v 10:30 UTC.

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

Pomocí příkazu az acr task timer update aktualizujte plán existujícího triggeru nebo změňte jeho stav. Například aktualizujte trigger s názvem časovač2 tak, aby aktivoval úlohu v 11:30 UTC:

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

Aktivační události časovače seznamu

Příkaz az acr task timer list zobrazuje triggery časovače nastavené pro úlohu:

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

Příklad výstupu:

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

Odebrání triggeru časovače

K odebrání triggeru časovače z úlohy použijte příkaz az acr task timer. Následující příklad odebere trigger časovače2 z timertask:

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

Výrazy Cron

ACR Tasks používá knihovnu NCronTab k interpretaci výrazů cron. Podporované výrazy v ACR Tasks mají pět povinných polí oddělených prázdným znakem:

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

Časové pásmo používané s výrazy cron je koordinovaný univerzální čas (UTC). Hodiny jsou ve formátu 24 hodin.

Poznámka:

ACR Tasks nepodporuje {second} pole ve {year} výrazech cron. Pokud zkopírujete výraz cron použitý v jiném systému, nezapomeňte tato pole odebrat, pokud jsou použita.

Každé pole může mít jeden z následujících typů hodnot:

Typ Příklad Při aktivaci
Konkrétní hodnota "5 * * * *" každou hodinu za 5 minut po hodině
Všechny hodnoty (*) "* 5 * * *" každou minutu hodiny začínající 5:00 UTC (60krát denně)
Oblast (- operátor) "0 1-3 * * *" 3krát denně, v 1:00, 2:00 a 3:00 UTC
Množina hodnot (, operátor) "20,30,40 * * * *" 3krát za hodinu, v 20 minutách, 30 minutách a 40 minutách za hodinu
Hodnota intervalu (/ operátor) "*/10 * * * *" 6krát za hodinu, v 10 minutách, 20 minutách atd. za hodinu

Pokud chcete zadat měsíce nebo dny, můžete použít číselné hodnoty, názvy nebo zkratky názvů:

  • Pro dny jsou číselné hodnoty 0 až 6, kde 0 začíná v neděli.
  • Názvy jsou v angličtině. Příklad: Monday, January.
  • Názvy nerozlišují malá a velká písmena.
  • Názvy mohou být zkráceny. Tři písmena jsou doporučená délka zkratky. Příklad: Mon, Jan.

Příklady Cronu

Příklad Při aktivaci
"*/5 * * * *" každých pět minut
"0 * * * *" jednou v horní části každé hodiny
"0 */2 * * *" jednou za dvě hodiny
"0 9-17 * * *" jednou za hodinu od 9:00 do 17:00 UTC
"30 9 * * *" v 9:30 UTC každý den
"30 9 * * 1-5" v 9:30 UTC každý pracovní den
"30 9 * Jan Mon" v 9:30 UTC každé pondělí v lednu

Vyčištění prostředků

Pokud chcete odebrat všechny prostředky, které jste vytvořili v této sérii kurzů, včetně registru kontejneru nebo registrů, instance kontejneru, trezoru klíčů a instančního objektu, zadejte následující příkazy:

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

Další kroky

V tomto kurzu jste zjistili, jak vytvořit úlohy služby Azure Container Registry, které se automaticky aktivují časovačem.

Příklad použití naplánované úlohy k vyčištění úložišť v registru najdete v tématu Automatické vymazání imagí z registru kontejneru Azure.

Příklady úloh aktivovaných potvrzeními zdrojového kódu nebo aktualizacemi základní image najdete v dalších článcích v sérii kurzů ACR Tasks.