Exercice - Configurer votre environnement Azure DevOps

Terminé

Dans cette section, vous allez configurer votre organisation Azure DevOps pour continuer avec le reste de ce module et créer un environnement Azure Kubernetes Service (AKS) dans lequel déployer votre application.

Pour atteindre ces objectifs, vous allez :

  • Ajoutez un utilisateur à votre organisation Azure DevOps.
  • Configurez votre projet Azure DevOps.
  • Gérez votre flux de travail avec Azure Boards.
  • Créer des ressources Azure à l’aide d’Azure CLI.
  • Créez des variables de pipeline dans Azure Pipelines.
  • Créez une connexion de service pour vous authentifier auprès d’Azure.
  • Mettez à jour votre manifeste de déploiement Kubernetes.

Ajouter un utilisateur à votre organisation

Pour terminer ce module, un abonnement Azure est requis. Vous pouvez commencer gratuitement avec Azure.

Bien qu’il ne soit pas nécessaire d’utiliser Azure DevOps, un abonnement Azure est nécessaire pour effectuer un déploiement sur des ressources Azure via Azure DevOps. Pour rendre le processus plus simple, utilisez le même compte Microsoft pour vous connecter à votre abonnement Azure et à votre organisation Azure DevOps.

Si vous vous connectez à Azure et Azure DevOps à l’aide de différents comptes Microsoft, vous pouvez continuer en ajoutant un utilisateur à votre organisation DevOps sous le compte Microsoft associé à votre abonnement Azure. Pour plus d’informations , consultez Ajouter des utilisateurs à votre organisation ou projet . Lors de l’ajout de l’utilisateur, sélectionnez le niveau d’accès de base .

Après avoir ajouté l’utilisateur au niveau d’accès De base, déconnectez-vous d’Azure DevOps et reconnectez-vous à l’aide du compte Microsoft associé à votre abonnement Azure.

Obtenir le projet Azure DevOps

Dans cette section, vous exécutez un modèle pour créer votre projet dans Azure DevOps.

Exécuter le modèle

Exécutez un modèle qui configure votre organisation Azure DevOps.

Important

