次の方法で共有


Akri サービスを使用して OPC UA データ ソースを検出する

重要

Azure Arc によって有効にされる Azure IoT Operations Preview は、 現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。

一般公開リリースが利用可能になった場合は、新しい Azure IoT Operations インストールをデプロイする必要があります。プレビュー インストールをアップグレードすることはできません。

ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

この記事では、OPC UA データ ソースを自動的に検出する方法について学習します。 Azure IoT Operations プレビューをデプロイしたら、エッジで OPC UA データ ソースを検出するように Akri サービスを構成します。 Akri サービスは、検出したデータ ソースを表す Kubernetes クラスターにカスタム リソースを作成します。 OPC UA データ ソースを検出する機能により、Operations Experience Web UI を使用して手動で構成する必要がなくなります。

重要

現時点では、Akri サービスで検出して作成する資産を管理するために、Azure Device Registry を使用することはできません。

Akri サービスを使用すると、OPC UA サーバーのアドレス空間で資産の検出と作成を行うことができます。 OPC UA 資産検出では、OPC UA デバイス統合 (DI) 仕様に準拠した資産用のカスタム リソース (CR) AssetTypeAsset が生成されます。

前提条件

  • Azure IoT Operations プレビューをインストールします。

  • 次のコマンドを実行して、Akri サービス ポッドが正しく構成されていることを確認します。

    kubectl get pods -n azure-iot-operations
    

    出力には、Akri エージェントと検出ポッドが実行されていることを示す行が含まれています。

    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 構成ファイルを作成します。

名前 Mandatory DataType 既定値 コメント
EndpointUrl true String null 資産検出に使用する OPC UA エンドポイント URL
AutoAcceptUntrustedCertificates true ¹ ブール型 false クライアントは信頼されていない証明書を自動的に受け入れる必要がありますか? 証明書は、抑制できないエラーがチェーン検証時に発生しなかった場合にのみ、信頼済みとして自動的に受け入れられます。 たとえば、チェーンが不完全な証明書は受け入れられません。
UseSecurity true ¹ Boolean true セキュリティで保護された接続をクライアントが使用する必要がありますか?
UserName false String null ユーザー認証用のユーザー名を入力します。 ²
Password false String null ユーザー認証用のパスワード。 ²

¹ 現在のバージョンの検出ハンドラーでは、UseSecurity=false のみがサポートされており、autoAcceptUntrustedCertificates=true が必須です。
² Akri サービスが Kubernetes シークレットを渡すことができるようになるまでの一時的な実装。

次の例に 1 つの OPC PLC サーバーの検出を示します。 複数の OPC PLC サーバーの資産パラメーターを追加できます。

  1. YAML 構成ファイルを作成するために、次の内容をコピーして新しいファイルに貼り付け、opcua-configuration.yaml として保存します。

    Azure IoT Operations クイック スタートでデプロイしたシミュレートされた PLC サーバーを使用している場合は、endpointUrl を変更する必要はありません。 独自の OPC UA サーバーを実行している場合、または Azure にデプロイされたシミュレートされた PLC サーバーを使用している場合は、適宜エンドポイント URL に追加します。 検出エンドポイント URL は opc.tcp://<FQDN>:50000/ のようになります。 OPC PLC サーバーの FQDN を見つけるには、Azure portal でデプロイに移動します。 各サーバーについて、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 Operations デプロイでは、OPC UA 検出ハンドラーは、シミュレートされた PLC サーバーを検出するように既に構成されています。 追加の OPC UA サーバーに接続されている資産を検出する場合は、それらを構成ファイルに追加できます。

構成を確認する

資産検出コンテナーが構成され、実行されていることを確認するには、次の操作を行います。

  1. 次のコマンドを使用して、ポッドのログを確認します。

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

    aio-opc-asset-discovery ポッドのログには、数秒後に、検出ハンドラーがそれ自体を 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 
    

    約 1 分後、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\"……