Démarrage rapide : ajouter des ressources OPC UA à votre cluster Opérations Azure IoT (Préversion)

Important

Opérations Azure IoT (préversion) – activé parc Azure Arc est actuellement en PRÉVERSION. Vous ne devez pas utiliser ce logiciel en préversion dans des environnements de production.

Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.

Dans ce guide de démarrage rapide, vous ajoutez manuellement des ressources OPC UA à votre cluster Opérations Azure IoT Préversion. Ces ressources publient des messages sur le répartiteur Azure IoT MQ (Préversion) dans votre cluster Opérations Azure IoT. En règle générale, un utilisateur OT effectue ces étapes.

Une ressource est un appareil physique ou une entité logique qui représente un appareil, un ordinateur, un système ou un processus. Par exemple, une ressource physique peut être une pompe, un moteur, un réservoir ou une ligne de production. Une ressource logique que vous définissez peut avoir des propriétés, des données de télémétrie de flux ou générer des événements.

Les serveurs OPC UA sont des applications logicielles qui communiquent avec des ressources. Les balises OPC UA sont des points de données que les serveurs OPC UA exposent. Les balises OPC UA peuvent fournir des données en temps réel ou un historique sur l’état, les performances, la qualité ou la condition des ressources.

Dans ce démarrage rapide, vous utilisez le portail Opérations Azure IoT (préversion) pour créer vos ressources. Vous pouvez également utiliser Azure CLI pour effectuer certaines de ces tâches.

Prérequis

Terminez Démarrage rapide : déployer Opérations Azure IoT (Préversion) sur un cluster Kubernetes avec Arc avant de commencer ce démarrage rapide.

Pour vous connecter au portail Opérations Azure IoT (préversion), vous devez disposer d’un compte professionnel ou scolaire dans le locataire où vous avez déployé Opérations Azure IoT. Si vous utilisez actuellement un compte Microsoft (MSA), vous devez créer un Microsoft Entra ID avec au moins des autorisations de contributeur pour le groupe de ressources contenant votre instance Kubernetes – Azure Arc. Pour plus d’informations, consultez la section Problèmes connus > Créer un compte Entra.

Quel problème résoudrons-nous ?

Les données exposées par les serveurs OPC UA peuvent avoir une structure complexe et peuvent être difficiles à comprendre. Opérations Azure IoT permettent de modéliser les ressources OPC UA en tant que balises, événements et propriétés. Cette modélisation facilite la compréhension des données et leur utilisation dans des processus en aval tels que le répartiteur MQ et les pipelines de processeur de données Azure IoT (Préversion).

Se connecter au portail Opérations Azure IoT (Préversion)

Pour créer des points de terminaison de ressources, des ressources et s’abonner aux étiquettes et événements OPC UA, utilisez le portail Opérations Azure IoT (préversion). Accédez au portail Opérations Azure IoT (Préversion) dans votre navigateur, puis connectez-vous avec vos informations d’identification Microsoft Entra ID.

Important

Vous devez utiliser un compte professionnel ou scolaire pour vous connecter au portail Opérations Azure IoT (préversion). Pour plus d’informations, consultez la section Problèmes connus > Créer un compte Entra.

Sélectionner votre site

Une fois connecté, le portail affiche la liste des sites auxquels vous avez accès. Chaque site est une collection d’instances Opérations Azure IoT où vous pouvez configurer vos ressources. Votre administrateur informatique est chargé d’organiser des instances dans des sites et d’accorder l’accès aux utilisateurs OT de votre organisation. Étant donné que vous travaillez avec un nouveau déploiement, aucun site n’est encore présent. Vous trouverez le cluster que vous avez créé dans le guide de démarrage rapide précédent en sélectionnant des instances non attribuées. Dans le portail, une instance représente un cluster dans lequel vous avez déployé des Opérations Azure IoT.

Capture d’écran montrant le nœud des instances non attribuées dans le portail des Opérations Azure IoT (préversion).

Sélectionner votre instance

Sélectionnez l’instance sur laquelle vous avez déployé Opérations Azure IoT dans le guide de démarrage rapide précédent :

Capture d’écran de la liste des instances d’Opérations Azure IoT.

Conseil

Si vous ne voyez aucune instance, il est possible que vous ne soyez pas dans le tenant Azure Active Directory approprié. Vous pouvez modifier le tenant à partir du menu supérieur droit dans le portail.

Ajouter un point de terminaison de ressource

Lorsque vous avez déployé Opérations Azure IoT, vous avez choisi d’inclure un simulateur OPC PLC intégré. Dans cette étape, vous ajoutez un point de terminaison de ressource qui vous permet de vous connecter au simulateur OPC PLC.

