Freigeben über


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

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. 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.

  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 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.