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) AssetType
と Asset
が生成されます。
前提条件
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 サーバーの資産パラメーターを追加できます。
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
構成を適用するには、次のコマンドを実行します。
kubectl apply -f opcua-configuration.yaml -n azure-iot-operations
ヒント
既定の Azure IoT Operations デプロイでは、OPC UA 検出ハンドラーは、シミュレートされた PLC サーバーを検出するように既に構成されています。 追加の OPC UA サーバーに接続されている資産を検出する場合は、それらを構成ファイルに追加できます。
構成を確認する
資産検出コンテナーが構成され、実行されていることを確認するには、次の操作を行います。
次のコマンドを使用して、ポッドのログを確認します。
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 分ごとに繰り返され、サーバー上の変更が検出されます。
検出された 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 用コネクタの監視設定に対応した発行の拡張などの設定を追加することで、資産のカスタム リソースを変更できます。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\"……