Esercitazione: eseguire un'attività del Registro Azure Container in base a una pianificazione definita

Questa esercitazione illustra come eseguire un’attività del Registro Azure Container in base a una pianificazione. Pianificare un'attività configurando uno o più trigger con timer. I trigger con timer possono essere usati da soli o in combinazione con altri trigger di attività.

In questa esercitazione vengono fornite informazioni sulla pianificazione delle attività e su come:

  • Creare un'attività con un trigger con timer
  • Gestire trigger con timer

La pianificazione di un'attività è utile per scenari come il seguente:

  • Eseguire un carico di lavoro del contenitore per operazioni di manutenzione pianificate. Ad esempio, eseguire un'app in contenitori per rimuovere immagini non richieste dal registro.
  • Eseguire un set di test in un'immagine di produzione durante la giornata lavorativa come parte del monitoraggio del proprio sito live.

Prerequisiti

Informazioni sulla pianificazione di un'attività

  • Trigger con espressione cron: il trigger con timer per un'attività usa un'espressione cron. L'espressione è una stringa con cinque campi che specificano il minuto, l'ora, il giorno, il mese e il giorno della settimana in cui attivare l'attività. Sono supportate frequenze fino a un limite di una al minuto.

    Ad esempio, l'espressione "0 12 * * Mon-Fri" attiva un'attività a mezzogiorno UTC di ogni giorno feriale. Vedere dettagli più avanti in questo articolo.

  • Trigger con timer multipli: l'aggiunta di più timer a un'attività è consentita, purché le pianificazioni differiscano.

    • Specificare più trigger con timer quando si crea l'attività o aggiungerli in un secondo momento.
    • Facoltativamente, denominare i trigger per semplificarne la gestione, o Attività del Registro Azure Container fornirà nomi di trigger predefiniti.
    • Se le pianificazioni con timer si sovrappongono a un orario, Attività del Registro Azure Container attiva l'attività all'ora pianificata per ogni timer.
  • Altri trigger di attività: in un'attività attivata da timer è anche possibile abilitare trigger in base al commit del codice sorgente o ad aggiornamenti delle immagini di base. Analogamente ad altre attività del Registro Azure Container, è anche possibile eseguire manualmente un'attività pianificata.

Creare un'attività con un trigger con timer

Comando dell'attività

Prima di tutto, popolare la variabile di ambiente shell seguente con un valore appropriato per l'ambiente. Questo passaggio non è obbligatorio, ma semplifica in parte l'esecuzione dei comandi su più righe dell'interfaccia della riga di comando di Azure. Se non si popolano la variabile di ambiente, sarà necessario sostituire manualmente ogni valore in ogni occorrenza nei comandi di esempio.

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

Quando si crea un'attività con il comando az acr task create, è possibile aggiungere facoltativamente un trigger con timer. Aggiungere il parametro --schedule e passare un'espressione cron per il timer.

Per un semplice esempio, l'attività seguente attiva l'esecuzione dell'immagine hello-world dal Registro Contenitori di Microsoft ogni giorno alle 21:00 UTC. L'attività viene eseguita senza un contesto di codice sorgente.

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

Eseguire il comando az acr task show per verificare che il trigger del timer sia configurato. Per impostazione predefinita, è abilitato anche il trigger di aggiornamento dell'immagine di base.

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

Ecco inoltre un semplice esempio dell'attività in esecuzione con il contesto del codice sorgente. L'attività seguente attiva l'esecuzione dell'immagine hello-world dal Registro Contenitori di Microsoft ogni giorno alle 21:00 UTC.

Seguire i Prerequisiti per compilare il contesto del codice sorgente e quindi creare un'attività pianificata con contesto.

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

Eseguire il comando az acr task show per verificare che il trigger del timer sia configurato. Per impostazione predefinita, è abilitato anche il trigger di aggiornamento dell'immagine di base.

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

Eseguire il comando az acr task run per attivare manualmente l'attività.

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

Attivare l'attività

Attivare l'attività manualmente con az acr task run per assicurarsi che sia configurata correttamente:

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

Se il contenitore viene eseguito correttamente, l'output è simile al seguente. L'output è ridotto per mostrare i passaggi principali

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

Dopo l'ora pianificata, eseguire il comando az acr task list-runs per verificare che il timer abbia attivato l'attività come previsto:

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

