Automatiser la création et la maintenance des images de conteneur avec ACR Tasks

Les conteneurs fournissent de nouveaux niveaux de virtualisation en isolant les dépendances d’application et de développement des spécifications opérationnelles et d’infrastructure. Ce qui demeure, toutefois, est la nécessité de gérer les mises à jour correctives et la gestion de cette virtualisation d’application sur le cycle de vie du conteneur.

Qu’est-ce qu’ACR Tasks ?

ACR Tasks est une suite de fonctionnalités d’Azure Container Registry. Elle fournit la création d’image conteneur informatique pour les plateformes, notamment Linux, Windows et ARM, et peut automatiser la mise à jour corrective du framework et du système d’exploitation pour vos conteneurs Docker. Non seulement ACR Tasks étend votre cycle de développement « en boucle interne » au cloud avec des builds d’image de conteneur à la demande, mais il permet également de créer des builds automatisées déclenchés par les mises à jour du code source, les mises à jour de l’image de base d’un conteneur ou les minuteurs. Par exemple, avec les déclencheurs de mise à jour d’image de base, vous pouvez automatiser votre flux de travail de mise à jour corrective du système d’exploitation et du framework d’application tout en garantissant la sécurité de l’environnement et en respectant les critères fondamentaux des conteneurs immuables.

[! IMPORTANT] ACR suspend temporairement l’exécution des Azure Container Registry Tasks à partir des crédits gratuits Azure. Cela peut affecter les exécutions de tâches existantes. Si vous rencontrez des problèmes, ouvrez un dossier d'assistance pour que notre équipe vous fournisse des conseils supplémentaires. Notez que les clients existants ne seront pas affectés par cette pause. Nous mettrons à jour notre avis de documentation ici dès que la pause sera levée.

[! AVERTISSEMENT] Veuillez noter que toutes les informations fournies sur la ligne de commande ou dans le cadre d’un URI peuvent être enregistrées dans le cadre du suivi de diagnostic Azure Container Registry (ACR). Cela inclut des données sensibles telles que des informations d’identification, des jetons d’accès personnels GitHub et d’autres informations sécurisées. Faites preuve de prudence pour éviter tout risque de sécurité potentiel, il est essentiel d’éviter d’inclure des détails sensibles dans les lignes de commande ou les URI soumis à la journalisation des diagnostics.

Scénarios de tâches

ACR Tasks prend en charge plusieurs scénarios pour créer et gérer des images de conteneur et d’autres artefacts. Pour plus d’informations, consultez les sections suivantes de cet article.

Chaque tâche ACR Tasks a un contexte de code source associé : l’emplacement d’un ensemble de fichiers sources utilisés pour générer une image conteneur ou un autre artefact. Les exemples de contextes incluent un référentiel Git ou un système de fichiers local.

Les tâches peuvent également tirer parti des variables d’exécution, de sorte que vous pouvez réutiliser les définitions de tâches et normaliser les balises pour les images et les artefacts.

Tâche rapide

Le cycle de développement « en boucle interne », c’est-à-dire le processus itératif d’écriture de code, de génération de build et de test de votre application avant de valider le code source, correspond au début de la gestion du cycle de vie des conteneurs.

Avant de valider votre première ligne de code, les fonctionnalité tâche rapide d’ACR Tasks peut fournir un environnement de développement intégré en déchargeant vos builds d’image de conteneur dans Azure. Avec les tâches rapides, vous pouvez vérifier vos définitions de build automatisées et identifier les problèmes potentiels avant de valider votre code.

En utilisant le format docker build bien connu, la commande az acr build dans Azure CLI prend un contexte (ensemble de fichiers à générer), l’envoie à ACR Tasks et, par défaut, envoie (push) l’image générée à son registre lors de son achèvement.

Pour une introduction, consultez le démarrage rapide pour générer et exécuter une image conteneur dans Azure Container Registry.

ACR Tasks est conçu comme un précurseur du cycle de vie de conteneurs. Par exemple, intégrez ACR Tasks dans votre solution CI/CD. En exécutant az login avec un principal de service, votre solution CI/CD pourra alors émettre des commandes az acr build pour lancer des générations d’image.

Découvrez comment utiliser les tâches rapides dans le premier didacticiel d’ACR Tasks, Générer des images de conteneur dans le cloud avec Azure Container Registry Tasks.

Conseil

