Automatizzare le compilazioni e la manutenzione delle immagini del contenitore con Attività del Registro Azure Container

I contenitori offrono nuovi livelli di virtualizzazione, isolando le dipendenze di sviluppo e delle applicazioni dai requisiti operativi e dell'infrastruttura. Ciò che rimane, tuttavia, è la necessità di risolvere il modo in cui questa virtualizzazione delle applicazioni viene gestita e con patch nel ciclo di vita del contenitore.

Informazioni su ACR Tasks

ACR Tasks è una suite di funzionalità in Registro Azure Container. Fornisce la compilazione di immagini dei contenitori basate sul cloud per piattaforme , tra cui Linux, Windows e ARM, e può automatizzare l'applicazione di patch del sistema operativo e del framework per i contenitori Docker. ACR Tasks non solo estende il ciclo di sviluppo "inner-loop" al cloud con compilazioni di immagini del contenitore su richiesta, ma abilita anche compilazioni automatizzate attivate dagli aggiornamenti del codice sorgente, aggiornamenti all'immagine di base di un contenitore o timer. Ad esempio, con i trigger di aggiornamento delle immagini di base, è possibile automatizzare il flusso di lavoro di applicazione e applicazione che applica patch al sistema operativo e al framework delle applicazioni, mantenendo gli ambienti sicuri rispettando i principi dei contenitori non modificabili.

[! IMPORTANTE] Registro Azure Container sta sospendo temporaneamente le attività del Registro Azure Container da crediti gratuiti di Azure. Ciò può influire sulle esecuzioni di Attività esistenti. In caso di problemi, aprire un caso di supporto per il team per fornire indicazioni aggiuntive. Si noti che i clienti esistenti non saranno interessati da questa pausa. L'avviso sulla documentazione verrà aggiornato qui ogni volta che viene revocata la sospensione.

[! AVVISO] È consigliabile che tutte le informazioni fornite nella riga di comando o nell'ambito di un URI possano essere registrate come parte della traccia diagnostica di Registro Azure Container (ACR). Sono inclusi dati sensibili, ad esempio credenziali, token di accesso personali di GitHub e altre informazioni sicure. Prestare attenzione a evitare potenziali rischi per la sicurezza, è fondamentale evitare di includere dettagli sensibili nelle righe di comando o negli URI soggetti alla registrazione diagnostica.

Scenari di attività

Attività del Registro Azure Container supporta diversi scenari per compilare e gestire immagini di contenitore e altri artefatti. Per informazioni dettagliate, vedere le sezioni seguenti in questo articolo.

Ogni attività del Registro Azure Container ha un contesto di codice sorgente associato, ovvero il percorso di un set di file di origine usati per compilare un'immagine del contenitore o un altro artefatto. I contesti di esempio includono un repository Git o un file system locale.

Le attività possono anche sfruttare le variabili di esecuzione, in modo da poter riutilizzare le definizioni delle attività e standardizzare i tag per immagini e artefatti.

Attività rapida

Il ciclo di sviluppo interno, processo iterativo di scrittura di codice, compilazione e test dell'applicazione prima di eseguire il commit nel controllo del codice sorgente, è in realtà l'inizio della gestione del ciclo di vita del contenitore.

Prima di eseguire il commit della prima riga di codice, la funzione attività rapida di Attività del Registro Azure Container può offrire un'esperienza di sviluppo integrato eseguendo l'offload delle build di un'immagine del contenitore in Azure. Grazie alle attività rapide, è possibile verificare le definizioni di compilazione automatizzate e rilevare potenziali problemi prima di eseguire il commit del codice.

Usando il formato noto docker build , il comando az acr build nell'interfaccia della riga di comando di Azure accetta un contesto (il set di file da compilare), lo invia ad ACR Tasks e, per impostazione predefinita, esegue il push dell'immagine compilata nel registro al completamento.

Per un'introduzione, vedere la guida introduttiva per compilare ed eseguire un'immagine del contenitore in Registro Azure Container.

ACR Tasks è progettato come primitiva del ciclo di vita dei contenitori. È ad esempio possibile integrare ACR Tasks in una soluzione CI/CD. Eseguendo az login con un' entità servizio, la soluzione di integrazione continua/distribuzione continua potrà quindi eseguire comandi az acr build per avviare compilazioni delle immagini.

Per informazioni su come usare le attività rapide, vedere la prima esercitazione su Attività del Registro Azure Container, Compilare immagini dei contenitori nel cloud con Attività del Registro Azure Container.