Quando il timer ha esito positivo, l'output è simile al seguente:

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

Gestire trigger con timer

Usare i comandi az acr task timer per gestire i trigger con timer per un'attività del Registro Azure Container.

Aggiungere o aggiornare un trigger con timer

Dopo aver creato un'attività, aggiungere facoltativamente un trigger con timer usando il comando az acr task timer add. Nell'esempio seguente viene aggiunto un nome di trigger timer2 al timertask creato in precedenza. Questo timer attiva l'attività ogni giorno alle 10:30 UTC.

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

Aggiornare la pianificazione di un trigger esistente o modificarne lo stato usando il comando az acr task timer update. Ad esempio, aggiornare il trigger denominato timer2 per attivare l'attività alle 11:30 UTC:

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

Elencare trigger con timer

Il comando az acr task timer list mostra i trigger con timer configurati per un'attività:

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

Output di esempio:

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

Rimuovere un trigger con timer

Usare il comando az acr task timer remove per rimuovere un trigger con timer da un'attività. L'esempio seguente rimuove il trigger timer2 da timertask:

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

Espressioni Cron

Attività del Registro Azure Container usa la libreria di NCronTab per interpretare le espressioni cron. Le espressioni supportate in Attività del Registro Azure Container comprendono cinque campi obbligatori separati da spazi vuoti:

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

Il fuso orario usato con le espressioni cron è Coordinated Universal Time (UTC). L’orario è in formato 24 ore.

Nota

Attività del Registro Azure Container non supporta il campo {second} o {year} nelle espressioni cron. Se si copia un'espressione cron usata in un altro sistema, assicurarsi di rimuovere tali campi se presenti.

Ogni campo può avere uno dei tipi di valori seguenti:

Type Esempio Quando viene attivato
Valore specifico "5 * * * *" 5 minuti dopo ogni ora
Tutti i valori (*) "* 5 * * *" ogni minuto dell'ora, a partire dalle 5.00 UTC (60 volte al giorno)
Intervallo (operatore -) "0 1-3 * * *" 3 volte al giorno, alle 13:00, alle 2:00 e alle 3:00 UTC
Set di valori (operatore ,) "20,30,40 * * * *" 3 volte all'ora, 20 minuti, 30 minuti e 40 minuti dopo ogni ora
Valore di intervallo (operatore /) "*/10 * * * *" 6 volte all'ora, 10 minuti, 20 minuti e così via dopo l’ora

Per specificare mesi o giorni è possibile usare valori numerici, nomi o abbreviazioni di nomi:

  • Per i giorni, i valori numerici vanno da 0 a 6, in cui 0 corrisponde alla domenica.
  • I nomi sono in inglese. Ad esempio: Monday, January.
  • Per i nomi viene fatta distinzione tra maiuscole e minuscole.
  • I nomi possono essere abbreviati. È consigliabile usare tre lettere per le abbreviazioni. Ad esempio: Mon, Jan.

Esempi Cron

Esempio Quando viene attivato
"*/5 * * * *" Una volta ogni cinque minuti
"0 * * * *" Una volta all'inizio di ogni ora
"0 */2 * * *" Una volta ogni due ore
"0 9-17 * * *" ogni ora dalle 9.00 alle 17.00 UTC
"30 9 * * *" alle 9:30 UTC ogni giorno
"30 9 * * 1-5" alle 9:30 UTC ogni giorno feriale
"30 9 * Jan Mon" alle 9:30 UTC di ogni lunedì nel mese di gennaio

Pulire le risorse

Per rimuovere tutte le risorse create in questa serie di esercitazioni, inclusi il registro o i registri di contenitori, l'istanza del contenitore, l'insieme di credenziali delle chiavi e l'entità servizio, eseguire i comandi seguenti:

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

Passaggi successivi

In questa esercitazione si è appreso come creare attività del Registro Azure Container attivate automaticamente da un timer.

Per un esempio d‘uso di un'attività pianificata volta a ripulire i repository in un registro, vedere Eliminare automaticamente le immagini da un Registro Azure Container.

Per esempi di attività attivate da commit del codice sorgente o da aggiornamenti delle immagini di base, vedere altri articoli nella serie di esercitazioni su Attività del Registro Azure Container.