Labo 05 : Déployer des charges de travail de calcul à l’aide d’images et de conteneurs

Interface utilisateur Microsoft Azure

Étant donné la nature dynamique des outils cloud Microsoft, il se peut que vous constatiez des modifications de l’interface utilisateur Azure après le développement du contenu de cette formation. Il se peut donc que certaines instructions et étapes du labo ne s’alignent pas correctement.

Microsoft met ce cours à jour quand la communauté l’alerte sur la nécessité d’y apporter des modifications. Toutefois, compte tenu de la fréquence des mises à jour cloud, il se peut que vous rencontriez des modifications de l’interface utilisateur avant les mises à jour du contenu de cette formation. Si cela se produit, adaptez-vous aux changements, puis appliquez-les dans les laboratoires si nécessaire.

Instructions

Avant de commencer

Se connecter à l’environnement de labo

Connectez-vous à votre machine virtuelle (VM) Windows 11 en utilisant les informations d’identification suivantes :

  • Nom d’utilisateur : Admin
  • Mot de passe : Pa55w.rd

Remarque : Votre instructeur vous fournira des instructions pour la connexion à l’environnement de laboratoire virtuel.

Passer en revue les applications installées

Recherchez la barre des tâches sur votre bureau Windows 11. La barre des tâches contient les icônes des applications que vous allez utiliser dans ce labo, à savoir :

  • Microsoft Edge
  • Explorateur de fichiers

Scénario de laboratoire

Dans ce labo, vous allez découvrir comment créer et déployer des conteneurs dans Azure Container Registry à l’aide d’une application .NET et de fichiers Docker. De même, vous déploierez une solution conteneurisée sur Azure Container Apps.

Diagramme de l’architecture

Diagramme d’architecture montrant le déploiement de charges de travail de calcul à l’aide d’images et de conteneurs

Exercice 1 : Créer une image conteneur Docker et la déployer dans Azure Container Registry

Tâche 1 : Ouvrir le portail Azure

  1. Dans la barre des tâches, sélectionnez l’icône Microsoft Edge.

  2. Dans la fenêtre de navigateur ouverte, accédez au portail Azure à l’adresse https://portal.azure.com, puis connectez-vous avec le compte que vous allez utiliser pour ce labo.

    Remarque : Si vous vous connectez au portail Azure la première fois, une visite guidée du portail vous sera proposée. Si vous préférez faire l’impasse sur la visite, sélectionnez Prise en main pour commencer à utiliser le portail.

Tâche 2 : Créer un groupe de ressources

  1. Dans le volet de navigation du portail Azure, utilisez la zone de texte Rechercher des ressources, des services et des documents pour rechercher Groupe de ressources, puis, dans la liste des résultats, sélectionnez Groupes de ressources.

  2. Dans le volet Groupes de ressources, sélectionnez Créer.

  3. Dans le volet Créer un groupe de ressources, sous l’onglet Options de base, effectuez les actions suivantes, puis sélectionnez Vérifier + créer :

    Paramètre Action
    Liste déroulante  Abonnement Conservez les valeurs par défaut.
    Zone de texte Groupe de ressources Entrez ContainerCompute.
    Liste déroulante Région Sélectionnez (États-Unis) USA Est

    La capture d’écran suivante affiche les paramètres configurés dans le volet Créer un groupe de ressources.

    Volet Créer un groupe de ressources

  4. Sous l’onglet Vérifier + créer, passez en revue les options que vous avez sélectionnées lors des étapes précédentes.

  5. Sélectionnez Créer pour créer le groupe de ressources à l’aide de votre configuration spécifiée.

    Remarque : attendez que la tâche de création soit terminée avant de poursuivre ce labo.

Tâche 3 : Lancer le projet source

  1. Dans la barre des tâches, sélectionnez l’icône Terminal.

  2. Exécutez la commande suivante pour modifier le répertoire actif en le définissant sur le répertoire Allfiles (F):\Allfiles\Labs\05\Starter :

     cd F:\Allfiles\Labs\05\Starter
    
  3. Exécutez la commande suivante pour créer une application console .NET dans le répertoire actif à l’aide de .NET 8.0 :

     dotnet new console --output . --name ipcheck --framework net8.0
    
  4. Exécutez la commande suivante pour créer un fichier nommé Dockerfile dans le répertoire actif :

     New-Item -ItemType File Dockerfile
    
  5. Exécutez la commande suivante pour ouvrir le répertoire actif dans Visual Studio Code :

     code .
    

