Sdílet prostřednictvím


Použití Dapr k vývoji distribuovaných aplikačních úloh, které komunikují s zprostředkovatelem MQTT

Pokud chcete použít komponenty dapr pluggable zprostředkovatele MQTT, nasaďte komponenty pub/sub i state store v nasazení aplikace spolu s vaší aplikací. V této příručce se dozvíte, jak nasadit aplikaci pomocí komponent pluggable zprostředkovatele Dapr SDK a MQTT.

Požadavky

Vytvoření aplikace Dapr

Sestavení aplikace

Prvním krokem je napsat aplikaci, která k publikování nebo odběru nebo správě stavu používá sadu Dapr SDK.

  • Rychlý start k publikování a přihlášení k odběru dapr
  • Rychlý start pro správu stavu Dapr

Zabalení aplikace

Po napsání aplikace Dapr sestavte kontejner:

  1. Zabalte aplikaci do kontejneru pomocí následujícího příkazu:

    docker build . -t my-dapr-app
    
  2. Nasdílejte ho do služby Container Registry podle svého výběru, například:

Nasazení aplikace Dapr

Následující definice nasazení obsahuje svazky pro ověřování SAT a řetěz certifikátů TLS a využívá injektáž sajdkáru Dapr k automatickému přidání připojitelných komponent do podu.

Následující komponenty definic můžou vyžadovat přizpůsobení konkrétní aplikace:

Komponenta Popis
template:metadata:annotations:dapr.io/inject-pluggable-components Umožňuje, aby se do podu automaticky vložily komponenty pro operace IoT.
template:metadata:annotations:dapr.io/app-port Řekne Dapr, na kterém portu vaše aplikace naslouchá. Pokud vaše aplikace tuto funkci nepoužívá (například předplatné pubsub), odeberte tento řádek.
volumes:mqtt-client-token Ověřovací token systému používaný k ověřování komponent pluggable dapr pomocí zprostředkovatele MQTT
volumes:aio-ca-trust-bundle Řetěz důvěryhodnosti pro ověření certifikátu TLS zprostředkovatele MQTT. Výchozí hodnota je testovacího certifikátu nasazeného pomocí operací Azure IoT.
containers:name Název zadaný kontejneru aplikace
containers:image Kontejner aplikace, který chcete nasadit

Upozornění

Pokud vaše aplikace Dapr neposlouchá provoz ze sajdkáru Dapr, odeberte dapr.io/app-port anotace dapr.io/app-protocol , jinak se nepovede inicializovat sajdkárna Dapr.

  1. Uložte následující yaml do souboru s názvem 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. Nasaďte komponentu spuštěním následujícího příkazu:

    kubectl apply -f dapr-app.yaml
    kubectl get pods -w
    

    Pod by měl hlásit tři kontejnery spuštěné po krátkém intervalu, jak je znázorněno v následujícím příkladu výstupu:

    NAME                          READY   STATUS              RESTARTS   AGE
    ...
    my-dapr-app                   3/3     Running             0          30s
    

Řešení problému

Pokud se aplikace nespustí nebo uvidíte kontejnery ve CrashLoopBackoff stavu, protokol kontejneru daprd často obsahuje užitečné informace.

Spuštěním následujícího příkazu zobrazte protokoly pro komponentu daprd:

kubectl logs -l app=my-dapr-app -c daprd

Další kroky

Teď, když víte, jak vyvíjet aplikaci Dapr, můžete projít kurzem vytvoření aplikace řízené událostmi pomocí Dapr.