Share via


Inicio rápido: Adición de recursos de OPC UA a un clúster de Operaciones de IoT de Azure

Importante

Operaciones de IoT de Azure, habilitado por Azure Arc, está actualmente en VERSIÓN PRELIMINAR. No se debería usar este software en versión preliminar en entornos de producción.

Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

En esta guía de inicio rápido, agregará manualmente recursos de OPC UA a su clúster de Operaciones de IoT de Azure (en versión preliminar). Estos recursos publican mensajes en el agente MQ (en versión preliminar) de Azure IoT en el clúster de Operaciones de IoT de Azure. Normalmente, un usuario de OT sigue estos pasos.

Un recurso es un dispositivo físico o una entidad lógica que representa un dispositivo, una máquina, un sistema o un proceso. Por ejemplo, un recurso físico podría ser una bomba, un motor, un tanque o una línea de producción. Un recurso lógico que usted define puede tener propiedades y telemetría de flujo o generar eventos.

Los servidores OPC UA son aplicaciones de software que se comunican con recursos. Las etiquetas de OPC UA son puntos de datos que los servidores OPC UA exponen. Las etiquetas de OPC UA pueden proporcionar datos históricos o en tiempo real sobre el estado, el rendimiento, la calidad o la condición de los recursos.

En este inicio rápido, usará el portal de operaciones de Azure IoT (versión preliminar) para crear los recursos. También puede usar la CLI de Azure para completar algunas de estas tareas.

Requisitos previos

Estudie la guía Inicio rápido: Implementación de Operaciones de IoT de Azure (versión preliminar) en un clúster de Kubernetes habilitado para Arc antes de comenzar esta otra guía de inicio rápido.

Para iniciar sesión en el portal de Azure IoT Operations (versión preliminar), necesita una cuenta profesional o educativa en el inquilino donde implementó Azure IoT Operations. Si está usando una cuenta de Microsoft (MSA), deberá crear un identificador de Microsoft Entra ID con permisos al menos de colaborador para el grupo de recursos que contiene la instancia de Kubernetes - Azure Arc. Para obtener más información, consulte Problemas conocidos > Crear cuentas de Entra.

¿Qué problema resolveremos?

Los datos que los servidores OPC UA exponen pueden tener una estructura compleja y ser difíciles de entender. Operaciones de IoT de Azure proporciona una manera de modelar los recursos de OPC UA, como las etiquetas, los eventos y las propiedades. Este modelado facilita la comprensión de los datos y su uso en procesos posteriores, como las canalizaciones del procesador de datos de Azure IoT (en versión preliminar) y el agente MQ.

Inicio de sesión en el portal de Operaciones de IoT de Azure (versión preliminar)

Para crear recursos y puntos de conexión de recursos y suscribirse a etiquetas y eventos de OPC UA, use el portal de Operaciones de IoT de Azure (en versión preliminar). Ve al portal de Azure IoT Operations (versión preliminar) en el explorador e inicia sesión con tus credenciales de Microsoft Entra ID.

Importante

Debe usar una cuenta profesional o educativa para iniciar sesión en el portal de Azure IoT Operations (versión preliminar). Para obtener más información, consulte Problemas conocidos > Crear cuentas de Entra.

Selección del sitio

Después de iniciar sesión, en el portal se muestra una lista de sitios a los que tiene acceso. Cada sitio es una colección de instancias de Operaciones de IoT de Azure en las que puede configurar los recursos. El administrador de TI es responsable de organizar las instancias en los sitios y de conceder acceso a los usuarios de OT de la organización. Dado que está trabajando con una nueva implementación, aún no hay sitios. Para encontrar el clúster que creó en el inicio rápido anterior, seleccione Instancias sin asignar. En el portal, una instancia de representa un clúster donde implementó operaciones de Azure IoT.

Captura de pantalla que muestra el nodo instancias sin asignar en el portal de operaciones de Azure IoT (versión preliminar).

Selección de la instancia

Seleccione la instancia en la que implementó Operaciones de IoT de Azure en el inicio rápido anterior:

Captura de pantalla de la lista de instancias de Operaciones de IoT de Azure.

Sugerencia

Si no viera ninguna instancia, es posible que no esté en el inquilino de Microsoft Entra ID adecuado. Puede cambiar el inquilino en el menú superior derecho del portal.

Adición de un punto de conexión de recurso

Cuando implementó Operaciones de IoT de Azure, eligió incluir un simulador de OPC PLC integrado. En este paso, agregará un punto de conexión de recurso que le permite conectarse al simulador de OPC PLC.

Para agregar un punto de conexión de recurso:

  1. Seleccione Administrar puntos de conexión de recursos y, después, Crear punto de conexión de recurso:

    Captura de pantalla que muestra la página de puntos de conexión de recursos en el portal de operaciones de Azure IoT (versión preliminar).

  2. Escriba la siguiente información del punto de conexión:

    Campo Value
    Nombre del punto de conexión del recurso opc-ua-connector-0
    URL del servidor OPC UA opc.tcp://opcplc-000000:50000
    Modo de autenticación de usuario Anonymous
    Autenticación de transporte Do not use transport authentication certificate
  3. Para guardar la definición, seleccione Crear.

    Esta configuración implementa un nuevo punto de conexión de recurso denominado opc-ua-connector-0 en el clúster. Puede usar kubectl para ver los puntos de conexión de recursos:

    kubectl get assetendpointprofile -n azure-iot-operations
    

