Exercice - Configurer votre environnement Azure DevOps
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.
Obtenez et exécutez le projet ADOGenerator dans Visual Studio ou l’IDE de votre choix.
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.
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.
Entrez le nom de votre organisation Azure DevOps, puis appuyez sur Entrée.
Si vous y êtes invité, entrez votre PAT Azure DevOps, puis appuyez sur Entrée.
Entrez un nom de projet tel que Space Game - web - Kubernetes, puis appuyez sur Entrée.
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 .
Sur GitHub, accédez au dépôt mslearn-tailspin-spacegame-web-kubernetes .
Sélectionnez Fork en haut à droite de l’écran.
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 :
- Utiliser des projets privés et publics
- Modifier la visibilité du projet en public ou privé
- Définition de la visibilité du référentiel
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.
Accédez à Boards dans Azure DevOps, puis sélectionnez Boards dans le menu.
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.
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.
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
Accédez au portail Azure et connectez-vous.
Sélectionnez l’option Cloud Shell dans le menu, puis choisissez l’expérience Bash lorsque vous y êtes invité.
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.
À 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 tableSé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.
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
westus2comme 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.
À 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=$RANDOMCré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}"Créez une autre variable Bash pour stocker le nom de votre groupe de ressources.
rgName='tailspin-space-game-rg'Recherchez la dernière version d’AKS.
az aks get-versionsNotez 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.
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 $rgNameExécutez la
az acr createcommande 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 StandardExécutez la
az aks createcommande 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-keysRemarque
L’achèvement du déploiement AKS peut prendre 10 à 15 minutes.
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)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)Exécutez la
az acr listcommande 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 tableVeillez à 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.ioExécutez la
az role assignment createcommande 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.
Connectez-vous à votre organisation Azure DevOps, puis accédez à votre projet.
Sélectionnez Pipelines, puis sélectionnez Bibliothèque dans le volet de navigation gauche.
Sélectionnez groupes de variables, puis sélectionnez + Groupe de variables pour ajouter un nouveau groupe de variables.
Dans la section Propriétés , entrez Release pour le nom du groupe de variables.
Dans la section Variables , sélectionnez Ajouter.
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.
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 à
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
Connectez-vous à votre organisation Azure DevOps, puis accédez à votre projet.
Sélectionnez les paramètres du projet dans le coin inférieur de la page.
Sélectionnez Connexions de service sous la section Pipelines .
Sélectionnez Nouvelle connexion de service, puis Docker Registry, puis sélectionnez Suivant.
En haut de la page, sélectionnez Azure Container Registry, puis sélectionnez Principal du Service pour le type d’authentification.
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 Vérifiez que la case à cocher Accorder l’autorisation d’accès à tous les pipelines est cochée.
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.
Sélectionnez Nouvelle connexion de service, sélectionnez Azure Resource Manager, puis sélectionnez Suivant.
Sélectionnez Service Principal (automatique), puis sélectionnez Suivant.
Sélectionnez Abonnement pour le niveau d’étendue.
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 Vérifiez que la case à cocher Accorder l’autorisation d’accès à tous les pipelines est cochée.
Sélectionnez Enregistrer lorsque vous avez terminé.
Créer un environnement de pipeline
Sélectionnez Pipelines, puis sélectionnez Environnements.
Sélectionnez Créer un environnement pour créer un environnement.
Dans le champ Nom , entrez Dev.
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.
Accédez à votre compte GitHub et sélectionnez le référentiel que vous avez forked pour ce module : mslearn-tailspin-spacegame-web-kubernetes.
Ouvrez le fichier manifestes/deployment.yml en mode édition.
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: 80Validez les modifications apportées à votre branche
main.