Partage via


Configurer une image conteneur pour exécuter des déploiements

Dans cet article, vous allez apprendre à créer des images conteneur personnalisées pour déployer vos définitions d’environnement dans les environnements de déploiement Azure (ADE).

Une définition d’environnement comprend au moins deux fichiers : un fichier de modèle, comme azuredeploy.json, et un fichier manifeste nommé environment.yaml. ADE utilise des conteneurs pour déployer des définitions d’environnement et prend en charge en mode natif les frameworks Azure Resource Manager (ARM) et Bicep IaC.

Le modèle d’extensibilité ADE vous permet de créer des images conteneur personnalisées à utiliser avec vos définitions d’environnement. En utilisant le modèle d’extensibilité, vous pouvez créer vos propres images conteneur personnalisées et les stocker dans un registre de conteneurs comme DockerHub. Vous pouvez ensuite référencer ces images dans vos définitions d’environnement pour déployer vos environnements.

L’équipe ADE fournit une sélection d’images pour vous aider à démarrer, notamment une image de base et une image Azure Resource Manager (ARM)/Bicep. Vous pouvez accéder à ces exemples d’image dans le dossier Runner-Images.

Prérequis

Utiliser les images conteneur avec ADE

Vous pouvez adopter l’une des approches suivantes pour utiliser des images conteneur avec ADE :

  • Utiliser l’image conteneur standard : pour les scénarios simples, utilisez l’image conteneur Bicep standard fournie par ADE.
  • Créer une image conteneur personnalisée : pour des scénarios plus complexes, créez une image conteneur personnalisée qui répond à vos besoins spécifiques.

Quelle que soit l’approche choisie, vous devez spécifier l’image conteneur dans votre définition d’environnement pour déployer vos ressources Azure.

Utiliser une image standard

ADE prend en charge Bicep en mode natif. Vous pouvez donc configurer une définition d’environnement qui déploie des ressources Azure pour un environnement de déploiement en ajoutant les fichiers de modèle (azuredeploy.json et environment.yaml) à votre catalogue. ADE utilise ensuite l’image conteneur Bicep standard pour créer l’environnement de déploiement.

Dans le fichier environment.yaml, la propriété Runner spécifie l’emplacement de l’image conteneur que vous souhaitez utiliser. Pour utiliser l’exemple d’image publié sur le Registre des artefacts Microsoft, utilisez l’exécuteur d’identificateurs respectifs, comme indiqué dans le tableau suivant.

L’exemple suivant montre un exécuteur qui référence l’exemple d’image conteneur Bicep :

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

Vous pouvez voir l’image conteneur Bicep standard dans l’exemple de référentiel ADE sous le dossier Runner-Images pour l’image ARM-Bicep .

Pour plus d’informations sur la création de définitions d’environnement qui utilisent les images conteneur ADE pour déployer vos ressources Azure, consultez Ajouter et configurer une définition d’environnement.

Créer une image de conteneur personnalisée

La création d’une image conteneur personnalisée vous permet de personnaliser vos déploiements en fonction de vos besoins. Vous pouvez créer des images personnalisées basées sur les images conteneur ADE standard.

Une fois la personnalisation de l’image terminée, vous devez générer l’image et la transmettre (push) à votre registre de conteneurs.

Créer et personnaliser une image conteneur avec Docker

Dans cet exemple, vous apprenez à créer une image Docker pour utiliser des déploiements ADE et accéder à l’interface CLI ADE, en basant votre image sur une des images créées par ADE.

L’interface CLI ADE est un outil qui vous permet de créer des images personnalisées à partir d’images de base ADE. Vous pouvez utiliser l’interface CLI ADE pour personnaliser vos déploiements et vos suppressions en fonction de votre workflow. L’interface CLI ADE est préinstallée sur les exemples d’image. Pour en savoir plus sur l’interface CLI ADE, consultez les Informations de référence sur les images Runner personnalisées de l’interface CLI.

Pour créer une image configurée pour ADE, suivez ces étapes :

  1. Basez votre image sur un exemple d’image créé par ADE ou sur l’image de votre choix en utilisant l’instruction FROM.
  2. Installez les packages nécessaires pour votre image avec l’instruction RUN.
  3. Créez un dossier scripts au même niveau que votre fichier Dockerfile, stockez-y vos fichiers deploy.sh et delete.sh, et vérifiez que ces scripts sont découvrables et exécutables dans le conteneur que vous avez créé. Cette étape est nécessaire pour que votre déploiement fonctionne avec l’image de base ADE.

Sélectionner un exemple d’image conteneur à l’aide de l’instruction FROM

Pour créer une image Docker afin d’utiliser des déploiements ADE et accéder à l’interface CLI ADE, vous devez baser votre image sur une des images créées par ADE. Ajout d’une instruction FROM dans un fichier DockerFile créé pour votre nouvelle image qui pointe vers un exemple d’image créé par ADE hébergé dans le Registre des artefacts Microsoft. Lorsque vous utilisez des images créées par ADE, vous devez baser votre image personnalisée sur l’image principale ADE.

Voici un exemple d’instruction FROM, référençant l’exemple d’image de base :