Si vous souhaitez créer et envoyer (push) une image directement à partir du code source, sans fichier Dockerfile, Azure Container Registry fournit la commande az acr pack build (préversion). Cet outil crée et envoie (push) une image à partir du code source de l’application à l’aide de Cloud Native Buildpacks.

Déclencher la tâche lors de la mise à jour du code source

Déclenchez la création d’une image conteneur ou une tâche multi-étapes lors de la validation du code, ou lorsqu’une demande de tirage (pull request) est effectuée ou mise à jour, sur un référentiel Git public ou privé dans GitHub ou Azure DevOps. Par exemple, configurez une tâche de création avec la commande Azure CLI az acr task create en spécifiant un référentiel Git et éventuellement une branche et un Dockerfile. Lorsque votre équipe met à jour du code dans le référentiel, un webhook créé par ACR Tasks déclenche la génération de l’image de conteneur définie dans le référentiel.

ACR Tasks prend en charge les déclencheurs suivants lorsque vous définissez un référentiel Git comme contexte de la tâche :

Déclencheur Activée par défaut
Commit Oui
Demande de tirage (pull request) Non

Notes

Actuellement, ACR Tasks ne prend pas en charge les déclencheurs de validation et de demande de tirage (pull request) dans les référentiels GitHub Enterprise.

Découvrez comment déclencher la génération de builds lors de la validation du code source dans le deuxième didacticiel d’ACR Tasks, Automatiser les générations d’image de conteneur avec Azure Container Registry Tasks.

Jeton d’accès personnel

Pour configurer un déclencheur de mise à jour du code source, vous devez fournir à la tâche un jeton d’accès personnel (PAT) pour définir le webhook dans le référentiel GitHub ou Azure DevOps, qu’il soit public ou privé. Les étendues requises pour PAT sont les suivantes :

Type de référentiel GitHub DevOps
Dépôt public repo:status
public_repo
Code (lire)
Référentiel privé repo (contrôle total) Code (lire)

Pour créer un PAT, consultez la documentation GitHub ou Azure DevOps.

Automatiser les mises à jour correctives du système d’exploitation et du framework

L’aptitude d’ACR Tasks à améliorer réellement votre pipeline de génération de conteneur provient de sa capacité à détecter la mise à jour d’une image de base. Fonctionnalité de la plupart des images de conteneur, une image de base est une image parente sur laquelle une ou plusieurs images d’application sont basées. Les images de base contiennent généralement le système d’exploitation et parfois des infrastructures d’application.

Vous pouvez configurer une tâche ACR pour effectuer le suivi d’une dépendance sur une image de base au moment de la génération d’une image d’application. Quand l’image de base mise à jour est envoyée à votre registre, ou qu’une image de base est mise à dans un référentiel public comme dans Docker Hub, ACR Tasks peut générer automatiquement des images d’application basées sur elle. Grâce à ces détection et regénération automatiques, ACR Tasks vous permet d’économiser le temps et les efforts normalement nécessaires au suivi et à la mise à jour manuels de chaque image d’application faisant référence à votre image de base mise à jour.

Découvrez-en plus sur les déclencheurs de mise à jour des images de base pour les tâches ACR. Et découvrez comment déclencher une génération d'image lorsqu'une image de base est poussée vers un registre de conteneurs dans le didacticiel Automatiser la génération d'images de conteneur lorsqu'une image de base est mise à jour dans un registre de conteneurs Azure

Planifier une tâche

Planifiez éventuellement une tâche en définissant un ou plusieurs déclencheurs de minuteur lorsque vous créez ou mettez à jour la tâche. La planification d’une tâche est utile pour exécuter des charges de travail de conteneur selon une planification définie, ou pour exécuter des opérations de maintenance ou des tests sur des images transmises régulièrement à votre registre. Pour plus d’informations, consultez Exécuter une tâche ACR selon une planification définie.

Tâches multiétapes

Les tâches multiétapes permettent la définition et l’exécution basées sur une tâche pour la génération, le test et la mise à jour corrective d’images conteneur dans le cloud. Les étapes de tâche définies dans un fichier YAML spécifient les opérations de création et Push individuelles pour les images conteneur ou d’autres artefacts. Elles permettent également de définir l’exécution d’un ou plusieurs conteneurs, en utilisant à chaque étape le conteneur comme son environnement d’exécution.

