Använda Dapr för att utveckla distribuerade programarbetsbelastningar som kommunicerar med MQTT-koordinator
Om du vill använda dapr-anslutningsbara komponenter för MQTT-asynkronisering distribuerar du både pub/sub- och state store-komponenterna i programdistributionen tillsammans med ditt Dapr-program. Den här guiden visar hur du distribuerar ett program med hjälp av komponenterna Dapr SDK och MQTT Broker.
Förutsättningar
- Azure IoT-åtgärder distribuerade – Snabbstart: Kör Azure IoT-åtgärder i GitHub Codespaces med K3s
- MQTT Broker Dapr-komponenter distribuerade – Distribuera Dapr-komponenter för MQTT-koordinator
Skapa ett Dapr-program
Skapa programmet
Det första steget är att skriva ett program som använder en Dapr SDK för att publicera/prenumerera eller utföra tillståndshantering.
- Snabbstart för Att publicera och prenumerera på Dapr
- Snabbstart för Dapr State Management
Paketera programmet
När du har skrivit Dapr-programmet skapar du containern:
Paketera programmet i en container med följande kommando:
docker build . -t my-dapr-app
Skicka det till valfritt containerregister, till exempel:
Distribuera ett Dapr-program
Följande distributionsdefinition innehåller volymer för SAT-autentisering och TLS-certifikatkedja och använder Dapr-sidovagnsinmatning för att automatiskt lägga till de pluggbara komponenterna i podden.
Följande definitionskomponenter kan kräva anpassning till ditt specifika program:
Varning
Om dapr-programmet inte lyssnar efter trafik från Dapr-sidovagnen tar du bort anteckningarna dapr.io/app-port
och dapr.io/app-protocol
annars misslyckas Dapr-sidovagnen med att initiera.
Spara följande yaml i en fil med namnet
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>
Distribuera komponenten genom att köra följande kommando:
kubectl apply -f dapr-app.yaml kubectl get pods -w
Podden bör rapportera tre containrar som körs efter ett kort intervall, enligt följande exempelutdata:
NAME READY STATUS RESTARTS AGE ... my-dapr-app 3/3 Running 0 30s
Felsökning
Om programmet inte startar eller om du ser containrarna i CrashLoopBackoff
tillståndet innehåller loggen för containern daprd
ofta användbar information.
Kör följande kommando för att visa loggarna för daprd-komponenten:
kubectl logs -l app=my-dapr-app -c daprd
Nästa steg
Nu när du vet hur du utvecklar ett Dapr-program kan du köra självstudien för att skapa en händelsedriven app med Dapr.