Démarrage rapide : Déployer une application à l’aide de l’extension Dapr pour Azure Kubernetes Service (AKS) ou Kubernetes avec Arc

Dans ce guide de démarrage rapide, vous utilisez l’extension Dapr dans un cluster Kubernetes avec AKS ou Arc. Vous déployez un hello world exemple, qui se compose d’une application Python qui génère des messages et d’une application Node.js qui consomme et conserve les messages.

Prérequis

Cloner le référentiel

  1. Clonez le référentiel de démarrage rapide Dapr à l’aide de la git clone commande.

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. Accédez au répertoire dapr-aks-extension-quickstart.

    cd dapr-aks-extension-quickstart
    

Créer et configurer un magasin Redis

Ouvrez le portail Azure pour démarrer le flux de création Azure Redis managé.

  1. Saisissez les informations recommandées conformément au guide de démarrage rapide Créer une instance Azure Managed Redis.

  2. Sélectionnez Créer pour démarrer le déploiement instance Redis.

Vérifier les informations de la ressource

  1. Une fois la ressource Redis déployée, accédez à sa page de vue d’ensemble.

  2. Prenez note des points suivants :

    • Nom d’hôte, trouvé dans la section Essentials de la page vue d’ensemble de la ressource. Le format de nom d’hôte ressemble à : <your-cache-name>.<region>.redis.azure.net.
    • Port SSL, trouvé dans paramètres>avancés. La valeur par défaut est 10000.
  3. Dans votre terminal, activez l’authentification par clé d’accès sur la base de données par défaut.

    az redisenterprise database update \
        --cluster-name <REDIS_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --access-keys-auth Enabled
    
  4. Récupérez la clé primaire de la base de données par défaut et enregistrez-la dans une variable d’environnement.

    export REDIS_PRIMARY_KEY=$(az redisenterprise database list-keys \
        --cluster-name <REDIS_NAME> \
        --resource-group <RESOURCE_GROUP> \
        --query primaryKey \
        -o tsv)
    

Activer l’accès public au réseau

Pour ce scénario, votre instance Redis gérée Azure utilise l’accès réseau public. Veillez à nettoyer les ressources une fois ce guide de démarrage rapide terminé.

  1. Dans le menu de la ressource, sous Paramètres, sélectionnez Réseau.

  2. Définissez l’accès réseau public sur Activé.

Configurer les composants Dapr

Dans le fichier redis.yaml , vous configurez le composant pour utiliser l’authentification par clé d’accès avec TLS.

- name: redisPassword
    secretKeyRef:
        name: redis-secret
        key: redisPassword
- name: useEntraID
    value: "false"
- name: enableTLS
  value: true
  1. Dans votre éditeur de code préféré, accédez au répertoire de déploiement dans l’exemple de dépôt et ouvrez redis.yaml.

  2. Pour redisHost, remplacez la valeur de l’espace réservé <REDIS_HOST>:10000 par le nom d’hôte Azure Managed Redis que vous avez enregistré précédemment dans le portail Azure.

    - name: redisHost
      value: <your-cache-name>.<region>.redis.azure.net:10000
    
  3. Créez le secret Kubernetes utilisé par redisPassword.

    kubectl create secret generic redis-secret \
        --from-literal=redisPassword="$REDIS_PRIMARY_KEY"
    

Appliquer la configuration

Appliquez le fichier redis.yaml à l’aide de la kubectl apply commande.

kubectl apply -f ./deploy/redis.yaml

Sortie attendue

component.dapr.io/statestore created

Déployer l’application Node.js avec le side-car Dapr

Configurer l’application Node.js

  1. Accédez au deploy répertoire et ouvrez workload-identity.yaml.

  2. Remplacez <MANAGED_IDENTITY_CLIENT_ID> par l’ID client de l’identité managée affectée par l’utilisateur que vous avez créée.

  3. Appliquez le manifeste du compte de service avant de déployer des manifestes d’application.

    kubectl apply -f ./deploy/workload-identity.yaml
    

Dans node.yaml, la spécification du pod utilise le libellé Workload Identity et le workload-sa compte de service partagé :

labels:
  app: node
  azure.workload.identity/use: "true"

Appliquer la configuration

  1. Appliquez le déploiement de l’application Node.js à votre cluster avec la commande kubectl apply.

    kubectl apply -f ./deploy/node.yaml
    
  2. Les déploiements Kubernetes sont asynchrones. Avant de passer aux étapes suivantes, vérifiez que le déploiement est terminé avec la commande suivante :

    kubectl rollout status deploy/nodeapp
    
  3. Déployez le service à l’aide de la commande kubectl get svc.

    kubectl get svc nodeapp
    
  4. Notez la EXTERNAL-IP sortie et définissez-la en tant que variable d’environnement.

    export EXTERNAL_IP=<EXTERNAL-IP>
    

Vérifier le service Node.js

  1. À l’aide de curl, appelez le service avec votre EXTERNAL-IP.

    curl $EXTERNAL_IP/ports
    

    Exemple de sortie

    {"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}
    
  2. Ensuite, envoyez un ordre à l’application.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. Confirmez la commande.

    curl $EXTERNAL_IP/order
    

    Sortie attendue

    { "orderId": "42" }
    

Déployer l’application Python avec le side-car Dapr

Configurer l’application Python

Dans python.yaml, la spécification du pod utilise le libellé Workload Identity et le compte de service partagé workload-sa :

labels:
    app: python
    azure.workload.identity/use: "true"

Appliquer la configuration

  1. Déployez l’application Python sur votre cluster Kubernetes avec la commande kubectl apply.

    kubectl apply -f ./deploy/python.yaml
    
  2. Les déploiements Kubernetes sont asynchrones. Avant de passer aux étapes suivantes, vérifiez que le déploiement est terminé avec la commande suivante :

    kubectl rollout status deploy/pythonapp
    

Observer les messages et confirmer la persistance

Maintenant que les applications Node.js et Python sont déployées, vous pouvez observer les messages qui arrivent.

  1. Obtenez les journaux de l’application Node.js à l’aide de la commande kubectl logs.

    kubectl logs --selector=app=node -c node --tail=-1
    

    Sortie attendue

    Got a new order! Order ID: 1
    Successfully persisted state
    Got a new order! Order ID: 2
    Successfully persisted state
    Got a new order! Order ID: 3
    Successfully persisted state
    
  2. Appelez le point de terminaison d’ordre de l’application Node.js à l'aide de curl pour obtenir le dernier ordre.

    curl $EXTERNAL_IP/order
    

    Vous devez voir la sortie de code JSON la plus récente dans la réponse.

Nettoyer les ressources

Si vous ne prévoyez plus d’utiliser les ressources de ce guide de démarrage rapide, vous pouvez supprimer le groupe de ressources, le cluster, l’espace de noms et toutes les ressources associées à l’aide de la commande az group delete .

az group delete --name <your-resource-group>

Étape suivante