Condividi tramite


Individuare le origini dati OPC UA tramite i servizi Akri

Importante

Anteprima delle operazioni di Azure IoT: abilitata da Azure Arc è attualmente disponibile in ANTEPRIMA. Non è consigliabile usare questo software di anteprima negli ambienti di produzione.

Sarà necessario distribuire una nuova installazione di Azure IoT Operations quando viene resa disponibile una versione disponibile a livello generale, non sarà possibile aggiornare un'installazione di anteprima.

Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.

Questo articolo illustra come individuare automaticamente le origini dati OPC UA. Dopo aver distribuito Anteprima di Operazioni di Azure IoT, configurare i servizi Akri per individuare le origini dati OPC UA nella rete perimetrale. I servizi Akri creano risorse personalizzate nel cluster Kubernetes che rappresentano le origini dati individuate. La possibilità di individuare le origini dati OPC UA elimina la necessità di configurarle manualmente tramite l'interfaccia utente Web dell'esperienza operativa.

Importante

Attualmente non è possibile usare Registro Dispositivi Azure per gestire gli asset individuati e creati dai servizi Akri.

I servizi Akri consentono di rilevare e creare asset nello spazio indirizzi di un server OPC UA. Il rilevamento delle risorse OPC UA genera AssetType risorse personalizzate Asset per le risorse conformi alla specifica OPC UA Device Integration (DI).

Prerequisiti

  • Installare Anteprima di Operazioni di Azure IoT.

  • Verificare che i pod dei servizi Akri siano configurati correttamente eseguendo il comando seguente:

    kubectl get pods -n azure-iot-operations
    

    L'output include una riga che mostra l'agente Akri e i pod di individuazione sono in esecuzione:

    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
    

Configurare il gestore di individuazione OPC UA

Per configurare il gestore di individuazione OPC UA per il rilevamento degli asset, creare un file di configurazione YAML contenente i valori descritti in questa sezione:

Nome Obbligatorio Datatype Predefiniti Commento
EndpointUrl true String Null URL dell'endpoint OPC UA da usare per l'individuazione degli asset
AutoAcceptUntrustedCertificates true ¹ Boolean false Il client deve accettare automaticamente i certificati non attendibili? Un certificato può essere accettato automaticamente come attendibile solo se non si sono verificati errori non eliminabili durante la convalida della catena. Ad esempio, un certificato con catena incompleta non viene accettato.
UseSecurity true ¹ Booleano true Il client deve usare una connessione protetta?
UserName false String Null Nome utente per l'autenticazione utente. ²
Password false String Null Password per l'autenticazione utente. ²

¹ La versione corrente del gestore di individuazione supporta solo UseSecurity=false e richiede autoAcceptUntrustedCertificates=true.
² Implementazione temporanea fino a quando i servizi Akri saranno in grado di passare i segreti di Kubernetes.

Nell'esempio seguente viene illustrata l'individuazione di un server OPC PLC. È possibile aggiungere i parametri di asset per più server OPC PLC.

  1. Per creare il file di configurazione YAML, copiare e incollare il contenuto seguente in un nuovo file e salvarlo come opcua-configuration.yaml:

    Se si usa il server PLC simulato distribuito tramite la guida di avvio rapido di Operazioni di Azure IoT, non è necessario modificare il endpointUrl. Se si dispone di server OPC UA propri o si usano i server PLC simulati distribuiti in Azure, aggiungere l'URL dell'endpoint corrispondente. Gli URL degli endpoint di individuazione sono simili a opc.tcp://<FQDN>:50000/. Per trovare i valori FQDN dei server OPC PLC, passare alla distribuzione nel portale di Azure. Per ogni server copiare e incollare il valore FQDN negli URL dell'endpoint.

    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. Per applicare la configurazione, eseguire il comando seguente:

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

Suggerimento

In una distribuzione predefinita di Operazioni IoT di Azure, il gestore di individuazione OPC UA è già configurato per individuare il server PLC simulato. Per individuare gli asset connessi ad altri server OPC UA, è possibile aggiungerli al file di configurazione.

Verificare la configurazione

Per verificare che il contenitore di individuazione degli asset sia configurato ed eseguito:

  1. Usare il comando seguente per controllare i log del pod:

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

    Dopo alcuni secondi, un log del pod aio-opc-asset-discovery indica che il gestore di individuazione si è registrato con i servizi 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 
    

    Dopo circa un minuto, i servizi Akri emettono la prima richiesta di individuazione in base alla configurazione:

    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
    

    Al termine dell'individuazione, il gestore di individuazione invia il risultato ai servizi Akri per creare una risorsa personalizzata dell'istanza di Akri con informazioni sugli asset e variabili osservabili. Il gestore di individuazione ripete l'individuazione ogni 10 minuti per rilevare eventuali modifiche nel server.

  2. Per visualizzare le istanze di Akri individuate, eseguire il comando seguente:

    kubectl get akrii -n azure-iot-operations
    

    L'output del comando precedente è simile all'esempio seguente. Potrebbe essere necessario attendere alcuni secondi per la creazione dell'istanza di Akri:

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

    Il supervisore del connettore per OPC UA controlla se sono presenti nuove risorse dell'istanza di Akri personalizzate di tipo opc-ua-asset e genera i relativi tipi di asset iniziali e le risorse personalizzate per gli asset. È possibile modificare le risorse personalizzate degli asset aggiungendo impostazioni, ad esempio la pubblicazione estesa per più punti dati o le impostazioni di osservabilità del connettore per OPC UA.

  3. Per verificare che l'istanza di Akri sia connessa correttamente al connettore per OPC UA, eseguire il comando seguente. Sostituire il segnaposto con il nome dell'istanza di Akri inclusa nell'output del comando precedente:

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

    L'output del comando include una sezione simile all'esempio seguente. Il frammento mostra i valori dell'istanza brokerProperties di Akri e conferma che il connettore per OPC UA è connesso.

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