다음을 통해 공유


Akri 서비스를 사용하여 OPC UA 데이터 원본 검색

Important

Azure IoT 작업 미리 보기 - Azure Arc에서 지원되는 Azure IoT 작업은 현재 미리 보기로 제공됩니다. 프로덕션 환경에서는 이 미리 보기 소프트웨어를 사용하면 안 됩니다.

일반적으로 사용 가능한 릴리스를 사용할 수 있게 되면 새 Azure IoT Operations 설치를 배포해야 하며 미리 보기 설치를 업그레이드할 수 없습니다.

베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.

이 문서에서는 OPC UA 데이터 원본을 자동으로 검색하는 방법을 알아봅니다. Azure IoT 작업 미리 보기를 배포한 후 에지에서 OPC UA 데이터 원본을 검색하도록 Akri 서비스를 구성합니다. Akri 서비스는 검색된 데이터 원본을 나타내는 Kubernetes 클러스터에 사용자 지정 리소스를 만듭니다. OPC UA 데이터 원본을 검색하는 기능을 사용하면 작업 환경 웹 UI를 사용하여 수동으로 구성할 필요가 없습니다.

Important

현재는 Azure Device Registry를 사용하여 Akri 서비스가 검색하고 만드는 자산을 관리할 수 없습니다.

Akri 서비스를 사용하면 OPC UA 서버의 주소 공간에서 자산을 검색하고 만들 수 있습니다. OPC UA 자산 검색은 OPC UA DI(디바이스 통합) 사양 준수 자산에 대한 AssetTypeAsset 사용자 지정 리소스를 생성합니다.

필수 조건

  • Azure IoT 작업 미리 보기를 설치합니다.

  • 다음 명령을 실행하여 Akri 서비스가 올바르게 구성되었는지 확인합니다.

    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 기본값 Comment(설명)
EndpointUrl true 문자열 null 자산 검색에 사용할 OPC UA 엔드포인트 URL
AutoAcceptUntrustedCertificates true ¹ 부울 false 클라이언트에서 신뢰할 수 없는 인증서를 자동으로 수락해야 하나요? 체인 유효성 검사 중에 표시하지 않을 수 없는 오류가 발생하지 않은 경우에만 인증서를 신뢰할 수 있는 것으로 자동 수락할 수 있습니다. 예를 들어, 불완전한 체인이 있는 인증서는 수락되지 않습니다.
UseSecurity true ¹ 부울 true 클라이언트에서 보안 연결을 사용해야 하나요?
UserName false 문자열 null 사용자 인증을 위한 사용자 이름입니다. ²
Password false 문자열 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 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 작업 배포에서 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 
    

    약 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 U용 커넥터에 제대로 연결되었는지 확인하려면 다음 명령을 실행합니다. 자리 표시자를 이전 명령의 출력에 포함된 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\"……