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
- Opérations Azure IoT déployées – Démarrage rapide : Exécuter Opérations Azure IoT dans GitHub Codespaces avec K3s
- Déploiement des composants Dapr du MQTT broker – Déploiement des composants Dapr du MQTT broker
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 :
Empaquetez l’application dans un conteneur avec la commande suivante :
docker build . -t my-dapr-app
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.
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>
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.