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
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido per 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, installare l'estensione dell'interfaccia della riga di comando di Azure al primo utilizzo. 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 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.