Tâche 4 : Créer et tester une application .NET

  1. Dans le volet Explorateur de la fenêtre Visual Studio Code, ouvrez le fichier Program.cs.

  2. Supprimez tout le contenu du fichier Program.cs.

  3. Copiez et collez le code suivant dans le fichier Program.cs :

     // Check if network is available
     if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
     {
         System.Console.WriteLine("Current IP Addresses:");
    
         // Get host entry for current hostname
         string hostname = System.Net.Dns.GetHostName();
         System.Net.IPHostEntry host = System.Net.Dns.GetHostEntry(hostname);
            
         // Iterate over each IP address and render their values
         foreach(System.Net.IPAddress address in host.AddressList)
         {
             System.Console.WriteLine($"\t{address}");
         }
     }
     else
     {
         System.Console.WriteLine("No Network Connection");
     }
    
  4. Enregistrez le fichier Program.cs.

  5. Supprimez le fichier Starter.sln.

    Remarque : Cela élimine la nécessité de référencer explicitement le fichier .csproj lors de l’utilisation de commandes dotnet.

  6. Basculez vers l’application Terminal.

  7. Exécutez la commande suivante pour exécuter l’application :

     dotnet run
    
  8. Passez en revue les résultats. Au moins une adresse IP doit être répertoriée, représentant l’adresse IP attribuée à votre ordinateur.

  9. Revenez sur la fenêtre de Visual Studio Code et, à partir du volet Explorer, ouvrez le fichier Dockerfile.

  10. Copiez et collez le code suivant dans le fichier Dockerfile :

     # Start using the .NET 8.0 SDK container image
     FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
    
     # Change current working directory
     WORKDIR /app
    
     # Copy existing files from host machine
     COPY . ./
    
     # Publish application to the "out" folder
     RUN dotnet publish --configuration Release --output out
    
     # Start container by running application DLL
     ENTRYPOINT ["dotnet", "out/ipcheck.dll"]
    
  11. Enregistrez le fichier Dockerfile.

    Remarque : Ensuite, vous créez une archive contenant l’intégralité du fichier projet. Cela simplifie le chargement des fichiers projet dans Cloud Shell.

  12. Basculez vers l’application Terminal.

  13. Exécutez la commande suivante pour créer l’archive :

     Compress-Archive -Path .\* -DestinationPath .\lab05.zip
    

Tâche 5 : Créer une ressource Container Registry

  1. Basculez sur la fenêtre du navigateur qui affiche le Portail Azure.

  2. Dans le portail Azure, sélectionnez l’icône Cloud Shell icône Cloud Shell pour ouvrir Cloud Shell. Si Cloud Shell utilise par défaut une session PowerShell, sélectionnez Basculer vers Bash dans le menu Cloud Shell, puis sélectionnez Confirmer.

    Remarque : l’icône Cloud Shell est représentée par un signe supérieur à (>) et un caractère de soulignement (_).

    Si vous démarrez Cloud Shell pour la première fois, une invite Prise en main s’affiche. Sélectionnez Aucun compte de stockage requis, puis sélectionnez Appliquer.

  3. Dans le volet Cloud Shell, sélectionnez Gérer les fichiers, puis, dans le menu déroulant, sélectionnez Charger.

  4. Dans la boîte de dialogue Ouvrir, accédez au répertoire vide Allfiles (F):\Allfiles\Labos\05\Starter, sélectionnez lab05.zip, puis Ouvrir.

    Remarque : Cela charge le fichier dans le répertoire /~ de la session Cloud Shell.

  5. À l’invite de commandes Cloud Shell dans le portail, exécutez la commande suivante pour créer un répertoire nommé ipcheck dans le répertoire ~ :

     mkdir ~/ipcheck
    
  6. Exécutez la commande suivante pour extraire le contenu de l’archive chargée dans le répertoire nouvellement créé ~/ipcheck :

     unzip ~/lab05.zip -d ~/ipcheck
    
  7. Exécutez la commande suivante pour définir les autorisations de lecture et d’exécution sur l’intégralité du contenu extrait dans le répertoire ~/ipcheck :

     chmod -R +xr ~/ipcheck
    
  8. Exécutez la commande suivante pour modifier le répertoire actif en le définissant sur ~/ipcheck :

     cd ~/ipcheck
    
  9. À l’invite de commandes de Cloud Shell dans le portail, exécutez la commande suivante pour créer une variable avec une valeur unique pour la ressource Container Registry:

     registryName=conregistry$RANDOM
    
  10. À l’invite de commandes de Cloud Shell dans le portail, exécutez la commande suivante pour vérifier que le nom créé à l’étape précédente est disponible:

     az acr check-name --name $registryName
    

    Si les résultats indiquent que le nom est disponible, passez à l’étape suivante. Si le nom n’est pas disponible, réexécutez la commande à l’étape précédente et vérifiez à nouveau la disponibilité.

  11. À l’invite de commandes de Cloud Shell dans le portail, exécutez la commande suivante pour créer une ressource Container Registry:

     az acr create --resource-group ContainerCompute --name $registryName --sku Basic
    

    Remarque : attendez que la tâche de création soit terminée avant de poursuivre ce labo.

