Verwenden von Dapr zum Entwickeln verteilter Anwendungsworkloads, die mit dem MQTT-Broker kommunizieren
Um die austauschbaren Dapr-Komponenten für den MQTT-Broker zu verwenden, stellen Sie sowohl die Komponenten pub/sub als auch state store in Ihrer Anwendungsbereitstellung zusammen mit Ihrer Dapr-Anwendung bereit. In diesem Leitfaden erfahren Sie, wie Sie eine Anwendung mit den austauschbaren Komponenten des Dapr SDK und des MQTT-Brokers bereitstellen.
Voraussetzungen
- Azure IoT Einsatz bereitgestellt – Schnellstartanleitung: Ausführen von Azure IoT Einsatz in GitHub Codespaces mit K3s.
- Dapr-Komponenten für den MQTT-Broker bereitgestellt – Bereitstellen von Dapr-Komponenten für den MQTT-Broker
Erstellen einer Dapr-Anwendung
Erstellen der Anwendung
Der erste Schritt besteht darin, eine Anwendung zu schreiben, die ein Dapr SDK zum Veröffentlichen/Abonnieren (Pub/Sub) oder zum Ausführen der Zustandsverwaltung verwendet.
Packen der Anwendung
Nachdem Sie die Dapr-Anwendung geschrieben haben, erstellen Sie den Container:
Führen Sie den folgenden Befehl aus, um die Anwendung in einen Container zu packen:
docker build . -t my-dapr-app
Pushen Sie ihn in die Container Registry Ihrer Wahl, z. B.:
Bereitstellen einer Dapr-Anwendung
Die folgende Bereitstellungsdefinition enthält Volumes für die SAT-Authentifizierung und die TLS-Zertifikatkette und verwendet Dapr Sidecar Injection, um die austauschbaren Komponenten automatisch im Pod hinzuzufügen.
Die folgenden Definitionskomponenten erfordern möglicherweise Anpassungen an Ihre jeweilige Anwendung:
Komponente Beschreibung template:metadata:annotations:dapr.io/inject-pluggable-components
Ermöglicht das automatische Einfügen der austauschbaren IoT Operations-Komponenten im Pod template:metadata:annotations:dapr.io/app-port
Teilt Dapr mit, an welchem Port Ihre Anwendung lauscht. Wenn Ihre Anwendung dieses Feature nicht verwendet (z. B. bei einem PubSub-Abonnement), entfernen Sie diese Zeile. volumes:mqtt-client-token
Der System Authentication Token zur Authentifizierung der austauschbaren Dapr-Komponenten mit dem MQTT-Broker volumes:aio-ca-trust-bundle
Die Vertrauenskette zur Überprüfung des TLS-Zertifikats des MQTT Vermittlers. Dies ist standardmäßig das Testzertifikat, das mit Azure IoT Operations bereitgestellt wurde containers:name
Ein Name für Ihren Anwendungscontainer containers:image
Der Anwendungscontainer, den Sie bereitstellen möchten
Achtung
Wenn Ihre Dapr-Anwendung nicht auf Datenverkehr vom Dapr-Sidecar lauscht, entfernen Sie die Anmerkungen dapr.io/app-port
und dapr.io/app-protocol
, da andernfalls das Dapr-Sidecar nicht initialisiert werden kann.
Speichern Sie den folgenden YAML-Code in einer Datei namens
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>
Stellen Sie die Komponente bereit, indem Sie den folgenden Befehl ausführen:
kubectl apply -f dapr-app.yaml kubectl get pods -w
Der Pod sollte nach einem kurzen Intervall drei Container melden, die ausgeführt werden, wie in der folgenden Beispielausgabe gezeigt:
NAME READY STATUS RESTARTS AGE ... my-dapr-app 3/3 Running 0 30s
Problembehandlung
Wenn die Anwendung nicht gestartet wird oder die Container mit dem Zustand CrashLoopBackoff
angezeigt werden, enthält das Protokoll für den Container daprd
häufig nützliche Informationen.
Führen Sie den folgenden Befehl aus, um die Protokolle für die daprd-Komponente anzuzeigen:
kubectl logs -l app=my-dapr-app -c daprd
Nächste Schritte
Nachdem Sie nun wissen, wie Sie eine Dapr-Anwendung entwickeln, können Sie das Tutorial Erstellen einer ereignisgesteuerten App mit Dapr abschließen.