Configuración del simulador

Estos inicios rápidos usan el simulador de OPC PLC para generar datos de ejemplo. Para habilitar el escenario de inicio rápido, es necesario configurar el punto de conexión del recurso para que se conecte sin que se haya establecido una confianza mutua. Esta configuración no se recomienda para entornos de producción o preproducción:

  1. Para configurar el punto de conexión del recurso para el escenario de inicio rápido, ejecute el siguiente comando:

    kubectl patch AssetEndpointProfile opc-ua-connector-0 -n azure-iot-operations --type=merge -p '{"spec":{"additionalConfiguration":"{\"applicationName\":\"opc-ua-connector-0\",\"security\":{\"autoAcceptUntrustedServerCertificates\":true}}"}}'
    

    Precaución

    No use esta configuración en entornos de producción o preproducción. Exponer el clúster a Internet sin una autenticación adecuada podría resultar en accesos no autorizados e, incluso, ataques DDOS.

    Para más información, consulte la sección Implementación del simulador de OPC PLC.

  2. Para permitir que los cambios de configuración surtan efecto inmediatamente, primero busque el nombre del pod aio-opc-supervisor mediante el comando siguiente:

    kubectl get pods -n azure-iot-operations
    

    El nombre del pod es similar a aio-opc-supervisor-956fbb649-k9ppr.

  3. Reinicie el pod aio-opc-supervisor mediante un comando similar al ejemplo siguiente. Use el nombre del pod aio-opc-supervisor del paso anterior:

    kubectl delete pod aio-opc-supervisor-956fbb649-k9ppr -n azure-iot-operations
    

Después de definir un recurso, un pod del conector de OPC UA lo detecta. El pod usa el punto de conexión de recurso que se especifica en la definición de recurso para conectarse a un servidor de OPC UA. Puede usar kubectl para ver el pod de detección que se creó al agregar el punto de conexión del recurso. El nombre del pod es similar a aio-opc-opc.tcp-1-8f96f76-kvdbt:

kubectl get pods -n azure-iot-operations

Cuando el simulador de OPC PLC está en ejecución, los datos fluyen desde el simulador hasta el conector, el agente de OPC UA y, finalmente, el agente MQ.

Administración de recursos

Después de seleccionar la instancia en el portal de operaciones de IoT de Azure (versión preliminar), verá la lista disponible de recursos en la página Activos. Si aún no hay recursos, esta lista está vacía:

Captura de pantalla de la lista de recursos vacíos de operaciones de Azure IoT.

Crear un activo

Para crear un recurso, seleccione Crear recurso.

Proporcione la siguiente información del recurso:

Campo Value
Nombre de activo thermostat
Punto de conexión de recurso opc-ua-connector-0
Descripción A simulated thermostat asset

Quite las Propiedades personalizadas existentes y agregue las siguientes propiedades personalizadas. Procure usar los nombres de propiedad exactos, ya que la plantilla de Power BI en un inicio rápido posterior las consulta:

Nombre de propiedad Detalles de la propiedad
proceso por lotes 102
cliente Contoso
equipment Caldera
isSpare true
ubicación Seattle

Captura de pantalla de la página de detalles del recurso de operaciones de IoT de Azure.

Seleccione Siguiente para ir a la página Agregar etiquetas.

Creación de etiquetas de OPC UA

Agregue dos etiquetas de OPC UA en la página Agregar etiquetas. Para agregar cada etiqueta, seleccione Agregar etiqueta o CSV y, después, seleccione Agregar etiqueta. Proporcione los detalles de la etiqueta que se indican en la siguiente tabla:

Id. de nodo Nombre de etiqueta Modo de observabilidad
ns=3;s=FastUInt10 temperatura None
ns=3;s=FastUInt100 Etiqueta 10 None

El modo Observabilidad es uno de los siguientes valores: none, gauge, counter, histogram o log.

Puede invalidar el intervalo de muestreo y el tamaño de cola predeterminados para cada etiqueta.

Captura de pantalla de la página agregar etiqueta de operaciones de IoT de Azure.

Seleccione Siguiente para ir a la página Agregar eventos y, después, seleccione Siguiente para ir a la página Revisión.

Revisar

Revise los detalles del recurso y la etiqueta y realice los ajustes necesarios antes de seleccionar Crear:

Captura de pantalla de la página de revisión de creación de recursos de operaciones de Azure IoT.

Comprobar que los datos fluyan