Par exemple, vous pouvez créer une tâche à plusieurs étapes qui automatise les opérations suivantes :

  1. Compiler une image d’application web
  2. Exécuter le conteneur d’application web
  3. Compiler une image test d’application web
  4. Exécuter le conteneur de test de l’application web qui effectue des tests sur le conteneur d’application en cours d’exécution
  5. Si les tests réussissent, compilez un package d’archivage du graphique Helm
  6. Effectuer un helm upgrade à l’aide du nouveau package d’archivage du graphique Helm

Les tâches à plusieurs étapes vous permettent de fractionner la génération, l’exécution et le test d’une image en étapes plus composables, avec prise en charge des dépendances entre chacune d’elles. Grâce aux tâches à plusieurs étapes d’ACR Tasks, vous contrôlez plus finement la génération d’images, le test la mise à jour corrective du système d’exploitation et du framework.

Pour en savoir plus sur les tâches à plusieurs étapes, consultez Run multi-step build, test, and patch tasks in ACR Tasks (Exécuter des tâches à plusieurs étapes de génération, de test et de correction dans ACR Tasks).

Emplacements de contexte

Le tableau suivant présente des exemples d’emplacements de contexte pris en charge pour ACR Tasks :

Emplacement du contexte Description Exemple
Système de fichiers local Fichiers dans un répertoire sur le système de fichiers local. /home/user/projects/myapp
Branche primaire GitHub Fichiers dans la branche primaire (ou autre branche par défaut) d’un dépôt GitHub public ou privé. https://github.com/gituser/myapp-repo.git
Branche GitHub Branche spécifique d’un référentiel GitHub public ou privé. https://github.com/gituser/myapp-repo.git#mybranch
Sous-dossier de GitHub Fichiers dans un sous-dossier d’un référentiel GitHub public ou privé. L’exemple affiche la combinaison de spécifications de branche et de sous-dossier. https://github.com/gituser/myapp-repo.git#mybranch:myfolder
Validation GitHub Validation spécifique d’un référentiel GitHub public ou privé. L’exemple affiche la combinaison de spécifications de hachage de validation (SHA) et de sous-dossier. https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Sous-dossier Azure DevOps Fichiers dans le sous-dossier d’un référentiel Azure public ou privé. L’exemple montre la combinaison de spécifications de branche et de sous-dossier. https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
Tarball distant Fichiers dans une archive compressée sur un serveur Web à distance. http://remoteserver/myapp.tar.gz
Artefact dans le registre de conteneurs Fichiers d’artefacts OCI dans un référentiel de registre de conteneurs. oci://myregistry.azurecr.io/myartifact:mytag

Notes

Lorsque vous utilisez un référentiel Git privé comme contexte pour une tâche déclenchée par une mise à jour du code source, vous devez fournir un jeton d’accès personnel (PAT).

Plateformes d’images

Par défaut, ACR Tasks génère des images pour le système d’exploitation Linux et l’architecture amd64. Spécifiez l’étiquette --platform pour créer des images Windows ou des images Linux pour d’autres architectures. Spécifiez le système d’exploitation et éventuellement une architecture prise en charge au format système d’exploitation/architecture (par exemple, --platform Linux/arm). Pour les architectures ARM, spécifiez éventuellement une variante au format système d’exploitation/architecture/variante (par exemple, --platform Linux/arm64/v8) :

Système d''exploitation Architecture
Linux amd64
arm
arm64
386
Windows amd64

Afficher la sortie des tâches

Chaque exécution de tâche génère une sortie de journal que vous pouvez inspecter pour déterminer si les étapes de la tâche ont été exécutées avec succès. Quand vous déclenchez manuellement une tâche, la sortie de journal pour l’exécution de la tâche est envoyée en streaming à la console et stockée pour une récupération ultérieure. Lorsqu’une tâche est déclenchée automatiquement, par exemple par une validation de code source ou une mise à jour d’image de base, les journaux des tâches sont uniquement stockés. Affichez les journaux d’exécution dans le portail Azure ou utilisez la commande az acr task logs.

Apprenez-en davantage sur l’affichage et la gestion des journaux des tâches.

Étapes suivantes

Lorsque vous êtes prêt à automatiser les builds et la maintenance des images conteneur dans le cloud, consultez la série de tutoriels sur ACR Tasks.

Si vous le souhaitez, vous pouvez installer l’extension Docker pour Visual Studio Code et l’extension Compte Azure pour utiliser vos registres de conteneurs Azure. Dans Visual Studio Code, vous pouvez tirer (pull) et envoyer (push) des images vers un registre de conteneurs Azure, et exécuter ACR Tasks.