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.
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 aopc.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
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:
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.
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.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\"……