Automatiser la génération des images conteneur et la maintenance avec les tâches Azure Container Registry

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 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.

Les tâches Azure Container Registry sont une suite de fonctionnalités qui :

  • Fournissent la génération d’images conteneur basée sur le cloud pour les plateformes telles que Linux, Windows et ARM.
  • Étendent les premières parties d’un cycle de développement d’applications au cloud avec des builds d’images conteneur à la demande.
  • Permettent les builds automatisées déclenchées par les mises à jour du code source, les mises à jour apportées à l’image de base d’un conteneur ou les retardateurs.

Par exemple, avec des déclencheurs pour les mises à jour d’une image de base, vous pouvez automatiser la mise à jour corrective du système d’exploitation et de l’infrastructure pour vos conteneurs Docker. Ces déclencheurs peuvent vous aider à maintenir des environnements sécurisés tout en respectant les principes des conteneurs immuables.

Important

Les exécutions de tâches Azure Container Registry sont temporairement suspendues des crédits gratuits Azure. Cette suspension 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.

Avertissement

Veuillez noter que toutes les informations fournies sur la ligne de commande ou dans le cadre d’un URI peuvent être journalisé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

Les tâches Azure Container Registry prennent en charge plusieurs scénarios pour créer et gérer des images de conteneur et d’autres artefacts. Cet article décrit les tâches rapides, les tâches déclenchées automatiquement et les tâches à plusieurs étapes.

Chaque tâche a un contexte de code source associé : l’emplacement des 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 et 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âches rapides

Le cycle de développement « en boucle interne » est le processus itératif d’écriture de code, de création et de test de votre application avant de procéder au contrôle de code source. C’est vraiment le début de la gestion du cycle de vie des conteneurs.

La fonctionnalité de tâche rapide dans les tâches Azure Container Registry peut fournir une expérience de développement intégrée en déchargeant vos builds d’images conteneur sur Azure. Vous pouvez générer et envoyer (push) une seule image de conteneur vers un registre de conteneurs à la demande dans Azure, sans avoir besoin d’une installation locale de Docker Engine. Pensez docker build, docker push dans le cloud. 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 familier, la commande az acr build dans Azure CLI prend un contexte. La commande envoie ensuite le contexte à Azure Container Registry et (par défaut) envoie à la fin l’image générée à son registre.

Les tâches Azure Container Registry sont conçues comme une primitive de cycle de vie de conteneur. Par exemple, vous pouvez intégrer des tâches Azure Container Registry dans votre solution d’intégration continue et de livraison continue (CI/CD). Si vous exécutez 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.

Pour savoir comment utiliser des tâches rapides, consultez le guide de démarrage rapide et le tutoriel pour créer et déployer des images conteneur à l’aide de tâches Azure Container Registry.

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.

Tâches déclenchées automatiquement

Activez un ou plusieurs déclencheurs pour générer une image.

Déclencher une tâche sur une mise à jour du code source

Vous pouvez déclencher 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 le code dans le référentiel, un webhook créé dans les tâches Azure Container Registry déclenche une build de l’image conteneur définie dans le référentiel.

Les tâches Azure Container Registry prennent en charge les déclencheurs suivants lorsque vous définissez un référentiel Git en tant que contexte de tâche :

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

Remarque

Actuellement, les tâches Azure Container Registry ne prennent pas en charge les déclencheurs de validation ou de demande de tirage (pull request) dans les référentiels GitHub Enterprise.

Pour savoir comment déclencher la génération de builds lors de la validation du code source, consultez Automatiser les générations d’images conteneur avec les tâches Azure Container Registry.

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 pour définir le webhook dans le référentiel GitHub ou Azure DevOps, qu’il soit public ou privé. Les étendues requises pour le jeton d’accès personnel sont les suivantes :

Type de référentiel GitHub Azure 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 jeton d’accès personnel, consultez la documentation GitHub ou Azure DevOps.

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

L’aptitude des tâches Azure Container Registry à améliorer réellement votre pipeline de génération de conteneur provient de leur capacité à détecter la mise à jour d’une image de base. Une image de base est une fonctionnalité de la plupart des images conteneur. Il s’agit d’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 Azure Container Registry 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, les tâches Azure Container Registry peuvent générer automatiquement des images d’application basées sur celle-ci. Grâce à cette détection et à la régénération automatiques, les tâches Azure Container Registry vous permettent de gagner du temps et d’économiser des efforts normalement nécessaires pour suivre et mettre à jour manuellement chaque image d’application qui fait référence à votre image de base mise à jour.

Pour plus d’informations, consultez À propos des mises à jour d’images de base pour les tâches Azure Container Registry et Tutoriel : Automatiser la génération des images de conteneur quand une image de base est mise à jour dans un registre de conteneurs Azure.

Planifier une tâche

Vous pouvez planifier 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 Azure Container Registry selon une planification définie.

Tâches à plusieurs étapes

Étendez la fonctionnalité de génération et envoi (push) à image unique des tâches Azure Container Registry avec des workflows en plusieurs étapes basés sur plusieurs conteneurs.

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 étapes 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, compiler un package d’archivage du graphique Helm.
  6. Effectuer une tâche 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 dans les tâches Azure Container Registry, vous contrôlez plus finement les workflows de génération d’images, de test et de mise à jour corrective du système d’exploitation et du framework.

En savoir plus sur l’exécution de tâches de génération, de test et d’application de correctifs en plusieurs étapes dans les tâches Azure Container Registry.

Emplacements de contexte

Le tableau suivant présente des exemples d’emplacements de contexte pris en charge pour les tâches Azure Container Registry :

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

Remarque

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.

Plateformes d’images

Par défaut, les tâches Azure Container Registry créent 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

Sortie de la tâche

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.