Partager via


Découvrir les sources de données OPC UA à l’aide des services Akri

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.

Vous devrez déployer une nouvelle installation d’Azure IoT Operations lorsqu’une version en disponibilité générale est mise à disposition, vous ne pourrez pas mettre à niveau une installation en préversion.

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 cet article, vous allez apprendre à découvrir automatiquement les sources de données OPC UA. Après avoir déployé la préversion d’Opérations Azure IoT, configurez les services Akri pour qu’ils découvrent les sources de données OPC UA en périphérie. Les services Akri créent des ressources personnalisées dans votre cluster Kubernetes qui représentent les sources de données qu’ils découvrent. La possibilité de découvrir les sources de données OPC UA permet d’éviter d’avoir à les configurer manuellement via l’interface utilisateur web de l’expérience opérationnelle.

Important

Pour le moment, vous ne pouvez pas utiliser le Registre de Dispositifs Azure pour gérer les ressources que les services Akri découvrent et créent.

Les services Akri vous permettent de détecter et de créer des ressources dans l’espace d’adressage d’un serveur OPC UA. La détection de ressources OPC UA génère des ressources personnalisées AssetType et Asset pour les ressources conformes à la spécification OPC UA Device Integration (DI).

Prérequis

  • Installer Opérations Azure IoT (préversion).

  • Vérifiez que les pods de services Akri sont correctement configurés en exécutant la commande suivante :

    kubectl get pods -n azure-iot-operations
    

    La sortie comporte une ligne qui indique que l’agent Akri et les pods de découverte sont en cours d’exécution :

    NAME                                             READY   STATUS    RESTARTS   AGE
    aio-akri-agent-daemonset-hwpc7                   1/1     Running   0          17mk0s
    aio-opc-asset-discovery-wzlnj                    1/1     Running   0          8m28s
    

Configurer le gestionnaire de détection OPC UA

Pour configurer le gestionnaire de découverte OPC UA en vue de la détection de ressources, créez un fichier de configuration YAML qui contient les valeurs décrites dans cette section :

Nom Obligatoire Datatype Par défaut Commentaire
EndpointUrl true Chaîne null URL du point de terminaison OPC UA à utiliser pour la découverte des ressources
AutoAcceptUntrustedCertificates true ¹ Booléen false Le client doit-il accepter automatiquement les certificats non approuvés ? Un certificat ne peut être accepté automatiquement comme étant approuvé que si aucune erreur irrémédiable ne s’est produite pendant la validation de la chaîne. Par exemple, un certificat avec une chaîne incomplète n’est pas accepté.
UseSecurity true ¹ Booléen true Le client doit-il utiliser une connexion sécurisée ?
UserName false Chaîne null Nom d’utilisateur pour l’authentification des utilisateurs. ²
Password false Chaîne null Mot de passe pour l’authentification utilisateur. ²

¹ La version actuelle du gestionnaire de découverte ne prend en charge que UseSecurity=false et nécessite autoAcceptUntrustedCertificates=true.
² Implémentation temporaire jusqu’à ce que les services Akri puissent passer les secrets Kubernetes.

L’exemple suivant illustre la découverte d’un serveur OPC PLC. Vous pouvez ajouter les paramètres de ressource pour plusieurs serveurs OPC PLC.

  1. Pour créer le fichier de configuration YAML, copiez et collez le contenu suivant dans un nouveau fichier, puis enregistrez-le sous opcua-configuration.yaml :

    Si vous utilisez le serveur PLC simulé qui a été déployé avec le démarrage rapide Opérations Azure IoT, vous n’avez pas besoin de modifier le fichier endpointUrl. Si vos propres serveurs OPC UA s’exécutent ou utilisent les serveurs PLC simulés déployés sur Azure, ajoutez votre URL de point de terminaison en conséquence. Les URL de point de terminaison de découverte se présentent comme ceci : opc.tcp://<FQDN>:50000/. Pour rechercher les noms de domaine complets (FQDN) de vos serveurs OPC PLC, accédez à votre déploiement sur le Portail Azure. Pour chaque serveur, copiez et collez la valeur du nom de domaine complet dans vos URL de point de terminaison.

    apiVersion: akri.sh/v0
    kind: Configuration
    metadata:
      name: aio-akri-opcua-asset
    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
    
  2. Pour appliquer la configuration, exécutez la commande suivante :

    kubectl apply -f opcua-configuration.yaml -n azure-iot-operations
    

Conseil

Dans un déploiement par défaut d’Opérations Azure IoT, le gestionnaire de découverte OPC UA est déjà configuré pour découvrir le serveur PLC simulé. Si vous souhaitez découvrir les ressources connectées à d’autres serveurs OPC UA, vous pouvez les ajouter au fichier de configuration.

Vérifier la configuration

