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
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
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.