Partager via


Déploiement de conteneurs dans Azure

Conseil / Astuce

Ce contenu est un extrait de l’eBook, Architecting Cloud Native .NET Applications pour Azure, disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.

Miniature de la couverture du livre électronique Applications .NET natives cloud pour Azure.

Nous avons abordé les conteneurs dans ce chapitre et dans le chapitre 1. Nous avons vu que les conteneurs offrent de nombreux avantages aux applications natives cloud, notamment la portabilité. Dans le cloud Azure, vous pouvez déployer les mêmes services conteneurisés dans les environnements intermédiaires et de production. Azure propose plusieurs options pour l’hébergement de ces charges de travail conteneurisées :

  • Azure Kubernetes Services (AKS)
  • Azure Container Instance (ACI)
  • Azure Web Apps pour conteneurs

Azure Container Registry (Service d'enregistrement de conteneurs Azure)

Lors du conteneurisation d’un microservice, vous créez d’abord une « image » de conteneur. L’image est une représentation binaire du code de service, des dépendances et du runtime. Bien que vous puissiez créer manuellement une image à l’aide de la Docker Build commande à partir de l’API Docker, une meilleure approche consiste à la créer dans le cadre d’un processus de génération automatisé.

Une fois créées, les images conteneur sont stockées dans des registres de conteneurs. Ils vous permettent de générer, stocker et gérer des images conteneur. De nombreux registres sont disponibles, tant publics que privés. Azure Container Registry (ACR) est un service de registre de conteneurs entièrement managé dans le cloud Azure. Il conserve vos images à l’intérieur du réseau Azure, ce qui réduit le temps de les déployer sur des hôtes de conteneur Azure. Vous pouvez également les sécuriser à l’aide des mêmes procédures de sécurité et d’identité que celles que vous utilisez pour d’autres ressources Azure.

Vous créez un Registre de conteneurs Azure à l’aide du portail Azure, d’Azure CLI ou des outils PowerShell. La création d’un registre dans Azure est simple. Il nécessite un abonnement Azure, un groupe de ressources et un nom unique. La figure 3-10 montre les options de base pour la création d’un registre, qui sera hébergé à l’adresse registryname.azurecr.io.

Créer un registre de conteneurs

Figure 3-10. Créer un registre de conteneurs

Une fois que vous avez créé le Registre, vous devez vous authentifier auprès de celui-ci avant de pouvoir l’utiliser. En règle générale, vous allez vous connecter au Registre à l’aide de la commande Azure CLI :

az acr login --name *registryname*

Une fois authentifié, vous pouvez utiliser des commandes Docker pour y envoyer des images conteneur. Avant de pouvoir le faire, toutefois, vous devez baliser votre image avec le nom complet (URL) de votre serveur de connexion ACR. Il aura le format registryname.azurecr.io.

docker tag mycontainer myregistry.azurecr.io/mycontainer:v1

Une fois que vous avez marqué l’image, vous utilisez la docker push commande pour envoyer (push) l’image à votre instance ACR.

docker push myregistry.azurecr.io/mycontainer:v1

Une fois que vous avez envoyé une image au Registre, il est judicieux de supprimer l’image de votre environnement Docker local à l’aide de cette commande :

docker rmi myregistry.azurecr.io/mycontainer:v1

Comme meilleure pratique, vous ne devez pas envoyer manuellement d’images à un registre de conteneurs. Utilisez plutôt un pipeline de build défini dans un outil tel que GitHub ou Azure DevOps. En savoir plus dans le chapitreCloud-Native DevOps.

Tâches ACR

ACR Tasks est un ensemble de fonctionnalités disponibles à partir d’Azure Container Registry. Il étend votre cycle de développement en boucle interne en créant et en gérant des images conteneur dans le cloud Azure. Au lieu d’invoquer docker build et docker push localement sur votre machine de développement, ils sont automatiquement gérés par ACR Tasks dans le cloud.

La commande AZ CLI suivante génère à la fois une image conteneur et l’envoie à ACR :

# create a container registry
az acr create --resource-group myResourceGroup --name myContainerRegistry008 --sku Basic

# build container image in ACR and push it into your container registry
az acr build --image sample/hello-world:v1  --registry myContainerRegistry008 --file Dockerfile .

Comme vous pouvez le voir à partir du bloc de commande précédent, il n’est pas nécessaire d’installer Docker Desktop sur votre ordinateur de développement. En outre, vous pouvez configurer des déclencheurs de tâche ACR pour reconstruire des images de conteneurs sur le code source et les mises à jour des images de base.

Azure Kubernetes Service

Nous avons discuté longuement d’Azure Kubernetes Service (AKS) dans ce chapitre. Nous avons vu qu’il s’agit de l’orchestrateur de conteneur de facto qui gère les applications cloud natives en conteneur.

Une fois que vous avez déployé une image dans un registre, par exemple ACR, vous pouvez configurer AKS pour extraire et déployer automatiquement une image. Avec un pipeline CI/CD en place, vous pouvez configurer une stratégie de mise en production canary pour réduire le risque lié au déploiement rapide des mises à jour. La nouvelle version de l’application est initialement configurée en production sans trafic routé vers celle-ci. Ensuite, le système acheminera un petit pourcentage d’utilisateurs vers la version nouvellement déployée. À mesure que l’équipe gagne en confiance dans la nouvelle version, elle peut déployer davantage d’instances et mettre hors service l’ancienne. AKS prend facilement en charge ce style de déploiement.

Comme avec la plupart des ressources dans Azure, vous pouvez créer un cluster Azure Kubernetes Service à l’aide du portail, de la ligne de commande ou des outils d’automatisation tels que Helm ou Terraform. Pour commencer à utiliser un nouveau cluster, vous devez fournir les informations suivantes :

  • Abonnement Azure
  • groupe de ressources
  • Nom du cluster Kubernetes
  • Région
  • Version de Kubernetes
  • Préfixe du nom DNS
  • Taille du nœud
  • Nombre de nœuds

Ces informations sont suffisantes pour commencer. Dans le cadre du processus de création dans le portail Azure, vous pouvez également configurer des options pour les fonctionnalités suivantes de votre cluster :

  • Échelle
  • Authentification
  • Réseautage
  • Supervision
  • Étiquettes

Ce guide de démarrage rapide décrit le déploiement d’un cluster AKS à l’aide du portail Azure.

Pont Azure vers Kubernetes

Les applications conçues pour le cloud peuvent croître et devenir complexes, nécessitant des ressources de calcul importantes pour fonctionner. Dans ces scénarios, l’ensemble de l’application ne peut pas être hébergé sur un ordinateur de développement (en particulier un ordinateur portable). Azure Bridge to Kubernetes résout les lacunes. Il permet aux développeurs d’utiliser une version locale de leur service tout en hébergeant l’ensemble de l’application dans un cluster de développement AKS.

Quand ils sont prêts, les développeurs testent leurs modifications localement lors de l’exécution sur l’application complète dans le cluster AKS, sans répliquer les dépendances. Sous le capot, le pont fusionne le code de l’ordinateur local avec des services dans AKS. Les développeurs peuvent itérer et déboguer rapidement du code directement dans Kubernetes à l’aide de Visual Studio ou de Visual Studio Code.

Gabe Monroy, ancien vice-président de la gestion des produits chez Microsoft, décrit bien :

Imaginez que vous êtes un nouvel employé qui tente de résoudre un bogue dans une application de microservices complexe composée de dizaines de composants, chacun avec ses propres services de configuration et de stockage. Pour commencer, vous devez configurer votre environnement de développement local afin qu’il puisse imiter la production, notamment la configuration de votre IDE, la création d’une chaîne d’outils, des dépendances de service conteneurisées, un environnement Kubernetes local, des simulations pour les services de stockage, etc. Avec tout le temps impliqué la configuration de votre environnement de développement, la résolution de ce premier bogue peut prendre des jours ! Vous pouvez également utiliser Bridge pour Kubernetes et AKS.