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

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

Dans cet article, vous apprendrez à créer des images de conteneurs Terraform personnalisées pour déployer vos définitions d’environnement dans les environnements de déploiement Azure (ADE). Vous apprenez à configurer une image personnalisée pour provisionner une infrastructure en utilisant le framework Infrastructure en tant que code (IaC) Terraform.

Dans cet article, vous apprendrez à utiliser Pulumi pour les déploiements dans les environnements de déploiement Azure (ADE). Vous découvrirez comment utiliser un exemple d’image fourni par Pulumi ou comment configurer une image personnalisée pour approvisionner une infrastructure à l’aide de l’infrastructure IaC (Infrastructure-as-Code) Pulumi.

ADE prend en charge un modèle d’extensibilité qui vous permet de créer des images personnalisées que vous pouvez utiliser dans vos définitions d’environnement. Pour utiliser ce modèle d’extensibilité, créez vos propres images personnalisées et stockez-les dans un registre de conteneurs comme Azure Container Registry (ACR) ou Docker Hub. Vous pouvez ensuite référencer ces images dans vos définitions d’environnement pour déployer vos environnements.

Une définition d’environnement comprend au moins deux fichiers : un fichier de modèle, comme azuredeploy.json ou main.bicep, et un fichier manifeste nommé environment.yaml. ADE utilise des conteneurs pour déployer des définitions d’environnement.

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

Une définition d’environnement comprend au moins deux fichiers : un fichier de modèle, comme main.tf, et un fichier manifeste nommé environment.yaml. Vous utilisez un conteneur pour déployer la définition d’environnement qui utilise Terraform.

Une définition d’environnement comprend au moins deux fichiers : un fichier projet Pulumi, Pulumi.yaml et un fichier manifeste nommé environment.yaml. Il peut également contenir un programme utilisateur écrit dans le langage de programmation de votre choix : C#, TypeScript, Python, etc. ADE utilise des conteneurs pour déployer des définitions d’environnement.

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’exemple d’image conteneur Pour les scénarios simples, utilisez l’exemple d’image conteneur ARM-Bicep 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.

Les étapes principales à suivre lors de l’utilisation d’une image conteneur sont les suivantes :

  1. Choisissez le type d’image que vous souhaitez utiliser : un exemple d’image ou une image personnalisée.
    • Si vous utilisez une image personnalisée, vous commencez par un exemple d’image, puis vous le personnalisez afin qu’il réponde à vos besoins.
  2. Générer l’image.
  3. Chargez l’image dans un registre privé ou un registre public.
  4. Configurez l’accès au registre.
    • Pour un registre public, configurez l’extraction anonyme.
    • Pour un registre privé, accordez les autorisations ACR à DevCenter.
  5. Ajouter l’emplacement de votre image au paramètre runner dans votre définition d’environnement
  6. Déployez des environnements qui utilisent votre image personnalisée.

La première étape du processus consiste à choisir le type d’image que vous souhaitez utiliser. Sélectionnez l’onglet correspondant pour afficher le processus.

Utiliser un exemple d’image conteneur

ADE prend en charge ARM et Bicep sans nécessiter de configuration supplémentaire. Vous pouvez créer une définition d’environnement qui déploie des ressources Azure pour un environnement de déploiement en ajoutant les fichiers de modèle (comme azuredeploy.json et environment.yaml) à votre catalogue. ADE utilise ensuite l’exemple d’image conteneur ARM-Bicep 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 les identificateurs runner respectifs.

L’exemple suivant montre un runner qui référence l’exemple d’image conteneur ARM-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’exemple d’image conteneur Bicep 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.

Utilisez une image personnalisée pour configurer une image Terraform.

Utiliser un exemple d’image conteneur fournie par Pulumi

L’équipe Pulumi fournit une image prédéfinie pour vous aider à démarrer, que vous pouvez voir dans le dossier Runner-Image. Cette image est disponible publiquement sur le Docker Hub de Pulumi en tant que pulumi/azure-deployment-environments. Vous pouvez donc l’utiliser directement à partir de vos définitions d’environnement ADE.

Voici un exemple de fichier environment.yaml qui utilise l’image prédéfinie :

name: SampleDefinition
version: 1.0.0
summary: First Pulumi-Enabled Environment
description: Deploys a Storage Account with Pulumi
runner: pulumi/azure-deployment-environments:0.1.0
templatePath: Pulumi.yaml

Vous trouverez quelques exemples de définitions d’environnement dans le dossier Environnements.

Créer une image

Vous pouvez générer votre image à l’aide de l’interface CLI Docker. 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

Rendre l’image personnalisée accessible à ADE

Pour pouvoir utiliser des images personnalisées, vous devez les stocker dans un registre de conteneurs. Vous pouvez utiliser un registre de conteneurs public ou un registre de conteneurs privé. Azure Container Registry (ACR) est fortement recommandé, car en raison de son intégration étroite avec ADE, l’image peut être publiée sans autoriser l’accès par extraction anonyme public. Vous devez générer votre image conteneur personnalisée et l’envoyer (push) vers un registre de conteneurs afin de la rendre disponible dans ADE.

Il est également possible de stocker l’image dans un autre registre de conteneurs comme Docker Hub mais dans ce cas, il doit être accessible publiquement.

Attention