Pour vérifier que le conteneur de découverte de ressources est configuré et en cours d’exécution :

  1. Utilisez la commande suivante pour vérifier les journaux des pods :

    kubectl logs <insert aio-opc-asset-discovery pod name> -n azure-iot-operations
    

    Un journal du pod aio-opc-asset-discovery indique après quelques secondes que le gestionnaire de découverte s’est inscrit auprès des services Akri :

    2024-08-01T15:04:12.948Z aio-opc-asset-discovery-4nsgs - OPC UA SDK 1.5.374.70 from 07/20/2024 07:37:16
    2024-08-01T15:04:12.973Z aio-opc-asset-discovery-4nsgs - OPC UA SDK informational version: 1.5.374.70+1ee3beb87993019de4968597d17cb54d5a4dc3c8
    2024-08-01T15:04:12.976Z aio-opc-asset-discovery-4nsgs - Akri agent registration enabled: True
    2024-08-01T15:04:13.475Z aio-opc-asset-discovery-4nsgs - Hosting starting
    2024-08-01T15:04:13.547Z aio-opc-asset-discovery-4nsgs - Overriding HTTP_PORTS '8080' and HTTPS_PORTS ''. Binding to values defined by URLS instead 'http://+:8080'.
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Now listening on: http://:8080
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Application started. Press Ctrl+C to shut down.
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Hosting environment: Production
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Content root path: /app
    2024-08-01T15:04:13.774Z aio-opc-asset-discovery-4nsgs - Hosting started
    2024-08-01T15:04:13.881Z aio-opc-asset-discovery-4nsgs - Registering with Agent as HTTP endpoint using own IP from the environment variable POD_IP: 10.42.0.245
    2024-08-01T15:04:14.875Z aio-opc-asset-discovery-4nsgs - Registered with the Akri agent with name opcua-asset for http://10.42.0.245:8080 with type Network and shared True
    2024-08-01T15:04:14.877Z aio-opc-asset-discovery-4nsgs - Successfully re-registered OPC UA Asset Discovery Handler with the Akri agent
    2024-08-01T15:04:14.877Z aio-opc-asset-discovery-4nsgs - Press CTRL+C to exit 
    

    Après environ une minute, les services Akri émettent la première demande de découverte sur la base de la configuration :

    2024-08-01T15:04:15.280Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Reading message.
    2024-08-01T15:04:15.477Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Received discovery request from ipv6:[::ffff:10.42.0.241]:48638
    2024-08-01T15:04:15.875Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Start asset discovery
    2024-08-01T15:04:15.882Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Discovering OPC UA     opc.tcp://opcplc-000000:50000 using Asset Discovery
    2024-08-01T15:04:15.882Z aio-opc-asset-discovery-4nsgs [opcuabroker@311 SpanId:6d3db9751eebfadc, TraceId:e5594cbaf3993749e92b45c88c493377, ParentId:0000000000000000 ConnectionId:0HN5I7CQJPJL0 RequestPath:/v0.DiscoveryHandler/Discover RequestId:0HN5I7CQJPJL0:00000001] - Selected AutoAcceptUntrustedCertificates mode: False
    

    Une fois la découverte terminée, le gestionnaire de découverte renvoie le résultat aux services Akri pour créer une ressource personnalisée d’instance Akri avec des informations sur les ressources et des variables observables. Le gestionnaire de découverte répète la découverte toutes les 10 minutes pour détecter les modifications éventuelles sur le serveur.

  2. Pour afficher les instances Akri découvertes, exécutez la commande suivante :

    kubectl get akrii -n azure-iot-operations
    

    La sortie de la commande précédente ressemble à celle de l’exemple suivant. Vous devrez peut-être attendre quelques secondes avant que l’instance Akri ne soit créée :

    NAME                      CONFIG             SHARED   NODES                          AGE
    akri-opcua-asset-dbdef0   akri-opcua-asset   true     ["k3d-k3s-default-server-0"]   24h
    

    Le connecteur pour le superviseur OPC UA surveille les nouvelles ressources personnalisées d’instance Akri de type opc-ua-asset, et génère les types de ressources initiales et les ressources personnalisées pour celles-ci. Vous pouvez modifier les ressources personnalisées des actifs en ajoutant des paramètres tels que la publication étendue pour plus de points de données, ou le connecteur pour les paramètres d’observabilité OPC UA.

  3. Pour confirmer que l’instance d’Akri est correctement connectée au connecteur pour OPC UA, exécutez la commande suivante. Remplacez l’espace réservé par le nom de l’instance Akri qui a été incluse dans la sortie de la commande précédente :

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

    La sortie de la commande comporte une section qui ressemble à l’exemple suivant. L’extrait de code montre les valeurs brokerProperties de l’instance Akri et confirme que le connecteur pour OPC UA est connecté.

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