Pour ajouter un point de terminaison de ressource :

  1. Sélectionnez Gérer des points de terminaison de ressource, puis Créer un point de terminaison de ressource :

    Capture d’écran illustrant la page des points de terminaison des ressources dans le portail Opérations Azure IoT (préversion).

  2. Entrez les informations de point de terminaison suivantes :

    Champ Valeur
    Nom opc-ua-connector-0
    URL d’OPC UA Broker opc.tcp://opcplc-000000:50000
    Authentification utilisateur Anonymous
    Authentification de transport Do not use transport authentication certificate
  3. Pour enregistrer la définition, sélectionnez Créer.

    Cette configuration déploie un nouveau point de terminaison de ressource appelé opc-ua-connector-0 sur le cluster. Vous pouvez utiliser kubectl pour voir les points de terminaison de ressource :

    kubectl get assetendpointprofile -n azure-iot-operations
    

Ces démarrages rapides se servent du simulateur OPC PLC pour générer des exemples de données. Pour activer le scénario de démarrage rapide, vous devez configurer OPC UA Broker pour qu’il accepte les certificats de serveur non approuvés et votre point de terminaison d’actif pour qu’il se connecte sans aucune approbation mutuelle établie. Cette configuration n’est pas recommandée pour les environnements de production ou de préproduction. Pour plus d’informations, consultez Déployer le simulateur OPC PLC :

  1. Afin de configurer le simulateur pour le scénario de démarrage rapide, exécutez la commande suivante :

    az k8s-extension update --version 0.3.0-preview --name opc-ua-broker --release-train preview --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --cluster-type connectedClusters --auto-upgrade-minor-version false --config opcPlcSimulation.deploy=true --config opcPlcSimulation.autoAcceptUntrustedCertificates=true
    

    Attention

    N’utilisez pas cette configuration dans des environnements de production ou de pré-production. La configuration réduit le niveau de sécurité de l’OPC PLC pour qu’il accepte les connexions d’un client sans opération explicite d’approbation de certificat de pair.

  2. Pour configurer le point de terminaison de ressource pour le scénario de démarrage rapide, exécutez la commande suivante :

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

    Attention

    N’utilisez pas cette configuration dans des environnements de production ou de pré-production. En exposant votre cluster à Internet sans authentification appropriée, vous risquez de provoquer des accès non autorisés, voire de subir des attaques DDOS.

    Pour en savoir plus, consultez la section Déployer le simulateur OPC PLC.

  3. Pour que les modifications de configuration prennent effet immédiatement, recherchez d’abord le nom de votre pod aio-opc-supervisor en utilisant la commande suivante :

    kubectl get pods -n azure-iot-operations
    

    Le nom de votre pod ressemble à aio-opc-supervisor-956fbb649-k9ppr.

  4. Redémarrez le pod aio-opc-supervisor en utilisant une commande semblable à celle de l’exemple suivant. Utilisez le nom du pod aio-opc-supervisor de l’étape précédente :

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

Après votre définition d’une ressource, un pod de connecteur OPC UA le détecte. Le pod utilise un point de terminaison de ressource, que vous spécifiez dans la définition de ressource, pour se connecter à un serveur OPC UA. Vous pouvez utiliser kubectl pour voir le pod de découverte créé quand vous avez ajouté le point de terminaison de ressource. Le nom du pod ressemble à aio-opc-opc.tcp-1-8f96f76-kvdbt :

kubectl get pods -n azure-iot-operations

Quand le simulateur OPC PLC s’exécute, les données s’acheminent du simulateur vers le connecteur, puis vers OPC UA Broker et enfin vers le broker MQ.

Gérer vos actifs

Après avoir sélectionné votre instance dans le portail Opérations Azure IoT (préversion), la liste des ressources disponibles s’affiche sur la page Ressources. S’il n’y a pas encore de ressources, cette liste est vide :

Capture d’écran de la liste des ressources vides Opérations Azure IoT.

Créer un actif

Pour créer une ressource, sélectionnez Créer une ressource.

Entrez les informations de ressource suivantes :

Champ Value
Nom de l’actif thermostat
Point de terminaison de ressource opc-ua-connector-0
Description A simulated thermostat asset

Capture d’écran de la page de détails des ressources Opérations Azure IoT.

Faites défiler vers le bas de l’écran sur la page Détails de la ressource, puis configurez toutes les autres propriétés de la ressource, telles que :

  • Fabricant
  • URI de fabricant
  • Modèle
  • Code du produit
  • Version du matériel
  • Version du logiciel
  • Numéro de série
  • URI de la documentation

Vous pouvez supprimer les exemples de propriétés déjà définies et ajouter vos propriétés personnalisées.

Sélectionnez Suivant pour accéder à la page Ajouter des balises.

Créer des balises OPC UA

Ajoutez deux étiquettes OPC UA sur la page Ajouter des étiquettes. Pour ajouter chaque étiquette, sélectionnez Ajouter une étiquette ou un CSV, puis Ajouter une étiquette. Entrez les détails de la balise indiqués dans le tableau suivant :

ID de nœud Nom de la balise Mode d’observabilité
ns=3;s=FastUInt10 température aucun(e)
ns=3;s=FastUInt100 Balise 10 Aucune

Le mode Observabilité est l’une des valeurs suivantes : none, gauge, counter, histogram ou log.

Vous pouvez remplacer l’intervalle d’échantillonnage et la taille de file d’attente par défaut pour chaque balise.

