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, la partie cinq sur sept, vous créez 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 effectuer ce didacticiel, vous avez besoin du fichier manifeste Kubernetes aks-store-quickstart.yaml. 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 nécessite Azure CLI version 2.34.1 ou ultérieure. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Créer des variables d’environnement

  • Créez les variables d’environnement suivantes à utiliser pour les commandes de ce didacticiel :

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

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

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.

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

    az servicebus namespace create --name $SB_NS --resource-group $RG_NAME --location $LOC_NAME
    
  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
    
  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
    

Mise à jour du fichier manifeste Kubernetes

  1. Configurez kubectl pour qu’il se connecte à votre cluster à l’aide de la commande az aks get-credentials.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Ouvrez le fichier aks-store-quickstart.yaml dans un éditeur de texte.

  3. Supprimez les sections StatefulSet, ConfigMap et Service rabbitmq existantes et remplacez la section Deployment order-service existante par le contenu suivant :

    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
    

    Remarque

    L’ajout direct d’informations sensibles, telles que des clés API, à vos fichiers manifestes Kubernetes n’est pas sécurisé et peut être accidentellement validée dans des référentiels de code. Nous les avons ajoutées ici pour plus 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.

  4. Enregistrez et fermez le fichier mis à jour aks-store-quickstart.yaml.

Déployer l’application mise à jour

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

    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
    

Test de l’application

Passer un exemple 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
    
  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.