Compruebe que los datos fluyen al agente MQTT mediante la herramienta de mqttui. En este ejemplo, ejecutas la herramienta de mqttui dentro de su clúster de Kubernetes:

  1. Ejecuta el siguiente comando para implementar un pod que incluya las herramientas de mqttui y mosquitto que son útiles para interactuar con el agente MQ en el clúster:

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/samples/quickstarts/mqtt-client.yaml
    

    En el fragmento de código siguiente se muestra el archivo YAML que aplicaste:

    # 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
    

    Precaución

    Esta configuración no es segura. No uses esta configuración en un entorno de producción.

  2. Cuando se ejecute el pod de mqtt-client, ejecuta el siguiente comando para crear un entorno de shell en el pod que creaste:

    kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
    
  3. En el shell del pod de mqtt-client, ejecute el siguiente comando para conectarse al agente MQ utilizando la herramienta de mqttui:

    mqttui -b mqtts://aio-mq-dmqtt-frontend:8883 -u '$sat' --password $(cat /var/run/secrets/tokens/mq-sat) --insecure
    

Para comprobar que el recurso de termostato que agregó está publicando datos, vea la telemetría en el tema azure-iot-operations/data:

Captura de pantalla del tema mqttui que muestra la telemetría de temperatura.

Si no fluye ningún dato, reinicie el pod de aio-opc-opc.tcp-1:

  1. Busque el nombre del pod de aio-opc-opc.tcp-1 mediante el comando siguiente:

    kubectl get pods -n azure-iot-operations
    

    El nombre del pod es similar a aio-opc-opc.tcp-1-849dd78866-vhmz6.

  2. Reinicie el pod aio-opc-opc.tcp-1 mediante un comando similar al ejemplo siguiente. Use el nombre del pod aio-opc-opc.tcp-1 del paso anterior:

    kubectl delete pod aio-opc-opc.tcp-1-849dd78866-vhmz6 -n azure-iot-operations
    

Las etiquetas de ejemplo que agregó en el inicio rápido anterior generan mensajes del recurso que tienen un aspecto similar al de los ejemplos siguientes:

{
    "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
}

Detección de orígenes de datos de OPC UA mediante la versión preliminar de Azure IoT Akri

En la sección anterior, ha visto cómo agregar recursos manualmente. También es posible usar Azure IoT Akri (versión preliminar) para detectar automáticamente orígenes de datos de OPC UA y crear recursos personalizados de instancia de Akri que representen los dispositivos detectados. Actualmente, Akri no puede detectar y crear recursos que se puedan ingerir en el registro de dispositivos de Azure (versión preliminar).

Al implementar Operaciones de IoT de Azure, la implementación incluye los pods del controlador de detección de Akri. Para comprobar si estos pods están en ejecución, ejecute el siguiente comando:

kubectl get pods -n azure-iot-operations | grep akri
kubectl get pods -n azure-iot-operations |  Select-String -Pattern "akri"

La salida del comando anterior es similar a la del siguiente ejemplo:

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

En el terminal de Codespaces, ejecute el siguiente comando para aplicar una nueva configuración para el controlador de detección:

kubectl apply -f /workspaces/explore-iot-operations/samples/quickstarts/akri-opcua-asset.yaml

En el fragmento de código siguiente se muestra el archivo YAML que aplicó:

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

Para comprobar la configuración, ejecute el siguiente comando para ver las instancias de Akri que representan los orígenes de datos de OPC UA detectados por Akri:

kubectl get akrii -n azure-iot-operations

La instancia puede tardar unos minutos en aparecer.

La salida del comando anterior es similar al ejemplo siguiente.

NAMESPACE              NAME                      CONFIG             SHARED   NODES            AGE
azure-iot-operations   akri-opcua-asset-dbdef0   akri-opcua-asset   true     ["dom-aio-vm"]   35m

Ya se pueden usar estos recursos en el espacio de nombres del clúster local.

Para confirmar que Akri se ha conectado al agente de OPC UA, copie y pegue el nombre de la instancia de Akri del paso anterior en el siguiente comando:

kubectl get akrii <AKRI_INSTANCE_NAME> -n azure-iot-operations -o json

La salida del comando tiene un aspecto similar al siguiente ejemplo. En este fragmento de ejemplo de la salida se muestran los valores de la instancia de Akri brokerProperties y se confirma que el agente de OPC UA está conectado.

"spec": {

        "brokerProperties": {
            "ApplicationUri": "Boiler #2",
            "AssetEndpointProfile": "{\"spec\":{\"uuid\":\"opc-ua-broker-opcplc-000000-azure-iot-operation\"……

¿Cómo solucionamos el problema?

En esta guía de inicio rápido ha agregado un punto de conexión de recurso y ha definido un recurso y etiquetas. Los recursos y las etiquetas modelan los datos del servidor OPC UA para facilitar el uso de esos datos en un MQTT broker y otros procesos posteriores. Use el recurso termostato que definió en la siguiente guía de inicio rápido.

Limpieza de recursos

Si ya no usará esta implementación, elimine el clúster de Kubernetes donde implementó Operaciones de IoT de Azure y quite el grupo de recursos de Azure que contenga el clúster.

Paso siguiente

Inicio rápido: envío de telemetría de recursos a la nube mediante el conector de lago de datos para Azure IoT MQ.