Tâche 6 : Stocker les métadonnées de Container Registry

  1. À l’invite de commandes de Cloud Shell dans le portail, exécutez la commande suivante pour obtenir la liste de tous les registres de conteneurs dans votre abonnement:

     az acr list --resource-group ContainerCompute
    
  2. Exécutez la commande suivante et vérifiez si elle renvoie le nom de votre registre. Si vous ne voyez pas de sortie autre que « [] », attendez une minute, puis réessayez d’exécuter la commande.

     az acr list --resource-group ContainerCompute --query "max_by([], &creationDate).name" --output tsv
    
  3. Exécutez la commande suivante :

     acrName=$(az acr list --resource-group ContainerCompute --query "max_by([], &creationDate).name" --output tsv)
    
  4. Exécutez la commande suivante :

     echo $acrName
    

Tâche 7 : Déployer une image conteneur Docker dans Container Registry

  1. Exécutez la commande suivante pour modifier le répertoire actif de ~/ en ~/ipcheck :

     cd ~/ipcheck
    
  2. Exécutez la commande suivante pour obtenir le contenu du répertoire actif:

     dir
    
  3. Exécutez la commande suivante pour charger le code source dans votre registre de conteneurs et générer l’image conteneur en tant que tâche Container Registry:

     az acr build --registry $acrName --image ipcheck:latest .
    

    Remarque : attendez que la tâche de génération soit terminée avant de poursuivre ce labo.

  4. Fermez le volet Cloud Shell dans le portail.

Tâche 8 : Valider votre image conteneur dans Container Registry

  1. Dans le volet de navigation du portail Azure, sélectionnez le lien Groupes de ressources.

  2. Dans le volet Groupes de ressources, sélectionnez le groupe de ressources ContainerCompute que vous avez créé précédemment dans ce labo.

  3. Dans le volet ContainerCompute, sélectionnez le registre de conteneurs que vous avez créé précédemment dans ce labo.

  4. Dans le volet Container Registry, dans la section Services, sélectionnez le lien Dépôts.

  5. Dans la section Dépôts, sélectionnez le dépôt d’images conteneurs ipcheck, puis la dernière étiquette.

  6. Examinez les métadonnées de la version de votre image conteneur avec la dernière étiquette.

    Remarque : vous pouvez également sélectionner le lien ID d’exécution pour trouver des métadonnées relatives à la tâche de génération.

Révision

Dans cet exercice, vous avez créé une application console .NET pour afficher l’adresse IP actuelle d’une machine. Vous avez ensuite ajouté le fichier Dockerfile à l’application afin qu’il puisse être converti en image conteneur Docker. Enfin, vous avez déployé l’image conteneur dans Container Registry.

Exercice 2 : Déployer une instance de conteneur Azure

