Dela via


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

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:

  1. Paketera programmet i en container med följande kommando:

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

Komponent beskrivning
template:metadata:annotations:dapr.io/inject-pluggable-components Gör att IoT Operations-komponenter som kan anslutas automatiskt matas in i podden
template:metadata:annotations:dapr.io/app-port Talar om för Dapr vilken port programmet lyssnar på. Om ditt program inte använder den här funktionen (till exempel en pubsub-prenumeration) tar du bort den här raden
volumes:mqtt-client-token Systemautentiseringstoken som används för att autentisera dapr-anslutbara komponenter med MQTT-koordinatorn
volumes:aio-ca-trust-bundle Förtroendekedjan för att verifiera TLS-certifikatet för MQTT-koordinator. Detta är standard för testcertifikatet som distribueras med Azure IoT Operations
containers:name Ett namn som angetts för programcontainern
containers:image Programcontainern som du vill distribuera

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.

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