Partage via


Tutoriel : déployer une application sur Azure Kubernetes Service (AKS)

Kubernetes fournit une plateforme distribuée destinée aux applications en conteneur. Vous générez et déployez vos propres applications et services dans un cluster Kubernetes, et vous laissez le cluster gérer la disponibilité et la connectivité.

Dans ce didacticiel (le quatrième d’une série de sept), vous déployez un exemple d’application dans un cluster Kubernetes. Vous allez apprendre à effectuer les actions suivantes :

  • Mettre à jour un fichier manifeste Kubernetes.
  • Exécution d’une application dans Kubernetes.
  • Test de l'application

Conseil

Avec AKS, vous pouvez utiliser les approches suivantes pour la gestion de la configuration :

Avant de commencer

Dans les didacticiels précédents, vous avez empaqueté une application dans une image conteneur, chargé l’image dans Azure Container Registry et créé un cluster Kubernetes. Pour terminer ce didacticiel, vous avez besoin du fichier aks-store-quickstart.yaml manifeste Kubernetes précréé. Ce fichier a été téléchargé dans le code source de l’application à partir de Tutoriel 1 - Préparer l’application pour AKS.

Ce tutoriel nécessite Azure CLI version 2.0.53 ou ultérieure. Vérifiez votre version à l’aide de az --version. Pour installer ou mettre à niveau Azure CLI, consultez Installer Azure CLI.

Mettre à jour le fichier manifeste

Dans ces didacticiels, votre instance Azure Container Registry (ACR) stocke l’image conteneur de l’exemple d’application. Pour déployer l’application, vous devez mettre à jour le nom de l’image dans le fichier manifeste Kubernetes afin d’inclure le nom de votre serveur de connexion ACR.

  1. Obtenez l’adresse de votre serveur de connexion à l’aide de la commande az acr list et interrogez votre serveur de connexion.

    az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
    
  2. Vérifiez que vous êtes dans le répertoire aks-store-demo cloné, puis ouvrez le fichier manifeste aks-store-quickstart.yaml avec un éditeur de texte.

  3. Mettez à jour la propriété image pour les conteneurs en remplaçant ghcr.io/azure-samples par le nom de votre serveur de connexion ACR.

    containers:
    ...
    - name: order-service
      image: <acrName>.azurecr.io/aks-store-demo/order-service:latest
    ...
    - name: product-service
      image: <acrName>.azurecr.io/aks-store-demo/product-service:latest
    ...
    - name: store-front
      image: <acrName>.azurecr.io/aks-store-demo/store-front:latest
    ...
    
  4. Enregistrez et fermez le fichier.

Exécution de l'application

  1. Déployez l’application à l’aide de la commande kubectl apply, qui analyse le fichier manifeste et crée les objets Kubernetes définis.

    kubectl apply -f aks-store-quickstart.yaml
    

    L’exemple de sortie suivant montre les ressources correctement créées dans le cluster AKS :

    statefulset.apps/rabbitmq created
    configmap/rabbitmq-enabled-plugins created
    service/rabbitmq created
    deployment.apps/order-service created
    service/order-service created
    deployment.apps/product-service created
    service/product-service created
    deployment.apps/store-front created
    service/store-front created
    
  2. Vérifiez que le déploiement réussit en consultant les pods avec kubectl

    kubectl get pods
    

Test de l’application

Quand l’application s’exécute, un service Kubernetes expose le front-end de l’application sur Internet. L’exécution de ce processus peut prendre plusieurs minutes.

Ligne de commande

  1. Surveillez la progression avec la commande kubectl get service et l’argument --watch.

    kubectl get service store-front --watch
    

    Au début, EXTERNAL-IP pour le service store-front apparaît comme <pending> :

    store-front   LoadBalancer   10.0.34.242   <pending>     80:30676/TCP   5s
    
  2. Quand l’adresse EXTERNAL-IP passe de <pending> à une adresse IP publique, utilisez CTRL-C pour arrêter le processus de surveillance kubectl.

    L’exemple de sortie suivant montre une adresse IP publique valide affectée au service :

    store-front   LoadBalancer   10.0.34.242   52.179.23.131   80:30676/TCP   67s
    
  3. Affichez l’application en action en ouvrant un navigateur web et en accédant à l’adresse IP externe de votre service : http://<external-ip>.

    Capture d’écran de l’exemple d’application AKS Store.

Si l’application ne s’est pas chargée, il y a peut-être un problème d’autorisation avec votre registre d’images. Pour visualiser l’état de vos conteneurs, utilisez la commande kubectl get pods. Si vous ne pouvez pas extraire les images conteneur, consultez S’authentifier auprès d’Azure Container Registry à partir d’Azure Kubernetes Service.

Portail Azure

Accédez au Portail Azure pour rechercher vos informations de déploiement.

  1. Accédez à votre ressource de cluster AKS.

  2. Dans le menu du service, sous Ressources Kubernetes, sélectionnez Services et entrées.

  3. Copiez l’adresse IP externe affichée dans la colonne pour le service store-front.

  4. Collez l’adresse IP dans votre navigateur pour visiter la page de votre magasin.

    Capture d’écran de l’exemple d’application AKS Store.

Nettoyer les ressources

Étant donné que vous avez validé la fonctionnalité de l’application, vous pouvez désormais supprimer le cluster de l’application. Nous allons redéployer l’application dans le tutoriel suivant.

  1. Pour arrêter et supprimer les instances de conteneur et les ressources, utilisez la commande kubectl delete.

    kubectl delete -f aks-store-quickstart.yaml
    
  2. Vérifiez que tous les pods d’application ont été supprimés à l’aide de la commande kubectl get pods.

    kubectl get pods
    

Étapes suivantes

Dans ce tutoriel, vous avez déployé un exemple d’application Azure sur un cluster Kubernetes dans AKS. Vous avez appris à :

  • Mettre à jour un fichier manifeste Kubernetes.
  • Exécution d’une application dans Kubernetes.
  • Test de l'application

Dans le tutoriel suivant, vous allez apprendre à utiliser les services PaaS pour les charges de travail avec état dans Kubernetes.