Delen via


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

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:

  1. Verpakt de toepassing in een container met de volgende opdracht:

    docker build . -t my-dapr-app
    
  2. 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.

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