Le stockage de votre image conteneur dans un registre avec un accès par extraction anonyme (non authentifié) le rend accessible publiquement. Ne faites pas cela si votre image contient des informations sensibles. Au lieu de cela, stockez-le dans Azure Container Registry (ACR) avec un accès par extraction anonyme désactivé.

Pour utiliser une image personnalisée stockée dans ACR, vous devez vérifier qu’ADE dispose des autorisations appropriées pour accéder à votre image. Lorsque vous créez une instance ACR, elle est sécurisée par défaut et autorise l’accès uniquement aux utilisateurs authentifiés.

Vous pouvez utiliser Pulumi pour créer un Registre de conteneurs Azure et y publier votre image. Reportez-vous à l’exemple Approvisionnement/image personnalisée pour un projet Pulumi autonome qui crée toutes les ressources nécessaires dans votre compte Azure.

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

Utiliser un registre privé avec un accès sécurisé

Par défaut, l’accès pour extraire ou envoyer du contenu dans un registre de conteneurs Azure est disponible seulement pour les utilisateurs authentifiés. Vous pouvez sécuriser davantage l’accès à ACR en limitant l’accès depuis certains réseaux et en attribuant des rôles spécifiques.

Pour créer une instance d’ACR, qui peut être effectuée via Azure CLI, le Portail Azure, des commandes PowerShell, etc., suivez l’un des guides de démarrage rapide.

Limiter l’accès réseau

Pour sécuriser l’accès réseau à votre ACR, vous pouvez limiter l’accès à vos propres réseaux ou désactiver entièrement l’accès du réseau public. Si vous limitez l’accès réseau, vous devez activer l’exception de pare-feu Autoriser les services Microsoft approuvés à accéder à ce registre de conteneurs.

Pour désactiver l’accès depuis des réseaux publics :

  1. Créez une instance ACR ou utilisez une instance existante.

  2. Dans le portail Azure, accédez à l’ACR que vous souhaitez configurer.

  3. Dans le menu de gauche, sous Paramètres, sélectionnez Mise en réseau.

  4. Dans la page Mise en réseau, sous l’onglet Accès réseau public, sélectionnez Désactivé.

    Capture d’écran du portail Azure montrant les paramètres réseau d’ACR, avec Accès public et Désactivé mis en évidence.

  5. Sous Exception pare-feu, vérifiez que Autoriser les services Microsoft approuvés à accéder à ce registre de conteneurs est sélectionné, puis sélectionnez Enregistrer.

    Capture d’écran des paramètres réseau d’ACR, avec Autoriser les services Microsoft approuvés à accéder à ce registre de conteneurs et Enregistrer mis en évidence.

Attribuer le rôle AcrPull

La création d’environnements en utilisant des images conteneur utilise l’infrastructure ADE, y compris les projets et les types d’environnement. Chaque projet a un ou plusieurs types d’environnement de projet, qui ont besoin d’un accès en lecture à l’image conteneur qui définit l’environnement à déployer. Pour accéder aux images de votre ACR de façon sécurisée, attribuez le rôle AcrPull à chaque type d’environnement de projet.

Pour attribuer le rôle AcrPull au type d’environnement de projet :

  1. Dans le portail Azure, accédez à l’ACR que vous souhaitez configurer.

  2. Dans le menu de gauche, sélectionnez contrôle d’accès (IAM).

  3. Sélectionnez Ajouter>Ajouter une attribution de rôle.

  4. Attribuez le rôle suivant. Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.

    Paramètre Valeur
    Rôle Sélectionnez AcrPull.
    Attribuer l’accès à Sélectionnez Utilisateur, groupe ou principal de service.
    Members (Membres) Entrez le nom du type d’environnement de projet qui doit accéder à l’image dans le conteneur.

    Le type d’environnement de projet s’affiche comme dans l’exemple suivant :

    Capture d’écran du volet Sélectionner des membres, montrant une liste de types d’environnement de projet avec une partie du nom mise en évidence.

Dans cette configuration, ADE utilise l’identité managée pour le type d’environnement de projet, qu’il soit affecté par le système ou par l’utilisateur.

Conseil

Cette attribution de rôle doit être effectuée pour chaque type d’environnement de projet. Elle peut être automatisée via Azure CLI.

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}

Générer une image conteneur avec un script

Plutôt que de générer votre image personnalisée et de l’envoyer vers un registre de conteneurs vous-même, vous pouvez utiliser un script pour générer et envoyer votre image personnalisée vers un registre de conteneurs spécifié.

Microsoft fournit un script de démarrage rapide pour vous aider à générer votre image personnalisée et à l’envoyer vers un registre. Le script génère votre image et la pousse dans une instance Azure Container Registry (ACR) spécifiée sous le dépôt ade et l’étiquette latest.

Pour utiliser le script, vous devez :

  1. Créez un fichier Dockerfile et un dossier scripts pour prendre en charge le modèle d’extensibilité ADE.
  2. Fournir un nom de registre et un répertoire pour votre image personnalisée.
  3. Avoir Azure CLI et Docker Desktop installés et ajoutés dans vos variables PATH.
  4. Avoir Docker Desktop en cours d’exécution.
  5. Avoir l’autorisation de pousser dans le registre spécifié.

Vous pouvez voir le script ici.

Vous pouvez appeler le script avec la commande suivante dans PowerShell :

.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'

Par ailleurs, si vous voulez pousser l’image vers un dépôt et un nom d’étiquette spécifiques, vous pouvez exécuter :

.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{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}"

Pour en savoir plus 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.