Esercitazione: Eseguire un'attività 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 timer. I trigger 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:

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

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

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

Prerequisiti

Informazioni sulla pianificazione di un'attività

  • Trigger con espressione cron: il trigger 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 per attivare l'attività. Sono supportate frequenze fino a una volta al minuto.

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

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

    • Specificare più trigger timer quando si crea l'attività o aggiungerli in un secondo momento.
    • Facoltativamente, denominare i trigger per una gestione più semplice o Attività registro Azure Container fornirà nomi di trigger predefiniti.
    • Se le pianificazioni timer si sovrappongono alla volta, Attività 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 i trigger in base agli aggiornamenti delle immagini di base o commit del codice sorgente. Analogamente ad altre attività del Registro Azure Container, è anche possibile eseguire manualmente un'attività pianificata.

Creare un'attività con un trigger 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 popola la variabile di ambiente, è necessario sostituire manualmente ogni valore ovunque venga visualizzato 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 timer. Aggiungere il --schedule parametro e passare un'espressione cron per il timer.

Come esempio semplice, 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

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 Azure Container 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 i trigger timer

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

Aggiungere o aggiornare un trigger timer

Dopo aver creato un'attività, aggiungere facoltativamente un trigger timer usando il comando az acr task timer add . Nell'esempio seguente viene aggiunto un nome di trigger timer2 a 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 i trigger timer

Il comando az acr task timer list mostra i trigger 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 timer

Usare il comando az acr task timer remove per rimuovere un trigger 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 NCronTab per interpretare le espressioni cron. Le espressioni supportate nelle attività del Registro Azure Container includono 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). Le ore sono in formato 24 ore.

Nota

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

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

Type Esempio Quando viene attivato
Valore specifico "5 * * * *" ogni ora a 5 minuti oltre l'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, a 20 minuti, 30 minuti e 40 minuti oltre l'ora
Valore di intervallo (operatore /) "*/10 * * * *" 6 volte all'ora, a 10 minuti, 20 minuti e così via, oltre 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. La lunghezza consigliata per le abbreviazioni è tre lettere. Ad esempio: Mon, Jan.

Esempi di 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 ogni lunedì nel mese di gennaio

Pulire le risorse

Per rimuovere tutte le risorse create in questa serie di esercitazioni, inclusi il registro contenitori o i registri, 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 Registro Azure Container attività attivate automaticamente da un timer.

Per un esempio di uso di un'attività pianificata per pulire i repository in un registro, vedere Eliminare automaticamente le immagini da un Registro Azure Container.

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