Использование Dapr для разработки распределенных рабочих нагрузок приложений, общения с брокером MQTT
Чтобы использовать подключаемые компоненты брокера MQTT Dapr, разверните компоненты хранилища пабов и вложенных состояний в развертывании приложения вместе с приложением Dapr. В этом руководстве показано, как развернуть приложение с помощью пакета SDK Dapr и подключаемых компонентов брокера MQTT.
Необходимые компоненты
- Операции Интернета вещей Azure, развернутые в кратком руководстве. Запуск операций Интернета вещей Azure в пространствах codespaces GitHub с K3s
- Развернутые компоненты dapr брокера MQTT. Развертывание компонентов dapr брокера MQTT
Создание приложения Dapr
Построение приложения
Первым шагом является написание приложения, использующего пакет SDK Dapr для публикации и подписки или управления состояниями.
Создание пакета приложения
После завершения написания приложения Dapr создайте контейнер:
Упаковайте приложение в контейнер с помощью следующей команды:
docker build . -t my-dapr-app
Отправьте его в выбранный реестр контейнеров, например:
Развертывание приложения Dapr
Следующее определение развертывания содержит тома для проверки подлинности SAT и цепочки сертификатов TLS и использует внедрение бокового автомобиля Dapr для автоматического добавления подключаемых компонентов в pod.
Для следующих компонентов определения может потребоваться настройка для конкретного приложения:
Внимание
Если приложение Dapr не прослушивает трафик с бокового автомобиля Dapr, удалите dapr.io/app-port
и dapr.io/app-protocol
примечания , в противном случае не удастся инициализировать боковой автомобиль Dapr.
Сохраните следующий yaml в файл с именем
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>
Разверните компонент, выполнив следующую команду:
kubectl apply -f dapr-app.yaml kubectl get pods -w
Модуль pod должен сообщать о трех контейнерах, выполняемых через короткий интервал, как показано в следующем примере выходных данных:
NAME READY STATUS RESTARTS AGE ... my-dapr-app 3/3 Running 0 30s
Устранение неполадок
Если приложение не запускается или вы видите контейнеры в CrashLoopBackoff
состоянии, журнал контейнера daprd
часто содержит полезные сведения.
Выполните следующую команду, чтобы просмотреть журналы для компонента daprd:
kubectl logs -l app=my-dapr-app -c daprd
Следующие шаги
Теперь, когда вы знаете, как разрабатывать приложение Dapr, вы можете выполнить руководство по созданию приложения на основе событий с помощью Dapr.