Le générateur de démonstration Azure DevOps n’est plus pris en charge, mais vous pouvez toujours l’utiliser pour créer des environnements de démonstration. Il n’y a actuellement aucun remplacement, et ses fonctionnalités ou sa disponibilité peuvent changer dans le futur.

  1. Obtenez et exécutez le projet ADOGenerator dans Visual Studio ou l’IDE de votre choix.

  2. Lorsque vous êtes invité à entrer le numéro de modèle dans la liste des modèles, entrez 40 pour Automatiser les déploiements à plusieurs conteneurs vers Azure Kubernetes Services avec Azure Pipelines, puis appuyez sur Entrée.

  3. Choisissez votre méthode d’authentification. Vous pouvez configurer et utiliser un jeton d’accès personnel (PAT) ou utiliser la connexion de l’appareil.

    Remarque

    Si vous configurez un PAT, veillez à autoriser les scopes nécessaires. Pour ce module, vous pouvez utiliser l’accès complet, mais dans une situation réelle, vous devez vous assurer que vous accordez uniquement les étendues nécessaires.

  4. Entrez le nom de votre organisation Azure DevOps, puis appuyez sur Entrée.

  5. Si vous y êtes invité, entrez votre PAT Azure DevOps, puis appuyez sur Entrée.

  6. Entrez un nom de projet tel que Space Game - web - Kubernetes, puis appuyez sur Entrée.

  7. Une fois votre projet créé, accédez à votre organisation Azure DevOps dans votre navigateur (à https://dev.azure.com/<your-organization-name>/) et sélectionnez le projet.

Dupliquer (fork) le référentiel

Si ce n’est déjà fait, créez une duplication du dépôt mslearn-tailspin-spacegame-web-kubernetes .

  1. Sur GitHub, accédez au dépôt mslearn-tailspin-spacegame-web-kubernetes .

  2. Sélectionnez Fork en haut à droite de l’écran.

  3. Choisissez votre compte GitHub en tant que propriétaire, puis sélectionnez Créer un fork.

Important

L’unité Nettoyer votre environnement Azure DevOps dans ce module inclut des étapes cruciales pour le nettoyage. Il est recommandé d’effectuer ces étapes pour éviter de manquer de minutes de build gratuites. Même si vous ne terminez pas ce module, il est important de suivre les étapes de nettoyage.

Définir la visibilité de votre projet

Initialement, votre duplication (fork) du référentiel Space Game sur GitHub est définie sur public, et le projet créé par le modèle Azure DevOps sur privé. Un référentiel public sur GitHub est accessible à tout le monde, tandis qu’un référentiel privé n’est accessible qu’à vous et aux personnes avec lesquelles vous choisissez de le partager. De même, sur Azure DevOps, les projets publics fournissent un accès en lecture seule aux utilisateurs non authentifiés ; dans les projets privés à l’inverse, les utilisateurs doivent se voir accorder un accès et une authentification pour pouvoir accéder aux services.

Il n’est pour le moment pas nécessaire de modifier ces paramètres pour les besoins de ce module. Dans le cadre de vos projets personnels toutefois, vous devez déterminer la visibilité et l’accès que vous souhaitez accorder aux autres. Par exemple, si votre projet est open source, vous pouvez décider de rendre publics votre référentiel GitHub et votre projet Azure DevOps. S’il s’agit au contraire d’un projet privé, il sera pertinent de définir votre référentiel GitHub et votre projet Azure DevOps comme privés.

Vous trouverez peut-être les ressources suivantes utiles par la suite pour déterminer la solution la mieux adaptée à votre projet :

Faire passer l’élément de travail à l’état En cours d’exécution

Dans cette étape, vous affectez un élément de travail à vous-même sur Azure Boards et déplacez-le vers l’état De travail . Dans les scénarios réels, vous et votre équipe créez des éléments de travail au début de chaque sprint ou itération de travail.

L’attribution d’éléments de travail vous fournit une liste de contrôle à partir de laquelle travailler et donne à d’autres membres de l’équipe une visibilité sur votre progression et le travail restant. Il permet également d’appliquer des limites de travail en cours (WIP) pour empêcher l’équipe de prendre trop de travail en même temps.

  1. Accédez à Boards dans Azure DevOps, puis sélectionnez Boards dans le menu.

    Capture d’écran d’Azure DevOps montrant l’emplacement du menu Boards.

  2. Assignez à vous-même l’élément de travail Créer une version multi-conteneur du site web orchestrée avec Kubernetes en sélectionnant la flèche vers le bas située en bas de la carte.

    Capture d’écran d’Azure Boards montrant l’emplacement de la flèche vers le bas.

  3. Faites glisser et déposez l’élément de travail de la colonne To Do vers la colonne Doing. Vous allez déplacer la tâche vers la colonne Done à la fin de ce module une fois que vous l’avez terminée.

    Capture d’écran d’Azure Boards montrant la carte dans la colonne En cours.

Créer l’environnement Azure Kubernetes Service

Dans cette étape, vous créez les ressources Azure Kubernetes Service nécessaires pour déployer la nouvelle version du conteneur du site web.

Dans ce module, vous utilisez Azure CLI pour créer les ressources requises pour déployer et exécuter votre application sur Azure Kubernetes Service. Azure CLI est accessible à partir d’un terminal ou via Visual Studio Code. Toutefois, dans ce module, vous accédez à Azure CLI à partir d’Azure Cloud Shell. Cloud Shell est une expérience d’interpréteur de commandes basée sur un navigateur hébergée dans le cloud, qui est préconfigurée avec Azure CLI à utiliser avec votre abonnement Azure.

Important

Pour effectuer les exercices de ce module, vous avez besoin de votre propre abonnement Azure.

Lancer Cloud Shell

  1. Accédez au portail Azure et connectez-vous.

  2. Sélectionnez l’option Cloud Shell dans le menu, puis choisissez l’expérience Bash lorsque vous y êtes invité.

    Capture d’écran du portail Azure montrant l’emplacement de l’élément de menu Cloud Shell.

Remarque

Pour conserver les fichiers que vous créez dans Cloud Shell, vous devez disposer d’une ressource de stockage Azure. Quand vous ouvrez Cloud Shell pour la première fois, vous êtes invité à créer un groupe de ressources, un compte de stockage et un partage Azure Files. Cette configuration est automatiquement utilisée pour toutes les futures sessions Cloud Shell.

Sélectionner une région Azure

Une région fait référence à un ou plusieurs centres de données Azure situés dans une zone géographique. Les régions telles que USA Est, USA Ouest et Europe Nord sont des exemples de ces régions. Chaque ressource Azure, y compris une instance App Service, est associée à une région.

Pour simplifier l’exécution des commandes, commencez par définir une région par défaut. Une fois que vous avez défini une région par défaut, les commandes suivantes utilisent cette région par défaut, sauf si vous spécifiez explicitement une autre région.

  1. À partir de Cloud Shell, exécutez la commande suivante pour répertorier les régions disponibles dans votre abonnement Azure :

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Sélectionnez une région dans la colonne Name dans la sortie qui est géographiquement proche de vous. Par exemple, vous pouvez choisir eastasia ou westus2.

  3. Exécutez la commande suivante pour définir votre région par défaut. Remplacez REGION par le nom de la région que vous avez choisie précédemment.

    az configure --defaults location=<REGION>
    

    Cet exemple définit westus2 comme région par défaut.

    az configure --defaults location=westus2
    

Créer des variables Bash

L’utilisation de variables Bash peut rendre le processus d’installation plus pratique et moins sujette aux erreurs. Cette approche permet d’éviter les fautes de frappe accidentelles en définissant des chaînes de texte partagées en tant que variables qui peuvent être utilisées dans votre script.

  1. À partir de Cloud Shell, générez un nombre aléatoire pour simplifier la création de noms globaux uniques pour certains services à l’étape suivante.

    resourceSuffix=$RANDOM
    
  2. Créez des noms globaux uniques pour votre instance Azure Container Registry et Azure Kubernetes Service. Notez que ces commandes utilisent des guillemets doubles, ce qui indique à Bash d’interpoler les variables à l’aide de la syntaxe inline.

    registryName="tailspinspacegame${resourceSuffix}"
    aksName="tailspinspacegame-${resourceSuffix}"
    
  3. Créez une autre variable Bash pour stocker le nom de votre groupe de ressources.

    rgName='tailspin-space-game-rg'
    
  4. Recherchez la dernière version d’AKS.

    az aks get-versions
    

    Notez la dernière version.

Créer des ressources Azure

Remarque

Dans ce tutoriel, les paramètres réseau par défaut sont utilisés à des fins d’apprentissage. Ces paramètres permettent à votre site web d’être accessible à partir d’Internet. Toutefois, dans la pratique, vous pouvez choisir de configurer un réseau virtuel Azure qui place votre site web dans un réseau qui n’est pas routable sur Internet et qui est accessible uniquement par vous et votre équipe. Plus tard, vous pouvez reconfigurer votre réseau pour rendre le site web accessible à vos utilisateurs.

  1. Exécutez la commande suivante pour créer un groupe de ressources avec le nom que vous avez défini précédemment :

    az group create --name $rgName
    
  2. Exécutez la az acr create commande pour créer un Registre de conteneurs Azure avec le nom que vous avez défini précédemment :

    az acr create \
      --name $registryName \
      --resource-group $rgName \
      --sku Standard
    
  3. Exécutez la az aks create commande pour créer une instance AKS avec le nom que vous avez défini précédemment. Remplacez <latest-AKS-version> par la version que vous avez notée précédemment.

    az aks create \
      --name $aksName \
      --resource-group $rgName \
      --enable-addons monitoring \
      --kubernetes-version <latest-AKS-version> \
      --generate-ssh-keys
    

    Remarque

    L’achèvement du déploiement AKS peut prendre 10 à 15 minutes.

  4. Créez une variable pour stocker l’ID du principal de service configuré pour l’instance AKS :

    clientId=$(az aks show \
      --resource-group $rgName \
      --name $aksName \
      --query "identityProfile.kubeletidentity.clientId" \
      --output tsv)
    
  5. Créez une variable pour stocker l’ID d’Azure Container Registry :

    acrId=$(az acr show \
      --name $registryName \
      --resource-group $rgName \
      --query "id" \
      --output tsv)
    
  6. Exécutez la az acr list commande pour récupérer l’URL du serveur de connexion pour votre instance Azure Container Registry (ACR) :

    az acr list \
     --resource-group $rgName \
     --query "[].{loginServer: loginServer}" \
     --output table
    

    Veillez à prendre note du serveur de connexion pour votre registre de conteneurs. Vous avez besoin de ces informations ultérieurement lors de la configuration de votre pipeline. Voici un exemple :

    LoginServer                      
    --------------------------------
    tailspinspacegame4692.azurecr.io
    
  7. Exécutez la az role assignment create commande pour créer une attribution de rôle pour autoriser le cluster AKS à se connecter à Azure Container Registry :

    az role assignment create \
      --assignee $clientId \
      --role AcrPull \
      --scope $acrId
    

Important

L’unité Nettoyer votre environnement Azure DevOps dans ce module inclut des étapes cruciales pour le nettoyage. Il est recommandé d’effectuer ces étapes pour éviter de manquer de minutes de build gratuites. Même si vous ne terminez pas ce module, il est important de suivre les étapes de nettoyage.

Créer un groupe de variables

Dans cette section, vous allez ajouter une variable à votre pipeline pour stocker le nom de votre Azure Container Registry. La définition du nom de votre instance Azure Container Registry en tant que variable dans votre configuration de pipeline est recommandée par rapport au codage en dur. Cela rend votre configuration plus réutilisable et, si le nom de votre instance change, vous pouvez facilement mettre à jour la variable et déclencher votre pipeline sans avoir à modifier votre configuration.

  1. Connectez-vous à votre organisation Azure DevOps, puis accédez à votre projet.

  2. Sélectionnez Pipelines, puis sélectionnez Bibliothèque dans le volet de navigation gauche.

    Capture d’écran d’Azure Pipelines montrant l’option de menu Bibliothèque.

  3. Sélectionnez groupes de variables, puis sélectionnez + Groupe de variables pour ajouter un nouveau groupe de variables.

  4. Dans la section Propriétés , entrez Release pour le nom du groupe de variables.

  5. Dans la section Variables , sélectionnez Ajouter.

  6. Entrez RegistryName pour le nom de la variable et, pour la valeur, entrez le serveur de connexion de votre Azure Container Registry, tel que tailspinspacegame4692.azurecr.io.

  7. En haut de la page, sélectionnez Enregistrer pour enregistrer votre variable de pipeline. Voici un exemple de ce que votre groupe de variables peut ressembler à

    Capture d’écran d’Azure Pipeline montrant le groupe de variables. Le groupe contient une variable.

Créer des connexions de service

L’étape suivante consiste à créer des connexions de service qui permettent à Azure Pipelines d’accéder à vos instances Azure Container Registry et Azure Kubernetes Service. Grâce à ces connexions de service, Azure Pipelines peut envoyer (push) vos conteneurs et indiquer à votre cluster AKS de les tirer (pull) pour mettre à jour le service déployé.

Important

Vérifiez que vous êtes connecté au portail Azure et à Azure DevOps avec le même compte Microsoft.

Création d’une connexion de service Docker Registry

  1. Connectez-vous à votre organisation Azure DevOps, puis accédez à votre projet.

  2. Sélectionnez les paramètres du projet dans le coin inférieur de la page.

  3. Sélectionnez Connexions de service sous la section Pipelines .

  4. Sélectionnez Nouvelle connexion de service, puis Docker Registry, puis sélectionnez Suivant.

  5. En haut de la page, sélectionnez Azure Container Registry, puis sélectionnez Principal du Service pour le type d’authentification.

  6. Entrez les valeurs suivantes pour chaque paramètre :

    Réglage Valeur
    Abonnement Votre abonnement Azure
    Registre de conteneurs Azure Sélectionnez celui que vous avez créé précédemment
    Nom de la connexion de service Connexion au registre de conteneurs
  7. Vérifiez que la case à cocher Accorder l’autorisation d’accès à tous les pipelines est cochée.

  8. Sélectionnez Enregistrer lorsque vous avez terminé.

Créer une connexion de service ARM

Vous allez maintenant créer une connexion de service Azure Resource Manager pour vous authentifier auprès de votre cluster AKS. Nous utilisons une connexion de service ARM au lieu de Kubernetes, car les jetons de longue durée ne sont plus créés par défaut depuis Kubernetes 1.24. Consultez ce billet de blog DevOps pour plus d’informations : Conseils sur la connexion de service pour les clients AKS utilisant des tâches Kubernetes.

  1. Sélectionnez Nouvelle connexion de service, sélectionnez Azure Resource Manager, puis sélectionnez Suivant.

  2. Sélectionnez Service Principal (automatique), puis sélectionnez Suivant.

  3. Sélectionnez Abonnement pour le niveau d’étendue.

  4. Entrez les valeurs suivantes pour chaque paramètre.

    Réglage Valeur
    Abonnement Votre abonnement Azure
    groupe de ressources Sélectionnez celui que vous avez créé précédemment
    Nom de la connexion de service Connexion au cluster Kubernetes
  5. Vérifiez que la case à cocher Accorder l’autorisation d’accès à tous les pipelines est cochée.

  6. Sélectionnez Enregistrer lorsque vous avez terminé.

Créer un environnement de pipeline

  1. Sélectionnez Pipelines, puis sélectionnez Environnements.

    Capture d’écran d’Azure Pipelines montrant l’option de menu Environnements.

  2. Sélectionnez Créer un environnement pour créer un environnement.

  3. Dans le champ Nom , entrez Dev.

  4. Sélectionnez Aucun dans la section Ressource , puis sélectionnez Créer pour créer votre environnement de pipeline.

Mettre à jour le manifeste de déploiement Kubernetes

Dans cette section, vous allez mettre à jour le manifeste Kubernetes deployment.yml pour pointer vers le registre de conteneurs que vous avez créé précédemment.

  1. Accédez à votre compte GitHub et sélectionnez le référentiel que vous avez forked pour ce module : mslearn-tailspin-spacegame-web-kubernetes.

  2. Ouvrez le fichier manifestes/deployment.yml en mode édition.

    Capture d’écran de GitHub montrant l’emplacement de l’icône du mode d’édition.

  3. Modifiez les références de l’image conteneur pour utiliser votre serveur de connexion ACR. Le manifeste suivant utilise tailspinspacegame2439.azurecr.io comme exemple.

    apiVersion : apps/v1
    kind: Deployment
    metadata:
      name: web
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: web
      template:
        metadata:
          labels:
            app: web
        spec:
          containers:
            - name: web
              image: tailspinspacegame4692.azurecr.io/web
              ports:
              - containerPort: 80
    
    apiVersion : apps/v1
    kind: Deployment
    metadata:
      name: leaderboard
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: leaderboard
      template:
        metadata:
          labels:
            app: leaderboard
        spec:
          containers:
            - name: leaderboard
              image: tailspinspacegame4692.azurecr.io/leaderboard
              ports:
              - containerPort: 80
    
  4. Validez les modifications apportées à votre branche main.