Поделиться через


Использование Dapr для разработки распределенных рабочих нагрузок приложений, которые разговаривают с Azure IoT MQ Preview

Внимание

Предварительная версия операций Интернета вещей Azure, включенная Azure Arc в настоящее время находится в предварительной версии. Не следует использовать это программное обеспечение предварительной версии в рабочих средах.

Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.

Чтобы использовать компоненты подключаемого модуля Dapr предварительной версии Azure IoT MQ, разверните компоненты pub/sub и хранилища состояний в развертывании приложения вместе с приложением Dapr. В этом руководстве показано, как развернуть приложение с помощью пакета SDK Dapr и подключаемых компонентов IoT MQ.

Необходимые компоненты

Создание приложения Dapr

Построение приложения

Первым шагом является написание приложения, использующего пакет SDK Dapr для публикации и подписки или управления состояниями.

  • Краткое руководство по публикации и подписке Dapr
  • Краткое руководство по управлению состоянием Dapr

Создание пакета приложения

После завершения написания приложения Dapr создайте контейнер:

  1. Чтобы упаковать приложение в контейнер, выполните следующую команду:

    docker build . -t my-dapr-app
    
  2. Отправьте его в выбранный реестр контейнеров, например:

Развертывание приложения Dapr

Следующее определение развертывания содержит тома, необходимые для развертывания приложения вместе с необходимыми контейнерами. В этом развертывании используется средство внедрения бокового автомобиля Dapr для автоматического добавления подключаемого модуля pod компонента.

Yaml содержит как ServiceAccount, так и для создания saTs для проверки подлинности с помощью IoT Mq и развертывания приложения Dapr.

Чтобы создать yaml-файл, используйте следующие определения:

Компонент Description
volumes.mqtt-client-token Маркер проверки подлинности системы, используемый для проверки подлинности подключаемых компонентов Dapr с помощью брокера MQ Интернета вещей
volumes.aio-ca-trust-bundle Цепочка доверия для проверки сертификата TLS брокера MQTT. По умолчанию тестовый сертификат, развернутый с помощью операций Интернета вещей Azure
containers.mq-dapr-app Контейнер приложения Dapr, который требуется развернуть
  1. Сохраните следующий yaml в файл с именем dapr-app.yaml:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: dapr-client
      namespace: azure-iot-operations
      annotations:
        aio-mq-broker-auth/group: dapr-workload
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mq-dapr-app
      namespace: azure-iot-operations
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mq-dapr-app
      template:
        metadata:
          labels:
            app: mq-dapr-app
          annotations:
            dapr.io/enabled: "true"
            dapr.io/inject-pluggable-components: "true"
            dapr.io/app-id: "mq-dapr-app"
            dapr.io/app-port: "6001"
            dapr.io/app-protocol: "grpc"
        spec:
          serviceAccountName: dapr-client
    
          volumes:
          # SAT token used to authenticate between Dapr and the MQTT broker
          - name: mqtt-client-token
            projected:
              sources:
                - serviceAccountToken:
                    path: mqtt-client-token
                    audience: aio-mq
                    expirationSeconds: 86400
    
          # Certificate chain for Dapr to validate the MQTT broker
          - name: aio-ca-trust-bundle
            configMap:
              name: aio-ca-trust-bundle-test-only
    
          containers:
          # Container for the Dapr application 
          - name: mq-dapr-app
            image: <YOUR_DAPR_APPLICATION>
    
  2. Разверните компонент, выполнив следующую команду:

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

    Модуль pod рабочей нагрузки должен сообщать обо всех модулях pod, выполняемых через короткий интервал, как показано в следующем примере выходных данных:

    pod/dapr-workload created
    NAME                          READY   STATUS              RESTARTS   AGE
    ...
    dapr-workload                 3/3     Running             0          30s
    

Устранение неполадок

Если приложение не запускается или вы видите модули pod, CrashLoopBackoffжурналы для daprd них наиболее полезны. Это daprd контейнер, который автоматически развертывается с помощью приложения Dapr.

Выполните следующую команду, чтобы просмотреть журналы:

kubectl logs dapr-workload daprd

Следующие шаги

Теперь, когда вы знаете, как разрабатывать приложение Dapr, вы можете выполнить руководство по созданию приложения на основе событий с помощью Dapr.