Partager via


Utiliser Dapr pour développer des charges de travail d’applications distribuées qui communiquent avec MQTT broker

Pour utiliser les composants enfichables MQTT broker Dapr, déployez à la fois les composants de publication/d’abonnement et de magasin d’états dans votre déploiement d’application avec votre application Dapr. Ce guide vous montre comment déployer une application à l’aide du kit de développement logiciel (SDK) Dapr et des composants MQTT broker enfichables.

Prérequis

Création d’une application Dapr

Génération de l’application

La première étape consiste à écrire une application qui utilise le SDK Dapr pour publier/s’abonner ou effectuer une gestion des états.

Empaqueter l’application

Dès que vous avez terminé d’écrire l’application Dapr, générez le conteneur :

  1. Empaquetez l’application dans un conteneur avec la commande suivante :

    docker build . -t my-dapr-app
    
  2. Poussez-le vers le registre de conteneurs de votre choix, par exemple :

Déployer une application Dapr

La définition de déploiement suivante contient des volumes pour l’authentification SAT et la chaîne de certificats TLS, et utilise l’injection de side-car Dapr pour ajouter automatiquement les composants enfichables au pod.

Les composants de définition suivants peuvent nécessiter une personnalisation pour votre application spécifique :

Composant Description
template:metadata:annotations:dapr.io/inject-pluggable-components Permet aux composants IoT Operations enfichables d’être injectés automatiquement dans le pod.
template:metadata:annotations:dapr.io/app-port Indique à Dapr sur quel port votre application écoute. Si votre application n’utilise pas cette fonctionnalité (par exemple, s’il s’agit d’un abonnement pubsub), supprimez cette ligne.
volumes:mqtt-client-token Le jeton d’authentification système utilisé pour authentifier les composants Dapr enfichables dans le répartiteur MQTT broker
volumes:aio-ca-trust-bundle La chaîne d’approbation permettant de valider le certificat TLS de MQTT broker. La valeur par défaut est le certificat de test déployé avec les Opérations Azure IoT
containers:name Nom donné à votre conteneur d’application
containers:image Le conteneur d’application que vous voulez déployer

Attention

Si votre application Dapr n’écoute pas le trafic du side-car Dapr, supprimez les annotations dapr.io/app-port et dapr.io/app-protocol, car sinon l’initialisation du side-car Dapr échouera.

  1. Enregistrez le yaml suivant dans un fichier nommé dapr-app.yaml :

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: dapr-client
      namespace: azure-iot-operations
      annotations:
        aio-broker-auth/group: dapr-workload
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-dapr-app
      namespace: azure-iot-operations
    spec:
      selector:
        matchLabels:
          app: my-dapr-app
      template:
        metadata:
          labels:
            app: my-dapr-app
          annotations:
            dapr.io/enabled: "true"
            dapr.io/inject-pluggable-components: "true"
            dapr.io/app-id: "my-dapr-app"
            dapr.io/app-port: "6001"
            dapr.io/app-protocol: "grpc"
        spec:
          serviceAccountName: dapr-client
    
          volumes:
          # SAT used to authenticate between Dapr and the MQTT broker
          - name: mqtt-client-token
            projected:
              sources:
                - serviceAccountToken:
                    path: mqtt-client-token
                    audience: aio-internal
                    expirationSeconds: 86400
    
          # Certificate chain for Dapr to validate the MQTT broker
          - name: aio-ca-trust-bundle
            configMap:
              name: azure-iot-operations-aio-ca-trust-bundle
    
          containers:
          # Container for the Dapr application 
          - name: mq-dapr-app
            image: <YOUR_DAPR_APPLICATION>
    
  2. Déployez le composant en exécutant la commande suivante :

    kubectl apply -f dapr-app.yaml
    kubectl get pods -w
    

    Le pod doit signaler trois conteneurs en cours d’exécution après un court intervalle, comme indiqué dans l’exemple de sortie suivant :

    NAME                          READY   STATUS              RESTARTS   AGE
    ...
    my-dapr-app                   3/3     Running             0          30s
    

Dépannage

Si l’application ne démarre pas ou si les conteneurs sont à l’état CrashLoopBackoff, le journal du conteneur daprd contient des informations utiles.

Exécutez la commande suivante pour afficher les journaux du composant daprd :

kubectl logs -l app=my-dapr-app -c daprd

Étapes suivantes

Maintenant que vous savez comment développer une application Dapr, vous pouvez exécuter le tutoriel pour Créer une application pilotée par les événements avec Dapr.