Dapr gebruiken om gedistribueerde toepassingsworkloads te ontwikkelen die communiceren met MQTT-broker
Als u de MQTT Broker Dapr-pluggable-onderdelen wilt gebruiken, implementeert u zowel de pub/sub- als statusopslagonderdelen in uw toepassingsimplementatie, samen met uw Dapr-toepassing. Deze handleiding laat zien hoe u een toepassing implementeert met behulp van de Dapr SDK en MQTT Broker Pluggable-onderdelen.
Vereisten
- Geïmplementeerde Azure IoT-bewerkingen - Quickstart: Azure IoT-bewerkingen uitvoeren in GitHub Codespaces met K3s
- MQTT-broker Dapr Components geïmplementeerd - MQTT-broker Dapr-onderdelen implementeren
Een Dapr-toepassing maken
De toepassing bouwen
De eerste stap is het schrijven van een toepassing die gebruikmaakt van een Dapr-SDK voor het publiceren/abonneren of uitvoeren van statusbeheer.
- Quickstart voor Publiceren en abonneren op Dapr
- Quickstart voor Dapr State Management
De toepassing verpakken
Nadat u klaar bent met het schrijven van de Dapr-toepassing, bouwt u de container:
Verpakt de toepassing in een container met de volgende opdracht:
docker build . -t my-dapr-app
Push het naar uw containerregister naar keuze, zoals:
Een Dapr-toepassing implementeren
De volgende implementatiedefinitie bevat volumes voor SAT-verificatie en TLS-certificaatketen en maakt gebruik van Dapr sidecar-injectie om automatisch de pluggable onderdelen aan de Pod toe te voegen.
Voor de volgende definitieonderdelen is mogelijk aanpassing van uw specifieke toepassing vereist:
Onderdeel Beschrijving template:metadata:annotations:dapr.io/inject-pluggable-components
Hiermee kunnen de pluggable onderdelen van IoT Operations automatisch worden geïnjecteerd in de pod template:metadata:annotations:dapr.io/app-port
Geeft aan op welke poort uw toepassing luistert. Als uw toepassing deze functie niet gebruikt (zoals een pubsub-abonnement), verwijdert u deze regel volumes:mqtt-client-token
Het token voor systeemverificatie dat wordt gebruikt voor het verifiëren van de Dapr-pluggable-onderdelen met de MQTT-broker volumes:aio-ca-trust-bundle
De vertrouwensketen voor het valideren van het TLS-certificaat van de MQTT-broker. Dit is standaard ingesteld op het testcertificaat dat is geïmplementeerd met Azure IoT Operations containers:name
Een naam die is opgegeven voor uw toepassingscontainer containers:image
De toepassingscontainer die u wilt implementeren
Let op
Als uw Dapr-toepassing niet luistert naar verkeer van de Dapr-sidecar, verwijdert u de dapr.io/app-port
en dapr.io/app-protocol
aantekeningen , anders kan de Sidecar van Dapr niet worden geïnitialiseerd.
Sla de volgende yaml op in een bestand met de naam
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>
Implementeer het onderdeel door de volgende opdracht uit te voeren:
kubectl apply -f dapr-app.yaml kubectl get pods -w
De pod moet drie containers rapporteren die na een kort interval worden uitgevoerd, zoals wordt weergegeven in de volgende voorbeelduitvoer:
NAME READY STATUS RESTARTS AGE ... my-dapr-app 3/3 Running 0 30s
Probleemoplossing
Als de toepassing niet start of als u de containers in CrashLoopBackoff
de status ziet, bevat het logboek voor de daprd
container vaak nuttige informatie.
Voer de volgende opdracht uit om de logboeken voor het daprd-onderdeel weer te geven:
kubectl logs -l app=my-dapr-app -c daprd
Volgende stappen
Nu u weet hoe u een Dapr-toepassing kunt ontwikkelen, kunt u de zelfstudie uitvoeren om een gebeurtenisgestuurde app te bouwen met Dapr.