Краткое руководство. Добавление ресурсов OPC UA в кластер Azure IoT Operations Preview
Внимание
Предварительная версия операций Интернета вещей Azure, включенная Azure Arc в настоящее время находится в предварительной версии. Не следует использовать это программное обеспечение предварительной версии в рабочих средах.
Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.
В этом кратком руководстве вы вручную добавите ресурсы OPC UA в кластер Azure IoT Operations Preview. Эти ресурсы публикуют сообщения в брокере предварительной версии Azure IoT MQ в кластере операций Интернета вещей Azure. Как правило, пользователь OT выполняет эти действия.
Ресурс — это физическое устройство или логическая сущность, представляющая устройство, компьютер, систему или процесс. Например, физический ресурс может быть насосом, двигателем, танком или производственной линией. Логический ресурс, который вы определяете, может иметь свойства, потоковую телеметрию или создавать события.
Серверы OPC UA — это программные приложения, взаимодействующие с ресурсами. Теги OPC UA — это точки данных, предоставляемые серверами OPC UA. Теги OPC UA могут предоставлять данные в режиме реального времени или исторические данные о состоянии, производительности, качестве или условии активов.
В этом кратком руководстве вы используете портал Операций Интернета вещей Azure (предварительная версия) для создания ресурсов. Вы также можете использовать Azure CLI для выполнения некоторых из этих задач.
Необходимые компоненты
Полное краткое руководство. Развертывание предварительной версии операций Интернета вещей Azure в кластере Kubernetes с поддержкой Arc перед началом работы с этим кратким руководством.
Чтобы войти на портал Операций Интернета вещей Azure (предварительная версия), вам нужна рабочая или учебная учетная запись в клиенте, в котором вы развернули операции Интернета вещей Azure. Если вы используете учетную запись Майкрософт (MSA), необходимо создать идентификатор Microsoft Entra с по крайней мере участник разрешениями для группы ресурсов, содержащей экземпляр Kubernetes — Azure Arc. Дополнительные сведения см. в статье "Известные проблемы, связанные с > созданием учетной записи записи записи".
Какая проблема будет решена?
Данные, предоставляемые серверами OPC UA, могут иметь сложную структуру и могут быть трудно понять. Операции Интернета вещей Azure позволяют моделировать ресурсы OPC UA в виде тегов, событий и свойств. Это моделирование упрощает понимание данных и их использование в подчиненных процессах, таких как брокер MQ и конвейеры предварительной версии обработчика данных Интернета вещей Azure.
Вход на портал Операций Интернета вещей Azure (предварительная версия)
Чтобы создать конечные точки активов, ресурсы и подписаться на теги и события OPC UA, используйте портал Операций Интернета вещей Azure (предварительная версия). Перейдите на портал Операций Интернета вещей Azure (предварительная версия) в браузере и войдите с помощью учетных данных идентификатора Microsoft Entra.
Внимание
Для входа на портал Операций Интернета вещей Azure (предварительная версия) необходимо использовать рабочую или учебную учетную запись. Дополнительные сведения см. в статье "Известные проблемы, связанные с > созданием учетной записи записи записи".
Выбор сайта
После входа на портале отображается список сайтов, к которым у вас есть доступ. Каждый сайт — это семейство экземпляров операций Интернета вещей Azure, где можно настроить ресурсы. ИТ-администратор отвечает за организацию экземпляров на сайтах и предоставление доступа пользователям OT в организации. Так как вы работаете с новым развертыванием, еще нет сайтов. Кластер, созданный в предыдущем кратком руководстве, можно найти, выбрав неподписанные экземпляры. На портале экземпляр представляет кластер, в котором развернуты операции Интернета вещей Azure.
Выбор экземпляра
Выберите экземпляр, в котором вы развернули операции Интернета вещей Azure в предыдущем кратком руководстве:
Совет
Если вы не видите никаких экземпляров, возможно, вы не будете в правильном клиенте Идентификатора Microsoft Entra. Вы можете изменить клиент в правом верхнем меню на портале.
Добавление конечной точки ресурса
При развертывании Операций Интернета вещей Azure вы решили включить встроенный симулятор OPC PLC. На этом шаге вы добавите конечную точку ресурса, которая позволяет подключаться к симулятору OPC PLC.
Чтобы добавить конечную точку ресурса, выполните приведенные действия.
Выберите " Управление конечными точками активов" , а затем создайте конечную точку ресурса:
Введите следующие сведения о конечной точке:
Поле значение Имя конечной точки ресурса opc-ua-connector-0
URL-адрес сервера OPC UA opc.tcp://opcplc-000000:50000
Режим проверки подлинности пользователя Anonymous
Проверка подлинности транспорта Do not use transport authentication certificate
Чтобы сохранить определение, нажмите кнопку "Создать".
Эта конфигурация развертывает новую конечную точку ресурса, вызываемую
opc-ua-connector-0
в кластере. Вы можете использоватьkubectl
для просмотра конечных точек ресурса:kubectl get assetendpointprofile -n azure-iot-operations
Настройка симулятора
В этих кратких руководствах используется симулятор OPC PLC для создания примеров данных. Чтобы включить сценарий быстрого запуска, необходимо настроить конечную точку ресурса для подключения без установления взаимного доверия. Эта конфигурация не рекомендуется использовать для рабочих или предварительных сред.
Чтобы настроить конечную точку ресурса для сценария быстрого запуска, выполните следующую команду:
kubectl patch AssetEndpointProfile opc-ua-connector-0 -n azure-iot-operations --type=merge -p '{"spec":{"additionalConfiguration":"{\"applicationName\":\"opc-ua-connector-0\",\"security\":{\"autoAcceptUntrustedServerCertificates\":true}}"}}'
Внимание
Не используйте эту конфигурацию в рабочих или предварительных средах. Предоставление кластера в Интернет без надлежащей проверки подлинности может привести к несанкционированным доступом и даже атакам DDOS.
Дополнительные сведения см. в разделе "Развертывание симулятора OPC PLC".
Чтобы изменения конфигурации вступили в силу немедленно, сначала найдите имя модуля
aio-opc-supervisor
pod с помощью следующей команды:kubectl get pods -n azure-iot-operations
Имя модуля pod выглядит следующим образом
aio-opc-supervisor-956fbb649-k9ppr
.aio-opc-supervisor
Перезапустите pod с помощью команды, которая выглядит следующим образом.aio-opc-supervisor
Используйте имя pod из предыдущего шага:kubectl delete pod aio-opc-supervisor-956fbb649-k9ppr -n azure-iot-operations
После определения ресурса модуль pod соединителя OPC UA обнаруживает его. Модуль pod использует конечную точку ресурса, указанную в определении ресурса, для подключения к серверу OPC UA. Вы можете использовать kubectl
для просмотра модуля pod обнаружения, созданного при добавлении конечной точки ресурса. Имя модуля pod выглядит следующим образом aio-opc-opc.tcp-1-8f96f76-kvdbt
:
kubectl get pods -n azure-iot-operations
При запуске симулятора OPC PLC данные передаются из симулятора в соединитель, брокер OPC UA и, наконец, к брокеру MQ.
Управление ресурсами
После выбора экземпляра на портале Операций Интернета вещей Azure (предварительная версия) вы увидите доступный список ресурсов на странице "Активы ". Если еще нет ресурсов, этот список пуст:
Создание актива
Чтобы создать ресурс, нажмите кнопку "Создать ресурс".
Введите следующие сведения о ресурсах:
Поле | значение |
---|---|
Имя ресурса | thermostat |
Конечная точка ресурса | opc-ua-connector-0 |
Description | A simulated thermostat asset |
Удалите существующие настраиваемые свойства и добавьте следующие настраиваемые свойства. Будьте осторожны, чтобы использовать точные имена свойств, так как шаблон Power BI в последующих запросах краткого руководства для них:
Имя свойства | Сведения о свойстве |
---|---|
batch | 102 |
клиент | Contoso |
оборудование | Котла |
isSpare | true |
расположение | Seattle |
Нажмите кнопку "Далее", чтобы перейти на страницу "Добавить теги".
Создание тегов OPC UA
Добавьте два тега OPC UA на страницу добавления тегов . Чтобы добавить каждый тег, выберите "Добавить тег" или "CSV ", а затем нажмите кнопку "Добавить тег". Введите сведения о теге, показанные в следующей таблице:
Идентификатор узла | Имя тега | Режим наблюдаемости |
---|---|---|
ns=3; s=FastUInt10 | Температура | ничего |
ns=3; s=FastUInt100 | Тег 10 | ничего |
Режим наблюдаемости является одним из следующих значений: none
, , gauge
, counter
histogram
или log
.
Можно переопределить интервал выборки по умолчанию и размер очереди для каждого тега.
Нажмите кнопку "Далее", чтобы перейти на страницу "Добавить события", а затем перейдите на страницу "Рецензирование".
Отзыв
Просмотрите сведения о активе и теге и внесите необходимые изменения перед нажатием кнопки "Создать":
Проверка потока данных
Убедитесь, что данные передаются в брокер MQTT с помощью средства mqttui . В этом примере вы запустите средство mqttui в кластере Kubernetes:
Выполните следующую команду, чтобы развернуть pod, включающую средства mqttui и mosquitto , которые полезны для взаимодействия с брокером MQ в кластере:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
В следующем фрагменте кода показан примененный ФАЙЛ YAML:
# Important: do not use in production environments # Creates a pod with mosquitto-clients and mqttui utilities in your cluster apiVersion: v1 kind: Pod metadata: name: mqtt-client # The namespace must match the IoT MQ BrokerListener's namespace # Otherwise use the long hostname: aio-mq-dmqtt-frontend.azure-iot-operations.svc.cluster.local namespace: azure-iot-operations spec: # Use the "mqtt-client" service account which comes with default deployment # Otherwise create it with `kubectl create serviceaccount mqtt-client -n azure-iot-operations` serviceAccountName: mqtt-client containers: # Install mosquitto and mqttui utilities on Alpine linux - image: alpine name: mqtt-client command: ["sh", "-c"] args: ["apk add mosquitto-clients mqttui && sleep infinity"] volumeMounts: - name: mq-sat mountPath: /var/run/secrets/tokens - name: trust-bundle mountPath: /var/run/certs volumes: - name: mq-sat projected: sources: - serviceAccountToken: path: mq-sat audience: aio-mq # Must match audience in BrokerAuthentication expirationSeconds: 86400 - name: trust-bundle configMap: name: aio-ca-trust-bundle-test-only # Default root CA cert
Внимание
Эта конфигурация не безопасна. Не используйте эту конфигурацию в рабочей среде.
При запуске модуля pod mqtt-client выполните следующую команду, чтобы создать среду оболочки в созданном модуле pod:
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
В оболочке в модуле pod mqtt-client выполните следующую команду, чтобы подключиться к брокеру MQ с помощью средства mqttui :
mqttui -b mqtts://aio-mq-dmqtt-frontend:8883 -u '$sat' --password $(cat /var/run/secrets/tokens/mq-sat) --insecure
Чтобы убедиться, что добавленный ресурс термостата публикует данные, просмотрите данные телеметрии в azure-iot-operations/data
разделе:
Если поток данных отсутствует, перезапустите aio-opc-opc.tcp-1
модуль pod:
Найдите имя pod
aio-opc-opc.tcp-1
с помощью следующей команды:kubectl get pods -n azure-iot-operations
Имя модуля pod выглядит следующим образом
aio-opc-opc.tcp-1-849dd78866-vhmz6
.aio-opc-opc.tcp-1
Перезапустите pod с помощью команды, которая выглядит следующим образом.aio-opc-opc.tcp-1
Используйте имя pod из предыдущего шага:kubectl delete pod aio-opc-opc.tcp-1-849dd78866-vhmz6 -n azure-iot-operations
Примеры тегов, добавленные в предыдущем кратком руководстве, создают сообщения из ресурса, которые выглядят следующим образом:
{
"Timestamp": "2024-03-08T00:54:58.6572007Z",
"MessageType": "ua-deltaframe",
"payload": {
"temperature": {
"SourceTimestamp": "2023-08-10T00:54:58.2543129Z",
"Value": 7109
},
"Tag 10": {
"SourceTimestamp": "2023-08-10T00:54:58.2543482Z",
"Value": 7109
}
},
"DataSetWriterName": "thermostat",
"SequenceNumber": 4660
}
Обнаружение источников данных OPC UA с помощью Предварительной версии Azure IoT Akri
В предыдущем разделе вы узнали, как добавить ресурсы вручную. Вы также можете использовать Предварительную версию Azure IoT Akri для автоматического обнаружения источников данных OPC UA и создания пользовательских ресурсов экземпляра Akri, представляющих обнаруженные устройства. В настоящее время Akri не может обнаруживать и создавать ресурсы, которые можно использовать в предварительной версии реестра устройств Azure.
При развертывании операций Интернета вещей Azure развертывание включает модули pod обработчика обнаружения Akri. Чтобы проверить выполнение этих модулей pod, выполните следующую команду:
kubectl get pods -n azure-iot-operations | grep akri
kubectl get pods -n azure-iot-operations | Select-String -Pattern "akri"
Выходные данные предыдущей команды выглядят следующим образом:
akri-opcua-asset-discovery-daemonset-h47zk 1/1 Running 3 (4h15m ago) 2d23h
aio-akri-otel-collector-5c775f745b-g97qv 1/1 Running 3 (4h15m ago) 2d23h
aio-akri-agent-daemonset-mp6v7 1/1 Running 3 (4h15m ago) 2d23h
В терминале Codespaces выполните следующую команду, чтобы применить новую конфигурацию для обработчика обнаружения:
kubectl apply -f /workspaces/explore-iot-operations/samples/quickstarts/akri-opcua-asset.yaml
В следующем фрагменте кода показан примененный ФАЙЛ YAML:
apiVersion: akri.sh/v0
kind: Configuration
metadata:
name: akri-opcua-asset
namespace: azure-iot-operations
spec:
discoveryHandler:
name: opcua-asset
discoveryDetails: "opcuaDiscoveryMethod:\n - asset:\n endpointUrl: \" opc.tcp://opcplc-000000:50000\"\n useSecurity: false\n autoAcceptUntrustedCertificates: true\n"
brokerProperties: {}
capacity: 1
Чтобы проверить конфигурацию, выполните следующую команду, чтобы просмотреть экземпляры Akri, представляющие источники данных OPC UA, обнаруженные Akri:
kubectl get akrii -n azure-iot-operations
Для отображения экземпляра может потребоваться несколько минут.
Выходные данные предыдущей команды выглядят следующим образом.
NAMESPACE NAME CONFIG SHARED NODES AGE
azure-iot-operations akri-opcua-asset-dbdef0 akri-opcua-asset true ["dom-aio-vm"] 35m
Теперь эти ресурсы можно использовать в локальном пространстве имен кластера.
Чтобы убедиться, что Akri подключен к брокеру OPC UA, скопируйте и вставьте имя экземпляра Akri из предыдущего шага в следующую команду:
kubectl get akrii <AKRI_INSTANCE_NAME> -n azure-iot-operations -o json
Выходные данные команды выглядят следующим образом. В этом примере из выходных данных отображаются значения экземпляра brokerProperties
Akri и подтверждается, что брокер OPC UA подключен.
"spec": {
"brokerProperties": {
"ApplicationUri": "Boiler #2",
"AssetEndpointProfile": "{\"spec\":{\"uuid\":\"opc-ua-broker-opcplc-000000-azure-iot-operation\"……
Как мы решили проблему?
В этом кратком руководстве вы добавили конечную точку ресурса, а затем определили ресурс и теги. Данные модели ресурсов и тегов с сервера OPC UA упрощают использование данных в брокере MQTT и других подчиненных процессах. Вы используете ресурс термостата, определенный в следующем кратком руководстве.
Очистка ресурсов
Если вы не будете использовать это развертывание дальше, удалите кластер Kubernetes, где вы развернули операции Интернета вещей Azure и удалите группу ресурсов Azure, содержащую кластер.