Capture d’écran de la page Ajouter une balise Opérations Azure IoT.

Sélectionnez Suivant pour accéder à la page Ajouter des évènements, puis Suivant pour la page Révision.

Révision

Passez en revue votre ressource et les détails de la balise et apportez les ajustements nécessaires avant de sélectionner Créer :

Capture d’écran de la page de révision de création de ressources Opérations Azure IoT.

Vérifier que les données circulent

Vérifiez que les données sont envoyées en direction du MQTT broker à l’aide de l’outil mqttui. Dans cet exemple, vous exécutez l’outil mqttui dans votre cluster Kubernetes :

  1. Exécutez la commande suivante pour déployer un pod qui inclut les outils mqttui et mosquitto, lesquels permettent d’interagir avec le répartiteur MQ dans le cluster :

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

    L’extrait de code suivant montre le fichier YAML que vous avez appliqué :

    # 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
    

    Attention

    Cette configuration n’est pas sécurisée. N’utilisez pas cette configuration dans un environnement de production.

  2. Quand le pod mqtt-client s’exécute, exécutez la commande suivante pour créer un environnement d’interpréteur de commandes dans le pod que vous avez créé :

    kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- sh
    
  3. Au niveau de l’interpréteur de commandes, dans le pod mqtt-client, exécutez la commande suivante pour vous connecter au répartiteur MQ à l’aide de l’outil mqttui :

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

Pour vérifier que la ressource thermostat que vous avez ajoutée publie des données, visualisez la télémétrie dans la rubrique azure-iot-operations/data :

Capture d’écran de la rubrique mqttui montrant la télémétrie de température.

Si aucune donnée ne circule, redémarrez le pod aio-opc-opc.tcp-1 :

  1. Recherchez le nom de votre pod aio-opc-opc.tcp-1 à l’aide de la commande suivante :

    kubectl get pods -n azure-iot-operations
    

    Le nom de votre pod ressemble à aio-opc-opc.tcp-1-849dd78866-vhmz6.

  2. Redémarrez le pod aio-opc-opc.tcp-1 en utilisant une commande semblable à celle de l’exemple suivant. Utilisez le nom du pod aio-opc-opc.tcp-1 de l’étape précédente :

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

Les exemples de balises que vous avez ajoutés dans le guide de démarrage rapide précédent génèrent des messages à partir de votre ressource qui ressemblent aux exemples suivants :

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

Détecter des sources de données OPC UA en utilisant Azure IoT Akri (Préversion)

Dans la section précédente, vous avez vu comment ajouter des ressources manuellement. Vous pouvez également utiliser Azure IoT Akri (Préversion) pour découvrir automatiquement des sources de données OPC UA et créer des ressources personnalisées d’instance Akri qui représentent les appareils détectés. À l’heure actuelle, Akri ne peut pas détecter ni créer des ressources qui peuvent être ingérées dans Registre de Dispositifs Azure (Préversion).

Lorsque vous déployez Opérations Azure IoT, le déploiement inclut les pods du gestionnaire de découverte Akri. Pour vérifier que ces pods sont en cours d’exécution, exécutez la commande suivante :

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

La sortie de la commande précédente ressemble à l’exemple suivant :

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

Sur la machine sur laquelle votre cluster Kubernetes s’exécute, exécutez la commande suivante pour appliquer une nouvelle configuration au gestionnaire de découverte :

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

L’extrait de code suivant montre le fichier YAML que vous avez appliqué :

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

Pour vérifier la configuration, exécutez la commande suivante pour afficher les instances Akri qui représentent les sources de données OPC UA découvertes par Akri :

kubectl get akrii -n azure-iot-operations

L’affichage de l’instance peut prendre quelques minutes.

La sortie de la commande précédente ressemble à celle de l’exemple suivant.

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

Vous pouvez à présent utiliser ces ressources dans l’espace de noms de cluster local.

Pour confirmer la connexion d’Akri répartiteur OPC UA, copiez et collez le nom d’instance Akri de l’étape précédente dans la commande suivante :

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

La sortie de la commande est similaire à l’exemple suivant. Cet exemple de sortie montre les valeurs brokerProperties de l’instance Akri et confirme la connexion du répartiteur OPC UA.

"spec": {

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

Comment avons-nous résolu le problème ?

Dans ce guide de démarrage rapide, vous avez ajouté un point de terminaison de ressource, puis défini une ressource et des balises. Les ressources et balises modélisent les données du serveur OPC UA pour faciliter l’utilisation des données dans un répartiteur MQTT et d’autres processus en aval. Vous utilisez la ressource thermostat que vous avez définie dans le guide de démarrage rapide suivant.

Nettoyer les ressources

Si vous n’utilisez plus ce déploiement, supprimez le cluster Kubernetes sur lequel vous avez déployé Opérations Azure IoT et supprimez le groupe de ressources Azure qui contient le cluster.

Étape suivante

Démarrage rapide : Utiliser des pipelines Azure IoT Data Processor (préversion) pour traiter les données de vos ressources OPC UA.