Tutoriel : utiliser des services PaaS avec un cluster Azure Kubernetes Service (AKS)

Avec Kubernetes, vous pouvez utiliser des services PaaS, tels qu’Azure Service Bus, pour développer et exécuter vos applications.

Dans ce tutoriel, vous allez créer un espace de noms et une file d’attente Azure Service Bus pour tester votre application. Vous allez apprendre à effectuer les actions suivantes :

  • Créez un espace de noms et une file d’attente Azure Service Bus.
  • Mettez à jour le fichier manifeste Kubernetes pour utiliser la file d’attente Azure Service Bus.
  • Testez l’application mise à jour en plaçant une commande.

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, créé un cluster Kubernetes et déployé une application. Pour suivre ce didacticiel, vous avez besoin du fichier manifeste Kubernetes aks-store-quickstart.yaml déjà créé. Ce téléchargement de fichier était inclus avec le code source de l’application dans un didacticiel précédent. Vérifiez que vous avez cloné le référentiel et modifié les répertoires dans le référentiel cloné. Si vous n’avez pas effectué ces étapes et voulez suivre cette procédure, commencez par Tutoriel 1 : préparer une application pour AKS.

Ce didacticiel crée des ressources Azure Service Bus facturables. Pour effectuer ces étapes, utilisez une identité qui peut créer et gérer des ressources Service Bus et mettre à jour des charges de travail AKS dans votre groupe de ressources, telles que Contributeur ou Propriétaire.

Ce tutoriel nécessite l’installation de AKS desktop.

Créer des variables d’environnement

  • Utilisez le Azure CLI pour créer les variables d’environnement suivantes à utiliser pour les commandes de ce didacticiel :

    LOC_NAME=westus2
    RAND=$RANDOM
    RG_NAME=myResourceGroup
    AKS_NAME=myAKSCluster
    SB_NS=sb-store-demo-$RAND
    

Créer un espace de noms Azure Service Bus et une file d’attente

Dans les didacticiels précédents, vous avez utilisé un conteneur RabbitMQ pour stocker les commandes soumises par le order-service. Dans ce tutoriel, vous utilisez un espace de noms Azure Service Bus pour fournir un conteneur d’étendue pour les ressources Service Bus au sein de l’application. Vous utilisez également une file d’attente Azure Service Bus pour envoyer et recevoir des messages entre les composants de l’application. Pour plus d’informations sur Azure Service Bus, consultez Créer un espace de noms et une file d’attente Azure Service Bus.

Dans ce flux, order-service envoie des messages à la file d’attente orders à l’aide de la règle d’autorisation sender et de la clé que vous créez dans cette section.

Utilisez le Azure CLI pour créer les variables d’environnement suivantes à utiliser pour les commandes de ce didacticiel.

  1. Créez un espace de noms Azure Service Bus à l’aide de la az servicebus namespace create commande.

    az servicebus namespace create --name $SB_NS --resource-group $RG_NAME --location $LOC_NAME
    

    Continuez une fois que la commande s’est exécutée avec succès et a renvoyé les détails de l’espace de noms.

  2. Créez une file d’attente Azure Service Bus à l’aide de la commande az servicebus queue create.

    az servicebus queue create --name orders --resource-group $RG_NAME --namespace-name $SB_NS
    

    Vérifiez que la file d’attente existe avant de continuer :

    az servicebus queue show --name orders --resource-group $RG_NAME --namespace-name $SB_NS --query name -o tsv
    
  3. Créez une règle d’autorisation Azure Service Bus à l’aide de la commande az servicebus queue authorization-rule create.

    az servicebus queue authorization-rule create \
        --name sender \
        --namespace-name $SB_NS \
        --resource-group $RG_NAME \
        --queue-name orders \
        --rights Send
    
  4. Obtenez les informations d’identification Azure Service Bus pour une utilisation ultérieure à l’aide des commandes az servicebus namespace show et az servicebus queue authorization-rule keys list.

    az servicebus namespace show --name $SB_NS --resource-group $RG_NAME --query name -o tsv
    az servicebus queue authorization-rule keys list --namespace-name $SB_NS --resource-group $RG_NAME --queue-name orders --name sender --query primaryKey -o tsv
    

    Enregistrez ces valeurs pour l’étape de mise à jour du manifeste :

    • <REPLACE_WITH_YOUR_ACR_NAME> : le nom de votre Azure Container Registry issu des tutoriels précédents.
    • <REPLACE_WITH_YOUR_SB_NS_HOSTNAME>: $SB_NS.servicebus.windows.net.
    • <REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>: valeur primaryKey de la sortie de la commande.

