Развертывание подключаемых компонентов Dapr
Распределенная среда выполнения приложений (Dapr) — это переносимая, бессерверная среда выполнения, которая упрощает процесс создания распределенных приложений. Dapr позволяет создавать приложения без отслеживания состояния или без отслеживания состояния, не беспокоясь о том, как функции стандартных блоков. Dapr предоставляет несколько стандартных блоков: pub/sub, управление состоянием, вызов служб, субъекты и многое другое.
Операции Интернета вещей Azure поддерживают два из этих стандартных блоков, на базе брокера MQTT:
- Публикация и подписка
- Управление данными о состоянии
Чтобы использовать подключаемые компоненты Dapr, определите спецификацию компонентов для каждого API и зарегистрируйтесь в кластере. Компоненты Dapr прослушивают сокет домена Unix, размещенный на общем томе. Среда выполнения Dapr подключается к каждому сокету и обнаруживает все службы из заданного API стандартных блоков, реализуемого компонентом.
Установка среды выполнения Dapr
Чтобы установить среду выполнения Dapr, используйте следующую команду Helm:
Примечание.
Если вы выполнили предоставленное краткое руководство по операциям Интернета вещей Azure, вы уже установили среду выполнения Dapr, а следующие действия не требуются.
helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
helm upgrade --install dapr dapr/dapr --version=1.14 --namespace dapr-system --create-namespace --wait
Регистрация подключаемых компонентов брокера MQTT
Чтобы зарегистрировать подключаемые компоненты подключаемого модуля для pub/sub и управления состоянием, создайте yaml манифеста компонента и примените его к кластеру.
Чтобы создать yaml-файл, используйте следующие определения компонентов:
Компонент | Description |
---|---|
metadata:name |
Имя компонента важно и как приложение Dapr ссылается на компонент. |
metadata:annotations:dapr.io/component-container |
Заметки о компонентах, используемые инектором бокового автомобиля Dapr, определяющие расположение изображения, подключение томов и конфигурацию ведения журнала |
spec:type |
Тип компонента, который должен быть объявлен точно, как показано |
spec:metadata:keyPrefix |
Определяет префикс ключа, используемый при взаимодействии с серверной частью хранилища состояний. Дополнительные сведения см . в документации по Dapr |
spec:metadata:hostname |
Имя узла брокера MQTT. Значение по умолчанию: aio-broker . |
spec:metadata:tcpPort |
Номер порта брокера MQTT. Значение по умолчанию: 18883 . |
spec:metadata:useTls |
Определите, используется ли TLS брокером MQTT. Значение по умолчанию: true . |
spec:metadata:caFile |
Путь цепочки сертификатов для проверки брокера MQTT. Обязательный параметр, если useTls имеет значение true . Этот файл должен быть подключен в pod с указанным именем тома. |
spec:metadata:satAuthFile |
Файл токена учетной записи службы (SAT) используется для проверки подлинности компонентов Dapr с помощью брокера MQTT. Этот файл должен быть подключен в pod с указанным именем тома. |
Сохраните следующий yaml, содержащий определения компонентов Операций Интернета вещей Azure, в файл с именем
components.yaml
:apiVersion: dapr.io/v1alpha1 kind: Component metadata: name: iotoperations-pubsub namespace: azure-iot-operations annotations: dapr.io/component-container: > { "name": "iot-operations-dapr-components", "image": "ghcr.io/azure/iot-operations-dapr-components:latest", "volumeMounts": [ { "name": "mqtt-client-token", "mountPath": "/var/run/secrets/tokens" }, { "name": "aio-ca-trust-bundle", "mountPath": "/var/run/certs/aio-internal-ca-cert" } ], "env": [ { "name": "pubSubLogLevel", "value": "Information" }, { "name": "stateStoreLogLevel", "value": "Information" }, { "name": "defaultLogLevel", "value": "Warning" } ] } spec: type: pubsub.azure.iotoperations version: v1 metadata: - name: hostname value: aio-broker - name: tcpPort value: 18883 - name: useTls value: true - name: caFile value: /var/run/certs/aio-internal-ca-cert/ca.crt - name: satAuthFile value: /var/run/secrets/tokens/mqtt-client-token --- apiVersion: dapr.io/v1alpha1 kind: Component metadata: name: iotoperations-statestore namespace: azure-iot-operations spec: type: state.azure.iotoperations version: v1 metadata: - name: hostname value: aio-broker - name: tcpPort value: 18883 - name: useTls value: true - name: caFile value: /var/run/certs/aio-internal-ca-cert/ca.crt - name: satAuthFile value: /var/run/secrets/tokens/mqtt-client-token
Примените компонент к кластеру, выполнив следующую команду:
kubectl apply -f components.yaml
Проверьте следующие выходные данные:
component.dapr.io/iotoperations-pubsub created component.dapr.io/iotoperations-statestore created
Создание политики авторизации для брокера MQTT
Чтобы настроить политики авторизации для брокера MQTT, сначала создайте ресурс BrokerAuthorization .
Примечание.
Если авторизация брокера не включена в этом кластере, этот раздел можно пропустить, так как приложения будут иметь доступ ко всем разделам MQTT, включая необходимые для доступа к хранилищу состояний брокера MQTT.
Сохраните следующий yaml, содержащий определение BrokerAuthorization, в файл с именем
aio-dapr-authz.yaml
:apiVersion: mqttbroker.iotoperations.azure.com/v1 kind: BrokerAuthorization metadata: name: my-dapr-authz-policies namespace: azure-iot-operations spec: listenerRef: - my-listener # change to match your listener name as needed authorizationPolicies: enableCache: false rules: - principals: attributes: - group: dapr-workload # match to the attribute annotated to the service account brokerResources: - method: Connect - method: Publish topics: - "$services/statestore/#" - method: Subscribe topics: - "clients/{principal.clientId}/services/statestore/#"
Примените определение BrokerAuthorization к кластеру:
kubectl apply -f aio-dapr-authz.yaml
Следующие шаги
Теперь, когда компоненты Dapr развертываются в кластере, можно использовать Dapr для разработки распределенных приложений.