Verwenden von Dapr zum Entwickeln verteilter Anwendungsworkloads, die mit dem MQTT-Broker kommunizieren

Um die pluggbare Dapr-Komponenten für den MQTT-Broker zu verwenden, stellen Sie in Ihrer Anwendungsbereitstellung sowohl die Pub/Sub- als auch die Zustandsspeicherkomponenten 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

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:

  1. Führen Sie den folgenden Befehl aus, um die Anwendung in einen Container zu packen:

    docker build . -t my-dapr-app
    
  2. Übertragen Sie es in Ihre Container Registry Ihrer Wahl, z. B.:

Bereitstellen einer Dapr-Anwendung

Die folgende Deployment-Definition enthält Volumes für die SAT-Authentifizierung und die TLS-Zertifikatskette und verwendet die Dapr-Sidecar-Injektion, um dem Pod die plug-in-fähigen Komponenten automatisch 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, dass die einsteckbaren IoT Operations-Komponenten automatisch in den Pod eingefügt werden.
template:metadata:annotations:dapr.io/app-port Teilt Dapr mit, auf 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 Das Systemauthentifizierungstoken, das zur Authentifizierung der einsteckbaren Dapr-Komponenten beim MQTT-Broker verwendet wird
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 Einsatz bereitgestellt wurde
containers:name Ein Name für Ihren Anwendungscontainer
containers:image Der Anwendungscontainer, den Sie bereitstellen möchten

Vorsicht

Wenn Ihre Dapr-Anwendung nicht auf Datenverkehr vom Dapr-Sidecar lauscht, entfernen Sie die dapr.io/app-port- und dapr.io/app-protocolAnnotationen, andernfalls kann das Dapr-Sidecar nicht initialisiert werden.

  1. 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>
    
  2. 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 kurzer Zeit anzeigen, dass drei Container 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.