Mise à jour du fichier manifeste Kubernetes

  1. Accédez à Projets dans le bureau AKS et sélectionnez celui que vous avez créé dans le didacticiel précédent. my-dev-frontend

  2. Sélectionnez l’onglet Ressources, puis sélectionnez Déploiement des> charges de travail: order-service. Capture d’écran montrant la modification du déploiement, Ressources, Charges de travail, Déploiement, Order-service.

  3. Sélectionnez l’éditeur.

  4. Supprimez les sections StatefulSet, ConfigMap et Service existantes rabbitmq . Remplacez la section Déploiement existant order-service par le contenu suivant. Copiez et collez le contenu :

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: order-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: order-service
      template:
        metadata:
          labels:
            app: order-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: order-service
            image: <REPLACE_WITH_YOUR_ACR_NAME>.azurecr.io/aks-store-demo/order-service:latest
            ports:
            - containerPort: 3000
            env:
            - name: ORDER_QUEUE_HOSTNAME
              value: "<REPLACE_WITH_YOUR_SB_NS_HOSTNAME>" # Example: sb-store-demo-123456.servicebus.windows.net
            - name: ORDER_QUEUE_PORT
              value: "5671"
            - name: ORDER_QUEUE_TRANSPORT
              value: "tls"
            - name: ORDER_QUEUE_USERNAME
              value: "sender"
            - name: ORDER_QUEUE_PASSWORD
              value: "<REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>"
            - name: ORDER_QUEUE_NAME
              value: "orders"
            - name: FASTIFY_ADDRESS
              value: "0.0.0.0"
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
            startupProbe:
              httpGet:
                path: /health
                port: 3000
              failureThreshold: 5
              initialDelaySeconds: 20
              periodSeconds: 10
            readinessProbe:
              httpGet:
                path: /health
                port: 3000
              failureThreshold: 3
              initialDelaySeconds: 3
              periodSeconds: 5
            livenessProbe:
              httpGet:
                path: /health
                port: 3000
              failureThreshold: 5
              initialDelaySeconds: 3
              periodSeconds: 3
    

    Capture d’écran montrant l’utilisation de l’éditeur pour mettre à jour le déploiement YAML.

    Remarque

    L’ajout direct d’informations sensibles, telles que des clés API, à vos fichiers manifeste Kubernetes n’est pas sécurisé et risque d’être validé accidentellement dans les référentiels de code. Cet exemple l’ajoute par souci de simplicité. Pour les charges de travail de production, utilisez l’identité managée pour vous authentifier auprès d’Azure Service Bus, ou stockez vos secrets dans Azure Key Vault.

  5. Conservez la mise à jour en sélectionnant Enregistrer & Appliquer.

  6. Vérifiez que le order-service déploiement mis à jour a atteint un état sain dans la vue de la charge de travail avant de continuer.

Déployer l’application mise à jour

  1. Déployez l’application mise à jour à l’aide de la kubectl apply commande.

    kubectl apply -f aks-store-quickstart.yaml
    

    L’exemple de sortie suivant montre les ressources mises à jour avec succès :

    deployment.apps/order-service configured
    service/order-service unchanged
    deployment.apps/product-service unchanged
    service/product-service unchanged
    deployment.apps/store-front configured
    service/store-front unchanged
    
  2. Vérifiez que le déploiement mis à jour est en cours d’exécution.

    kubectl get pods
    

Continuez lorsque les pods d’application sont à l’état Running.

Test de l’application

Passer une commande d’exemple

Poste de travail AKS

Obtenez l’adresse IP publique en accédant à Ressource>Réseau>Service : store-front>IP externe.

Capture d’écran montrant l’obtention de l’adresse IP externe.

Ligne de commande

  1. Obtenez l’adresse IP externe du service store-front à l’aide de la commande kubectl get service.

    kubectl get service store-front
    

    Si EXTERNAL-IP est <pending>, attendez une minute et exécutez de nouveau la commande jusqu’à ce qu’une adresse IP publique apparaisse.

  2. Accédez à l’adresse IP externe du service store-front dans votre navigateur à l’aide de http://<external-ip>.

  3. Passez une commande en choisissant un produit et en sélectionnant Ajouter au panier.

  4. Sélectionnez Panier pour afficher votre commande, puis sélectionnez Finaliser la commande.

Afficher la commande dans la file d’attente Azure Service Bus

  1. Accédez au portail Microsoft Azure et ouvrez l’espace de noms Azure Service Bus que vous avez créé précédemment.
  2. Sous Entités, sélectionnez Files d’attente, puis sélectionnez la file d’attente des commandes.
  3. Dans la file d’attente des commandes, sélectionnez Service Bus Explorer.
  4. Sélectionnez Aperçu depuis le début pour afficher la commande que vous avez envoyée.

Étapes suivantes

Dans ce tutoriel, vous avez utilisé Azure Service Bus pour mettre à jour et tester l’exemple d’application. Vous avez appris à :

  • Créez un espace de noms et une file d’attente Azure Service Bus.
  • Mettez à jour le fichier manifeste Kubernetes pour utiliser la file d’attente Azure Service Bus.
  • Testez l’application mise à jour en plaçant une commande.

Dans le tutoriel suivant, vous allez apprendre à mettre à l’échelle une application dans AKS.