FROM mcr.microsoft.com/deployment-environments/runners/core:latest

Cette instruction extrait la dernière image de base publiée et en fait la base de votre image personnalisée.

Installer des packages dans une image

Vous pouvez installer des packages avec Azure CLI en utilisant l’instruction RUN, comme illustré dans l’exemple suivant :

RUN az bicep install

Les exemples d’image ADE sont basés sur l’image Azure CLI, et ont les package de l’interface CLI ADE et JQ installés. Vous pouvez en savoir plus sur Azure CLI et le package JQ.

Pour installer les autres packages dont vous avez besoin dans votre image, utilisez l’instruction RUN.

Exécuter des scripts d’interpréteur de commandes d’opération

Dans les exemples d’image, les opérations sont déterminées et exécutées en fonction du nom de l’opération. Actuellement, les deux noms d’opération pris en charge sont deploy et delete.

Pour configurer votre image personnalisée afin qu’elle utilise cette structure, spécifiez un dossier au niveau de votre fichier Dockerfile nommé scripts, puis spécifiez deux fichiers, deploy.shet delete.sh. Le script d’interpréteur de commandes deploy s’exécute quand votre environnement est créé ou redéployé, et le script d’interpréteur de commandes delete s’exécute quand votre environnement est supprimé. Vous pouvez voir des exemples de scripts d’interpréteur de commandes dans le dépôt sous l’image du dossier Runner-Images.

Pour vérifier que ces scripts d’interpréteur de commandes sont exécutables, ajoutez les lignes suivantes à votre fichier Dockerfile :

COPY scripts/* /scripts/
RUN find /scripts/ -type f -iname "*.sh" -exec dos2unix '{}' '+'
RUN find /scripts/ -type f -iname "*.sh" -exec chmod +x {} \;

Rendre l’image personnalisée accessible à ADE

Vous devez générer votre image Docker et la transmettre (push) à votre registre de conteneurs pour la rendre disponible dans ADE. Vous pouvez générer votre image à l’aide de l’interface CLI Docker ou à l’aide d’un script fourni par ADE.

Sélectionnez l’onglet approprié pour en savoir plus sur chaque approche.

Avant de générer l’image à pousser dans votre registre, vérifiez que le moteur Docker est installé sur votre ordinateur. Ensuite, accédez au répertoire de votre fichier Dockerfile, puis exécutez la commande suivante :

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

Par exemple, si vous voulez enregistrer votre image sous un dépôt au sein de votre registre nommé customImage et le charger avec la version d’étiquette 1.0.0, vous exécutez :

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

Envoyer l’image dans un registre

Pour utiliser des images personnalisées, vous devez configurer un registre d’images accessible publiquement avec l’extraction d’image anonyme activée. De cette façon, le service Environnements de déploiement Azure peut accéder à votre image personnalisée pour l’exécuter dans notre conteneur.

Azure Container Registry est une offre Azure qui stocke des images conteneur et des artefacts similaires.

Pour créer un registre, ce que vous pouvez faire avec Azure CLI, le portail Azure, des commandes PowerShell, etc., suivez un des guides de démarrage rapide.

Pour configurer votre registre en activant l’extraction d’image anonyme, exécutez les commandes suivantes dans Azure CLI :

az login
az acr login -n {YOUR_REGISTRY}
az acr update -n {YOUR_REGISTRY} --public-network-enabled true
az acr update -n {YOUR_REGISTRY} --anonymous-pull-enabled true

Quand vous êtes prêt à pousser votre image dans votre registre, exécutez la commande suivante :

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

Connecter l’image à votre définition d’environnement

Quand vous créez les définitions d’environnement pour utiliser votre image personnalisée dans leur déploiement, modifiez la propriété runner dans le fichier manifeste (environment.yaml ou manifest.yaml).

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

Accéder aux journaux d’opérations et aux détails d’erreur

ADE stocke les détails d’erreur d’un déploiement ayant échoué dans le fichier $ADE_ERROR_LOG dans le conteneur.

Pour résoudre les problèmes d’échec de déploiement :

  1. Connectez-vous au portail des développeurs.

  2. Identifiez l’environnement qui n’a pas pu être déployé, puis sélectionnez Voir les détails.

    Capture d’écran montrant les détails d’erreur du déploiement ayant échoué, en particulier un nom non valide pour un compte de stockage.

  3. Passez en revue les détails d’erreur dans la section Détails d’erreur.

    Capture d’écran montrant l’échec du déploiement d’un environnement avec le bouton Voir les détails affiché.

Par ailleurs, vous pouvez utiliser Azure CLI pour voir les détails d’erreur d’un environnement avec la commande suivante :

az devcenter dev environment show --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}

Pour voir les journaux d’opérations d’un déploiement ou d’une suppression d’environnement, utilisez Azure CLI pour récupérer la dernière opération de votre environnement, puis consultez cet ID d’opération dans les journaux.

# Get list of operations on the environment, choose the latest operation
az devcenter dev environment list-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}
# Using the latest operation ID, view the operation logs
az devcenter dev environment show-logs-by-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME} --operation-id {LATEST_OPERATION_ID}