Tâche 1 : Activer l’utilisateur administrateur dans Container Registry

  1. Dans le groupe de ressources ContainerCompute, sélectionnez le registre de conteneurs que vous avez créé précédemment dans ce labo, puis sélectionnez le volet Clés d’accès.

  2. Activez le commutateur dans la section utilisateur administrateur pour activer l’utilisateur administrateur pour ce registre de conteneurs.

Tâche 2 : Déployer automatiquement une image conteneur dans une instance de conteneur Azure

  1. Dans le volet Container Registry, dans la section Services, sélectionnez le lien Dépôts.

  2. Dans la section Référentiels, sélectionnez le référentiel contenant l’image conteneur ipcheck.

  3. Dans le volet ipcheck, sélectionnez le menu à 3 points associé à la dernière entrée d’étiquette, puis sélectionnez Exécuter l’instance.

  4. Dans le volet Créer une instance de conteneur, effectuez les actions suivantes, puis sélectionnez Créer :

    Paramètre Action
    Zone de texte Nom du conteneur Entrez managedcompute.
    Zone de texte Image conteneur Conservez les valeurs par défaut.
    Section Type de système d’exploitation Sélectionnez Linux
    Zone de texte Abonnement Conservez les valeurs par défaut.
    Liste déroulante Groupe de ressources Sélectionnez ContainerCompute.
    Liste déroulante Emplacement Sélectionnez USA Est.
    Liste déroulante Nombre de cœurs Sélectionnez 2.
    Zone de texte Mémoire (Go) Entrez 4.
    Section Adresse IP publique Sélectionnez Non

    La capture d’écran suivante affiche les paramètres configurés dans le volet Créer une instance de conteneur.

    Volet Créer une instance de conteneur

    Remarque : attendez que l’instance de conteneur soit créée avant de poursuivre ce labo.

Tâche 3: Déployer manuellement une image conteneur dans Container Instances

  1. Dans le volet de navigation du portail Azure, sélectionnez le lien Créer une ressource.

  2. Dans le volet Créer une ressource, dans la zone de texte Rechercher dans les services et la Place de marché, entrez Container Instances, puis sélectionnez Entrée.

  3. Dans le volet des résultats de la recherche dans la Place de marché, sélectionnez le résultat Container Instances.

  4. Dans le volet Container Instances, sélectionnez Créer.

  5. Dans le volet Créer une instance de conteneur, sous l’onglet Options de base, effectuez les actions suivantes, puis sélectionnez Vérifier + créer :

    Paramètre Action
    Liste déroulante  Abonnement Conservez les valeurs par défaut.
    Liste déroulante Groupe de ressources Sélectionnez ContainerCompute.
    Zone de texte Nom du conteneur Entrez manualcompute.
    Liste déroulante Région Sélectionnez (États-Unis) USA Est
    Section Source d’image Sélectionnez Azure Container Registry.
    Liste déroulante Registre Sélectionnez la ressource Azure Container Registry que vous avez créée précédemment dans ce labo
    Liste déroulante Image Sélectionnez ipcheck.
    Liste déroulante Étiquette d’image Sélectionnez dernière.
    Taille : cœurs Entrez 2
    Taille : Mémoire (Gio) Entrez 4.

    La capture d’écran suivante affiche les paramètres configurés dans le volet Créer une instance de conteneur.

    Volet Créer une instance de conteneur

  6. Sous l’onglet Vérifier + créer, examinez les options sélectionnées.

  7. Sélectionnez Créer pour créer l’instance de conteneur en utilisant votre configuration spécifiée.

    Remarque : attendez que l’instance de conteneur soit créée avant de poursuivre ce labo.

Tâche 4: Vérifier si l’instance de conteneur s’est correctement exécutée

  1. Dans le volet de navigation du portail Azure, sélectionnez le lien Groupes de ressources.

  2. Dans le volet Groupes de ressources, sélectionnez le groupe de ressources ContainerCompute que vous avez créé précédemment dans ce labo.

  3. Dans le volet ContainerCompute, sélectionnez l’instance de conteneur manualcompute que vous avez créée précédemment dans ce labo.

  4. Dans le volet Container Instances, dans la section Paramètres, sélectionnez le lien Conteneurs.

  5. Dans la section Conteneurs, examinez la liste des Événements.

  6. Sélectionnez l’onglet Journaux, puis examinez les journaux de texte de l’instance de conteneur.

