Udostępnij za pośrednictwem


Używanie języka Dapr do tworzenia obciążeń aplikacji rozproszonych, które komunikują się z brokerem MQTT

Aby użyć składników wtyczki dapr brokera MQTT, wdróż składniki magazynu pub/podrzędnego i magazynu stanów we wdrożeniu aplikacji wraz z aplikacją Dapr. W tym przewodniku pokazano, jak wdrożyć aplikację przy użyciu zestawu DAPR SDK i składników podłączanych brokera MQTT.

Wymagania wstępne

Tworzenie aplikacji dapr

Kompilowanie aplikacji

Pierwszym krokiem jest napisanie aplikacji korzystającej z zestawu DAPR SDK do publikowania/subskrybowania lub zarządzania stanem.

  • Przewodnik Szybki start dotyczący publikowania i subskrybowania języka Dapr
  • Przewodnik Szybki start dotyczący zarządzania stanem w języku Dapr

Spakuj aplikację

Po zakończeniu pisania aplikacji Dapr skompiluj kontener:

  1. Spakuj aplikację do kontenera za pomocą następującego polecenia:

    docker build . -t my-dapr-app
    
  2. Wypchnij go do wybranego rejestru kontenerów, na przykład:

Wdrażanie aplikacji dapr

Poniższa definicja wdrożenia zawiera woluminy uwierzytelniania SAT i łańcucha certyfikatów TLS oraz wykorzystuje iniekcję przyczepki dapr, aby automatycznie dodać składniki podłączane do zasobnika.

Następujące składniki definicji mogą wymagać dostosowania do określonej aplikacji:

Składnik opis
template:metadata:annotations:dapr.io/inject-pluggable-components Umożliwia automatyczne wstrzykiwanie składników do zasobnika operacji IoT
template:metadata:annotations:dapr.io/app-port Informuje dapr, na którym porcie nasłuchuje aplikacja. Jeśli twoja aplikacja nie korzysta z tej funkcji (np. subskrypcji pubsub), usuń ten wiersz
volumes:mqtt-client-token Token uwierzytelniania systemu używany do uwierzytelniania składników wtyczki Dapr za pomocą brokera MQTT
volumes:aio-ca-trust-bundle Łańcuch zaufania w celu zweryfikowania certyfikatu TLS brokera MQTT. To ustawienie domyślne dla certyfikatu testowego wdrożonego przy użyciu operacji usługi Azure IoT
containers:name Nazwa nadana kontenerowi aplikacji
containers:image Kontener aplikacji, który chcesz wdrożyć

Uwaga

Jeśli aplikacja Dapr nie nasłuchuje ruchu z przyczepki Dapr, usuń dapr.io/app-port adnotacje i dapr.io/app-protocol w przeciwnym razie nie można zainicjować przyczepki Dapr.

  1. Zapisz następujący plik yaml w pliku o nazwie 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. Wdróż składnik, uruchamiając następujące polecenie:

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

    Zasobnik powinien zgłaszać trzy kontenery uruchomione po krótkim interwale, jak pokazano w następujących przykładowych danych wyjściowych:

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

Rozwiązywanie problemów

Jeśli aplikacja nie zostanie uruchomiona lub zobaczysz kontenery w CrashLoopBackoff stanie, dziennik kontenera daprd często zawiera przydatne informacje.

Uruchom następujące polecenie, aby wyświetlić dzienniki dla składnika daprd:

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

Następne kroki

Teraz, gdy wiesz, jak opracować aplikację dapr, możesz uruchomić samouczek dotyczący tworzenia aplikacji opartej na zdarzeniach za pomocą języka Dapr.