共用方式為


使用 Akri 服務探索 OPC UA 資料來源

重要

已啟用 Azure Arc 的 Azure IoT 操作預覽版目前為預覽狀態。 請勿在生產環境使用此預覽版軟體。

當正式發行可供使用時,您將需要部署新的 Azure IoT 作業安裝,您將無法升級預覽安裝。

請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

在本文中,您將了解如何自動探索 OPC UA 資料來源。 部署 Azure IoT 操作預覽之後,您會設定 Akri 服務來探索邊緣的 OPC UA 資料來源。 Akri 服務會在 Kubernetes 叢集中建立自訂資源,代表其所探索的資料來源。 能夠探索 OPC UA 資料來源可讓您不必使用作業體驗 Web UI 手動設定這些資源。

重要

目前,您無法使用 Azure Device Registry 來管理 Akri 服務探索及建立的資產。

Akri 服務可讓您在 OPC UA 伺服器的位址空間中偵測及建立資產。 OPC UA 資產偵測會產生符合 OPC UA 裝置整合 (DI) 規格資產的 AssetTypeAsset 自訂資源 (CR)。

必要條件

  • 安裝 Azure IoT 操作預覽版。

  • 執行下列命令,確認已正確設定 Akri 服務 Pod:

    kubectl get pods -n azure-iot-operations
    

    輸出中會包含一行,其中顯示 Akri 代理程式和探索 Pod 正在執行:

    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
    

設定 OPC UA 探索處理常式

若要設定用於資產偵測的 OPC UA 探索處理常式,請建立 YAML 組態檔,其中包含本節中所述的值:

名稱 必要 Datatype 預設 註解
EndpointUrl true String null 用於資產探索的 OPC UA 端點 URL
AutoAcceptUntrustedCertificates true ¹ 布林值 false 用戶端是否應接受不受信任的憑證? 如果鏈結驗證期間未發生任何不可隱藏的錯誤,則憑證只能自動接受為受信任的憑證。 例如,不接受具有不完整鏈結的憑證。
UseSecurity true ¹ 布林值 true 用戶端是否應使用安全連線?
UserName false String null 使用者驗證的使用者名稱。 ²
Password false String null 使用者驗證的密碼。 ²

¹ 目前版本的探索處理常式僅支援 UseSecurity=false,且需要 autoAcceptUntrustedCertificates=true
² 暫存實作,直到 Akri 服務可以傳遞 Kubernetes 秘密為止。

下列範例示範探索 OPC PLC 伺服器。 您可以為多部 OPC PLC 伺服器新增資產參數。

  1. 若要建立 YAML 設定檔,請將下列內容複製並貼到新的檔案中,並將其另存為 opcua-configuration.yaml

    如果您使用以 Azure IoT 操作快速入門部署的模擬的 PLC 伺服器,則不需要變更 endpointUrl。 如果您有自己的 OPC UA 伺服器正在執行,或使用部署在 Azure 上的模擬的 PLC 伺服器,請據以新增您的端點 URL。 探索端點 URL 看起來像 opc.tcp://<FQDN>:50000/。 若要尋找 OPC PLC 伺服器的 FQDN,請在 Azure 入口網站中前往您的部署。 針對每部伺服器,將 FQDN 值複製並貼到您的端點 URL 中。

    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. 若要套用組態,請執行下列命令:

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

提示

在預設的 Azure IoT 操作部署中,OPC UA 探索處理常式已設定為探索模擬的 PLC 伺服器。 如果您想要探索連線到其他 OPC UA 伺服器的資產,可將其新增至組態檔。

驗證設定

若要確認資產探索容器已設定並執行:

  1. 使用下列命令檢查 Pod 記錄:

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

    來自 aio-opc-asset-discovery Pod 的記錄會在幾秒鐘後指出探索處理常式向 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 
    

    大約一分鐘之後,Akri 服務會根據設定發出第一個探索要求:

    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
    

    探索完成後,探索處理常式會將結果傳回 Akri 服務,以建立具有資產資訊和可觀察變數的 Akri 執行個體自訂資源。 探索處理常式會每隔 10 分鐘重複探索,以偵測伺服器上的任何變更。

  2. 若要檢視探索到的 Akri 執行個體,請執行下列命令:

    kubectl get akrii -n azure-iot-operations
    

    來自上一個命令的輸出看起來如下列範例所示。 您可能需要等候幾秒鐘的時間,才能建立 Akri 執行個體:

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

    OPC UA 的連接器主管會監看 opc-ua-asset 類型的新 Akri 執行個體自訂資源,並為其產生初始資產類型和資產自訂資源。 您可以新增擴充發佈等設定來取得更多資料點,或新增 OPC UA 連接器可檢視性設定,藉此修改資產自訂資源。

  3. 若要確認 Akri 執行個體已正確連線到 OPC UA 連接器,請執行下列命令。 將預留位置取代為上一個指令輸出中所包含的 Akri 執行個體名稱:

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

    命令輸出包含類似下列範例的區段。 程式碼片段會顯示 Akri 執行個體 brokerProperties 值,並確認 OPC UA 連接器已連線。

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