Suggerimento

Se si vuole compilare ed eseguire il push di un'immagine direttamente dal codice sorgente, senza un Dockerfile, Registro Azure Container fornisce il comando az acr pack build (anteprima). Questo strumento compila ed esegue il push di un'immagine dal codice sorgente dell'applicazione usando Buildpack nativi cloud.

Generare un'attività all'aggiornamento del codice sorgente

Attivare la compilazione di un'immagine di contenitore o un'attività a più passaggi quando viene eseguito il commit del codice o quando viene effettuata o aggiornata una richiesta pull in un repository Git pubblico o privato in GitHub o Azure DevOps. Ad esempio, configurare un'attività di compilazione con il comando dell'interfaccia della riga di comando di Azure az acr task create specificando un repository Git e facoltativamente un ramo e un Dockerfile. Quando il team aggiorna il codice nel repository, un webhook creato da Attività del Registro Azure Container attiva una compilazione dell'immagine di contenitore definita nel repository.

Attività del Registro Azure Container supporta i trigger seguenti quando si imposta un repository Git come contesto dell'attività:

Trigger Abilitata per impostazione predefinita
Commit
Richiesta pull No

Nota

Attualmente, Attività del Registro Azure Container non supporta i trigger per il commit o le richieste pull nei repository di GitHub Enterprise.

Per informazioni su come attivare compilazioni in caso di commit del codice sorgente, vedere la seconda esercitazione su Attività del Registro Azure Container, Automatizzare la compilazione di immagini dei contenitori con Attività del Registro Azure Container.

Token di accesso personale

Per configurare un trigger di aggiornamento del codice sorgente, è necessario fornire all'attività un token di accesso personale (PAT) per impostare il webhook nel repository GitHub pubblico o privato o Azure DevOps. Gli ambiti obbligatori per il pat sono i seguenti:

Tipo di repository GitHub DevOps
Repository pubblico repo:status
public_repo
Codice (lettura)
Repository privato repository (controllo completo) Codice (lettura)

Per creare un pat, vedere la documentazione di GitHub o Azure DevOps .

Automatizzare l'applicazione di patch al sistema operativo e al framework

La potenza delle attività del Registro Azure Container per migliorare veramente il flusso di lavoro di compilazione del contenitore deriva dalla possibilità di rilevare un aggiornamento a un'immagine di base. Una funzionalità della maggior parte delle immagini contenitore, un'immagine di base è un'immagine padre su cui si basano una o più immagini dell'applicazione. Le immagini di base in genere contengono il sistema operativo e talvolta i framework dell'applicazione.

È possibile configurare un'attività del Registro Azure Container per tenere traccia di una dipendenza da un'immagine di base durante la compilazione di un'immagine dell'applicazione. Quando si esegue il push dell'immagine di base aggiornata nel registro o si aggiorna un'immagine di base in un repository pubblico, ad esempio in Docker Hub, Attività del Registro Azure Container può compilare automaticamente tutte le immagini dell'applicazione basate su di essa. Grazie al rilevamento e alla ricompilazione automatici, ACR Tasks consente di risparmiare il tempo e il lavoro normalmente necessari per monitorare e aggiornare manualmente ogni immagine di applicazione che fa riferimento all'immagine di base aggiornata.

Altre informazioni sui trigger di aggiornamento delle immagini di base per attività del Registro Azure Container. Informazioni su come attivare una compilazione di immagini quando viene eseguito il push di un'immagine di base in un registro contenitori nell'esercitazione Automatizzare le compilazioni di immagini del contenitore quando un'immagine di base viene aggiornata in un Registro Azure Container

Pianificare un'attività

Facoltativamente, pianificare un'attività configurando uno o più trigger timer quando si crea o si aggiorna l'attività. La pianificazione di un'attività è utile per eseguire carichi di lavoro del contenitore in base a una pianificazione definita o per eseguire operazioni di manutenzione o test sulle immagini di cui è stato eseguito regolarmente il push nel registro. Per informazioni dettagliate, vedere Eseguire un'attività del Registro Azure Container in base a una pianificazione definita.

Attività a più passaggi

Le attività in più passaggi forniscono la definizione e l'esecuzione di attività basate su passaggi per compilare e testare immagini del contenitore e applicarvi patch nel cloud. I passaggi delle attività definiti in un file YAML specificano singole operazioni di compilazione e push per le immagini del contenitore o altri artefatti. Possono anche definire l'esecuzione di uno o più contenitori, con ogni passaggio che usa il contenitore come ambiente di esecuzione.

