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
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Environnements de déploiement Azure configurés dans votre abonnement Azure.
- Pour configurer ADE, suivez le Guide de démarrage rapide : configurer des environnements de déploiement Azure.
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 :
- 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.
- Générer l’image.
- Chargez l’image dans un registre privé ou un registre public.
- Configurez l’accès au registre.
- Pour un registre public, configurez l’extraction anonyme.
- Pour un registre privé, accordez les autorisations ACR à DevCenter.
- Ajouter l’emplacement de votre image au paramètre
runner
dans votre définition d’environnement - 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 :
Créez une instance ACR ou utilisez une instance existante.
Dans le portail Azure, accédez à l’ACR que vous souhaitez configurer.
Dans le menu de gauche, sous Paramètres, sélectionnez Mise en réseau.
Dans la page Mise en réseau, sous l’onglet Accès réseau public, sélectionnez Désactivé.
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.
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 :
Dans le portail Azure, accédez à l’ACR que vous souhaitez configurer.
Dans le menu de gauche, sélectionnez contrôle d’accès (IAM).
Sélectionnez Ajouter>Ajouter une attribution de rôle.
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 :
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 :
- Créez un fichier Dockerfile et un dossier scripts pour prendre en charge le modèle d’extensibilité ADE.
- Fournir un nom de registre et un répertoire pour votre image personnalisée.
- Avoir Azure CLI et Docker Desktop installés et ajoutés dans vos variables PATH.
- Avoir Docker Desktop en cours d’exécution.
- 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.