Remarque : vous pouvez également rechercher les Événements et les Journaux de l’instance de conteneur managedcompute.

Remarque : manualcompute et managedcompute peuvent ne contenir aucun événement à ce stade.

Remarque : une fois l’exécution de l’application terminée, le conteneur s’arrête parce qu’il a terminé son travail. Pour l’instance de conteneur créée manuellement, vous avez indiqué qu’une sortie réussie était acceptable, de sorte que le conteneur s’est exécuté une seule fois. L’instance créée automatiquement n’offrant pas cette option et partant du principe que le conteneur devrait toujours être en cours d’exécution, vous allez constater des redémarrages répétés du conteneur.

Révision

Dans cet exercice, vous avez utilisé plusieurs méthodes pour déployer une image conteneur sur une instance de conteneur Azure. En utilisant la méthode manuelle, vous avez pu personnaliser davantage le déploiement et exécuter des applications basées sur une tâche dans le cadre d’une exécution de conteneur.

Exercice 3 : Créer un environnement Container Apps sécurisé et déployer une application conteneur.

Tâche 1 : Préparer votre environnement

  1. Connectez-vous au portail Azure.

  2. Sélectionnez l’icône Cloud Shell, puis l’environnement Bash.

  3. Dans l’invite de commandes Cloud Shell du portail, exécutez la commande suivante pour installer l’extension Azure Container Apps pour l’interface CLI :

     az extension add --name containerapp --upgrade
    
  4. Exécutez la commande suivante pour inscrire l’espace de noms Microsoft.App :

     az provider register --namespace Microsoft.App
    

    Remarque : Les ressources Azure Container Apps ont migré de l’espace de noms Microsoft.Web vers l’espace de noms Microsoft.App.

  5. Exécutez la commande suivante pour inscrire le fournisseur Microsoft.OperationalInsights pour l’espace de travail Azure Monitor Log Analytics si vous ne l’avez pas utilisé auparavant :

     az provider register --namespace Microsoft.OperationalInsights
    

    Remarque : L’inscription de l’espace de noms Microsoft.App et de Microsoft.OperationalInsights peut prendre plusieurs minutes pour chacun d’eux.

  6. Définissez les variables d’environnement utilisées plus loin dans cet exercice.

      myRG=ContainerCompute
      myAppContEnv=az204-env-$RANDOM
    

Une fois l’interface CLI mise à niveau et les variables d’environnement créées, vous pouvez créer un environnement Container Apps et déployer votre application de conteneur.

Tâche 2 : Créer un environnement

Un environnement dans Azure Container Apps crée une limite sécurisée autour d’un groupe d’applications de conteneur. Les applications de conteneur déployées dans le même environnement sont déployées dans le même réseau virtuel et écrivent les journaux dans le même espace de travail Log Analytics.

  1. Dans l’invite de commandes Cloud Shell du portail, exécutez la commande suivante pour créer un environnement à l’aide de la commande az containerapp env create :

     az containerapp env create \
         --name $myAppContEnv \
         --resource-group $myRG \
         --location eastus
    

Tâche 3 : Créer une application conteneur

Une fois que l’environnement d’application conteneur a terminé le déploiement, vous pouvez déployer une image conteneur dans Azure Container Apps.

  1. Dans l’invite de commandes Cloud Shell du portail, exécutez la commande suivante pour déployer un exemple d’image conteneur d’application à l’aide de la commande az containerapp create :

     az containerapp create \
         --name my-container-app \
         --resource-group $myRG \
         --environment $myAppContEnv \
         --image mcr.microsoft.com/azuredocs/containerapps-helloworld:latest \
         --target-port 80 \
         --ingress 'external' \
         --query properties.configuration.ingress.fqdn
    

    En définissant --ingress sur external, vous rendez l’application conteneur disponible pour les demandes publiques. La commande retourne un lien pour accéder à votre application.

  2. Sélectionnez le lien retourné par la commande az containerapp create pour vérifier que l’application conteneur est en cours d’exécution.

Révision

Dans cet exercice, vous avez déployé un conteneur dans un environnement sécurisé d’application de conteneur.