È ad esempio possibile creare un'attività a più passaggi che automatizza quanto segue:

  1. Compilazione di un'immagine di applicazione Web
  2. Esecuzione di un contenitore di applicazione Web
  3. Compilazione di un'immagine di test di un'applicazione Web
  4. Esecuzione del contenitore di test dell'applicazione Web, che esegue i test sul contenitore dell'applicazione in esecuzione
  5. Se i test vengono superati, compilazione di un pacchetto di archivio del grafico Helm
  6. Eseguire un helm upgrade usando il nuovo pacchetto di archivio del grafico di Helm

Le attività in più passaggi consentono di dividere la creazione, l'esecuzione e il test di un'immagine in più passaggi componibili, con il supporto della dipendenza tra i passaggi. Con le attività in più passaggi in ACR Tasks si dispone di un controllo più granulare sulla compilazione delle immagini, sui test e sui flussi di lavoro di applicazione di patch al framework e al sistema operativo.

Altre informazioni sulle attività in più passaggi in Run multi-step build, test, and patch tasks in ACR Tasks (Eseguire attività di compilazione, test e applicazione di patch in più passaggi con ACR Tasks).

Posizioni del contesto

La tabella seguente mostra esempi di percorsi di contesto supportati per attività del Registro Azure Container:

Posizione contesto Descrizione Esempio
File system locale File contenuti in una directory nel file System locale. /home/user/projects/myapp
Ramo principale di GitHub File all'interno del ramo principale (o di altro tipo predefinito) di un repository GitHub pubblico o privato. https://github.com/gituser/myapp-repo.git
Ramo GitHub Ramo specifico di un repository GitHub pubblico o privato. https://github.com/gituser/myapp-repo.git#mybranch
Sottocartella di GitHub File all'interno di una sottocartella in un repository GitHub pubblico o privato. L'esempio mostra la combinazione di una specifica di ramo e sottocartella. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Commit di GitHub Commit specifico in un repository GitHub pubblico o privato. L'esempio mostra la combinazione di un hash di commit (SHA) e di una specifica della sottocartella. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Sottocartella Di Azure DevOps File all'interno di una sottocartella in un repository di Azure pubblico o privato. L'esempio mostra la combinazione di specifica di ramo e sottocartella. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
File tarball remoto File in un archivio compresso in un server Web remoto. http://remoteserver/myapp.tar.gz
Artefatto nel registro contenitori File di artefatti OCI in un repository del registro contenitori. oci://myregistry.azurecr.io/myartifact:mytag

Nota

Quando si usa un repository Git come contesto per un'attività attivata da un aggiornamento del codice sorgente, è necessario fornire un token di accesso personale (PAT).

Piattaforme di immagini

Per impostazione predefinita, Attività del Registro Azure Container compila immagini per il sistema operativo Linux e l'architettura amd64. Specificare il tag --platform per compilare immagini Windows o immagini Linux per altre architetture. Specificare il sistema operativo e facoltativamente un'architettura supportata in formato os/architecture (ad esempio, --platform Linux/arm). Per le architetture ARM, specificare facoltativamente una variante in formato os/architecture/variant (ad esempio, --platform Linux/arm64/v8):

Sistema operativo Architettura
Linux amd64
arm
arm64
386
Windows amd64

Visualizzare l'output dell'attività

Ogni esecuzione dell'attività genera l'output del log che è possibile esaminare per determinare se i passaggi dell'attività sono stati eseguiti correttamente. Quando si attiva un'attività manualmente, l'output del log per l'esecuzione dell'attività viene trasmesso alla console e archiviato anche per il recupero successivo. Quando un'attività viene attivata automaticamente, ad esempio da un commit del codice sorgente o da un aggiornamento dell'immagine di base, i log attività vengono archiviati solo. Visualizzare i log di esecuzione nel portale di Azure oppure usare il comando az acr task logs.

Vedere altre informazioni sulla visualizzazione e la gestione dei log attività.

Passaggi successivi

Quando si è pronti per automatizzare le compilazioni e la manutenzione delle immagini del contenitore nel cloud, vedere la serie di esercitazioni sulle attività del Registro Azure Container.

Installare eventualmente l'estensione Docker per Visual Studio Code e l'estensione Account Azure per l'uso dei registri contenitori di Azure. Eseguire il pull e il push delle immagini in un registro contenitori di Azure o eseguire Attività del Registro Azure Container, il tutto all'interno di Visual Studio Code.