Краткое руководство. Добавление ресурсов 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 (предварительная версия).

Выбор экземпляра

Выберите экземпляр, в котором вы развернули операции Интернета вещей Azure в предыдущем кратком руководстве:

Снимок экрана: список экземпляров Операций Интернета вещей Azure.

Совет

Если вы не видите никаких экземпляров, возможно, вы не будете в правильном клиенте Идентификатора Microsoft Entra. Вы можете изменить клиент в правом верхнем меню на портале.

Добавление конечной точки ресурса

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

Чтобы добавить конечную точку ресурса, выполните приведенные действия.

  1. Выберите " Управление конечными точками активов" , а затем создайте конечную точку ресурса:

    Снимок экрана: страница конечных точек активов на портале Операций Интернета вещей Azure (предварительная версия).

  2. Введите следующие сведения о конечной точке:

    Поле значение
    Имя конечной точки ресурса opc-ua-connector-0
    URL-адрес сервера OPC UA opc.tcp://opcplc-000000:50000
    Режим проверки подлинности пользователя Anonymous
    Проверка подлинности транспорта Do not use transport authentication certificate
  3. Чтобы сохранить определение, нажмите кнопку "Создать".

    Эта конфигурация развертывает новую конечную точку ресурса, вызываемую opc-ua-connector-0 в кластере. Вы можете использовать kubectl для просмотра конечных точек ресурса:

    kubectl get assetendpointprofile -n azure-iot-operations
    

Настройка симулятора

В этих кратких руководствах используется симулятор OPC PLC для создания примеров данных. Чтобы включить сценарий быстрого запуска, необходимо настроить конечную точку ресурса для подключения без установления взаимного доверия. Эта конфигурация не рекомендуется использовать для рабочих или предварительных сред.

  1. Чтобы настроить конечную точку ресурса для сценария быстрого запуска, выполните следующую команду:

    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".

  2. Чтобы изменения конфигурации вступили в силу немедленно, сначала найдите имя модуля aio-opc-supervisor pod с помощью следующей команды:

    kubectl get pods -n azure-iot-operations
    

    Имя модуля pod выглядит следующим образом aio-opc-supervisor-956fbb649-k9ppr.

  3. 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 (предварительная версия) вы увидите доступный список ресурсов на странице "Активы ". Если еще нет ресурсов, этот список пуст:

Снимок экрана: список пустых активов операций Интернета вещей Azure.

Создание актива

Чтобы создать ресурс, нажмите кнопку "Создать ресурс".

Введите следующие сведения о ресурсах:

Поле значение
Имя ресурса thermostat
Конечная точка ресурса opc-ua-connector-0
Description A simulated thermostat asset

Удалите существующие настраиваемые свойства и добавьте следующие настраиваемые свойства. Будьте осторожны, чтобы использовать точные имена свойств, так как шаблон Power BI в последующих запросах краткого руководства для них:

Имя свойства Сведения о свойстве
batch 102
клиент Contoso
оборудование Котла
isSpare true
расположение Seattle

Снимок экрана: страница сведений о ресурсе Операций Интернета вещей Azure.

Нажмите кнопку "Далее", чтобы перейти на страницу "Добавить теги".

Создание тегов OPC UA

Добавьте два тега OPC UA на страницу добавления тегов . Чтобы добавить каждый тег, выберите "Добавить тег" или "CSV ", а затем нажмите кнопку "Добавить тег". Введите сведения о теге, показанные в следующей таблице:

Идентификатор узла Имя тега Режим наблюдаемости
ns=3; s=FastUInt10 Температура ничего
ns=3; s=FastUInt100 Тег 10 ничего

Режим наблюдаемости является одним из следующих значений: none, , gauge, counterhistogramили log.

Можно переопределить интервал выборки по умолчанию и размер очереди для каждого тега.

Снимок экрана: страница добавления тега операций Интернета вещей Azure.

Нажмите кнопку "Далее", чтобы перейти на страницу "Добавить события", а затем перейдите на страницу "Рецензирование".

Отзыв

Просмотрите сведения о активе и теге и внесите необходимые изменения перед нажатием кнопки "Создать":

Снимок экрана: страница проверки активов в Операциях Интернета вещей Azure.

Проверка потока данных

Убедитесь, что данные передаются в брокер MQTT с помощью средства mqttui . В этом примере вы запустите средство mqttui в кластере Kubernetes:

  1. Выполните следующую команду, чтобы развернуть 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
    

    Внимание

    Эта конфигурация не безопасна. Не используйте эту конфигурацию в рабочей среде.

  2. При запуске модуля pod mqtt-client выполните следующую команду, чтобы создать среду оболочки в созданном модуле pod:

    kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
    
  3. В оболочке в модуле 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 разделе:

Снимок экрана: раздел mqttui, показывающий телеметрию температуры.

Если поток данных отсутствует, перезапустите aio-opc-opc.tcp-1 модуль pod:

  1. Найдите имя pod aio-opc-opc.tcp-1 с помощью следующей команды:

    kubectl get pods -n azure-iot-operations
    

    Имя модуля pod выглядит следующим образом aio-opc-opc.tcp-1-849dd78866-vhmz6.

  2. 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, содержащую кластер.

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

Краткое руководство. Отправка данных телеметрии активов в облако с помощью соединителя озера данных для Azure IoT MQ.