Akri 서비스 아키텍처
Important
Azure IoT 작업 미리 보기 - Azure Arc에서 지원되는 Azure IoT 작업은 현재 미리 보기로 제공됩니다. 프로덕션 환경에서는 이 미리 보기 소프트웨어를 사용하면 안 됩니다.
일반적으로 사용 가능한 릴리스를 사용할 수 있게 되면 새 Azure IoT Operations 설치를 배포해야 하며 미리 보기 설치를 업그레이드할 수 없습니다.
베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.
이 문서는 Akri 서비스의 아키텍처를 이해하는 데 도움이 됩니다. Akri 서비스의 핵심 구성 요소에 대해 알아본 후 이를 사용하여 디바이스와 자산을 검색하고 이를 Kubernetes 클러스터에 추가할 수 있습니다.
Akri 서비스는 오픈 소스 CNCF(Cloud Native Computing Foundation) 프로젝트인 Akri의 Microsoft 관리형 상용 버전입니다.
핵심 구성 요소
Akri 서비스는 다음 5가지 구성 요소로 구성됩니다.
- Akri 구성은 디바이스 이름을 지정하는 사용자 지정 리소스입니다. 이 구성은 Akri 서비스에 어떤 종류의 디바이스를 찾아야 하는지 알려줍니다.
- Akri 인스턴스는 디바이스의 가용성과 사용량을 추적하는 사용자 지정 리소스입니다. 각 Akri 인스턴스는 리프 디바이스를 나타냅니다.
- Akri 검색 처리기는 구성된 디바이스를 찾고 발견된 디바이스에 대해 에이전트에 알립니다.
- Akri 에이전트는 Akri 인스턴스 사용자 지정 리소스를 만듭니다.
- Akri 컨트롤러는 구성된 디바이스를 사용하는 데 도움이 됩니다. 컨트롤러는 각 Akri 인스턴스를 확인하고 리소스에 연결하고 사용하는 방법을 알고 있는 브로커 Pod를 배포합니다.
사용자 지정 리소스 정의
CRD(사용자 지정 리소스 정의)는 새 개체 형식을 정의할 수 있는 Kubernetes API 확장입니다. Akri 서비스 CRD에는 다음 두 가지가 있습니다.
- 구성
- 인스턴스
Akri 구성 CRD
구성 CRD는 Akri 서비스를 구성합니다. 발견할 리소스와 리소스를 발견하는 노드에 배포할 Pod를 설명하는 구성을 만듭니다. 자세한 내용은 Akri 구성 CRD를 참조하세요. CRD 스키마는 다음 설정을 포함하여 모든 구성에 있어야 하는 설정을 지정합니다.
- 리소스를 찾기 위한 검색 프로토콜입니다. 예를 들어 ONVIF 또는 udev입니다.
- 이 리소스에 대한 워크로드를 예약할 수 있는 최대 노드 수를 정의하는
spec.capacity
입니다. - 보고된 각 리소스에 대해 예약할 브로커 Pod를 정의하는
spec.brokerPodSpec
입니다. - 각 개별 리소스의 브로커 Pod 집합에 액세스할 수 있는 안정적인 단일 엔드포인트를 제공하는 서비스를 정의하는
spec.instanceServiceSpec
입니다. - 구성과 연결된 모든 리소스에 대한 모든 broker 집합에 액세스하기 위해 안정적인 단일 엔드포인트를 제공하는 서비스를 정의하는
spec.configurationServiceSpec
입니다.
Akri 인스턴스 CRD
각 Akri 인스턴스는 클러스터에 표시되는 개별 리소스를 나타냅니다. 예를 들어 클러스터에 5개의 IP 카메라가 표시되는 경우 5개의 인스턴스가 있습니다. 인스턴스 CRD를 사용하면 Akri 서비스 조정 및 리소스 공유가 가능합니다. 이러한 인스턴스는 내부 상태를 저장하며 사용자가 편집할 수 없습니다. 자세한 내용은 심층적인 리소스 공유를 참조하세요.
에이전트
Akri 에이전트는 검색된 리소스에 대해 Kubernetes 디바이스 플러그 인을 구현합니다. Akri 에이전트는 다음 작업을 수행합니다.
- 검색할 리소스를 결정하기 위해 구성 변경 내용을 감시합니다.
- 리소스 가용성을 모니터링하여 보급할 리소스를 결정합니다. 에지 환경에서는 리소스 가용성이 자주 변경됩니다.
- 리소스 상태 및 가용성에 대한 변경 내용을 Kubernetes에 알립니다.
인스턴스에 저장된 상태와 결합된 이러한 작업을 통해 여러 노드가 spec.capacity
설정에 정의된 제한을 준수하면서 리소스를 공유할 수 있습니다.
자세한 내용은 에이전트 심층 분석을 참조하세요.
검색 처리기
검색 처리기는 디바이스를 찾습니다. 디바이스의 예는 다음과 같습니다.
- 노드에 연결된 USB 센서.
- 노드에 포함된 GPU.
- 네트워크의 IP 카메라.
검색 처리기는 검색된 모든 디바이스를 에이전트에 보고합니다. OPC UA와 같은 네트워크 프로토콜이든 독점 프로토콜이든 디바이스 집합을 검색하기 위한 프로토콜 구현이 있는 경우가 많습니다. 검색 처리기는 discovery.proto
에 정의된 DiscoveryHandler
서비스를 구현합니다. discovery.proto
에 정의된 Registration
서비스를 호스트하는 에이전트에 등록하려면 검색 처리기가 필요합니다.
자세한 내용은 사용자 지정 검색 처리기를 참조하세요.
컨트롤러
Akri 컨트롤러의 목표는 다음과 같습니다.
- 리소스 가용성을 사용하도록 설정하는 Pod 및 서비스를 만들거나 삭제합니다.
- 인스턴스가 지정된 순간에 클러스터 상태에 맞춰지도록 합니다.
이러한 목표를 달성하기 위해 컨트롤러는 다음을 수행합니다.
- 어떤 Pod와 서비스가 있어야 하는지 결정하려면 인스턴스 변경 내용을 주의 깊게 살펴봅니다.
- 더 이상 존재하지 않는 인스턴스에 포함된 노드를 감시합니다.
이러한 작업을 통해 Akri 컨트롤러는 spec.capacity
설정에 정의된 제한을 준수하면서 프로토콜 브로커와 Kubernetes Service가 모든 노드에서 실행되고 원하는 리소스를 노출하는지 확인할 수 있습니다.
자세한 내용은 컨트롤러 심화 설명서를 참조하세요.