다음을 통해 공유


Arc 지원 Kubernetes 클러스터에 Azure IoT 작업 배포

Azure Portal을 사용하여 Kubernetes 클러스터에 Azure IoT 작업을 배포하는 방법을 알아봅니다.

이 문서에서는 두 가지 개념인 Azure IoT Operations 배포 및 인스턴스에 대해 설명합니다.

  • Azure IoT 작업 배포에서는 Azure IoT 작업 시나리오를 지원하는 모든 구성 요소 및 리소스를 설명합니다. 이러한 구성 요소 및 리소스는 다음과 같습니다.

    • Azure IoT 작업 인스턴스
    • Arc 확장
    • 사용자 지정 위치
    • 자산 및 자산 엔드포인트와 같은 Azure IoT Operations 솔루션에서 구성할 수 있는 리소스입니다.
  • Azure IoT Operations 인스턴스는 MQTT Broker, 데이터 흐름 및 OPC UA용 커넥터와 같이 Azure IoT Operations란?정의된 서비스 제품군을 번들로 묶는 부모 리소스입니다.

Azure IoT Operations 배포에 대해 이야기할 때 배포를 구성하는 전체 구성 요소 집합을 의미합니다. 일단 배포가 있으면 인스턴스를 보고 관리하고 업데이트할수 있습니다.

필수 조건

클라우드 리소스:

  • Azure 구독

  • Azure 액세스 권한. 자세한 내용은 배포 세부 정보 > 필수 권한을 참조하세요.

개발 리소스:

  • 개발 컴퓨터에 설치된 Azure CLI입니다. 이 시나리오에는 Azure CLI 버전 2.64.0 이상이 필요합니다. az --version을 사용하여 버전을 확인하고 필요한 경우 az upgrade를 사용하여 업데이트합니다. 자세한 내용은 Azure CLI 설치 방법을 참조하세요.

  • Azure CLI용 Azure IoT 작업 확장입니다. 다음 명령을 사용하여 확장 프로그램을 추가하거나 최신 버전으로 업데이트합니다.

    az extension add --upgrade --name azure-iot-ops
    

클러스터 호스트:

배포

Azure Portal 배포 환경은 리소스 및 구성에 따라 배포 명령을 생성하는 도우미 도구입니다. 마지막 단계는 Azure CLI 명령을 실행하는 것이므로 이전 섹션에서 설명한 Azure CLI 필수 구성 요소가 여전히 필요합니다.

  1. Azure Portal에서 Azure IoT 작업을 검색하여 선택합니다.

  2. 만들기를 실행합니다.

  3. 기본 탭에서 다음 정보를 제공합니다.

    매개 변수
    구독 Arc 지원 클러스터가 포함된 구독을 선택합니다.
    리소스 그룹 Arc 지원 클러스터가 포함된 리소스 그룹을 선택합니다.
    클러스터 이름 Azure IoT 작업을 배포할 클러스터를 선택합니다.
    사용자 지정 위치 이름 선택 사항: 사용자 지정 위치의 기본 이름을 바꿉니다.

    포털에서 Azure IoT 작업을 배포하기 위한 첫 번째 탭을 보여 주는 스크린샷.

  4. 완료되면 다음: 구성을 선택합니다.

  5. 구성 탭에서 다음 정보를 제공합니다.

    매개 변수
    Azure IoT 작업 이름 선택 사항: Azure IoT 작업 인스턴스의 기본 이름을 바꿉니다.
    MQTT 브로커 구성 선택 사항: MQTT 브로커의 기본 설정을 편집합니다. Azure Portal에서는 카디널리티 및 메모리 프로필 설정을 구성할 수 있습니다. 디스크 지원 메시지 버퍼 및 고급 MQTT 클라이언트 옵션을 비롯한 다른 설정을 구성하려면 고급 MQTT broker 구성에 대한 Azure CLI 지원을 참조하세요.
    데이터 흐름 프로필 구성 선택 사항: 데이터 흐름에 대한 기본 설정을 편집합니다. 자세한 내용은 데이터 흐름 프로필 구성을 참조하세요.

    포털에서 Azure IoT 작업을 배포하기 위한 두 번째 탭을 보여 주는 스크린샷

  6. 다음: 종속성 관리를 선택합니다.

  7. 종속성 관리 탭에서 기존 스키마 레지스트리를 선택하거나 다음 단계를 사용하여 만듭니다.

    1. 새로 만들기를 선택합니다.

    2. 스키마 레지스트리 이름스키마 레지스트리 네임스페이스를 제공합니다.

    3. Azure Storage 컨테이너 선택을 선택합니다.

    4. 계층 구조 네임스페이스 사용 계정 목록에서 스토리지 계정을 선택하거나 만들기를 선택하여 계정을 만듭니다.

      스키마 레지스트리에는 계층 구조 네임스페이스와 공용 네트워크 액세스를 사용하도록 설정된 Azure Storage 계정이 필요합니다. 새 스토리지 계정을 만들 때 범용 v2 스토리지 계정 유형을 선택하고 계층 구조 네임스페이스를 사용으로 설정합니다.

    5. 스토리지 계정에서 컨테이너를 선택하거나 컨테이너를 선택하여 컨테이너를 만듭니다.

    6. 적용을 선택하여 스키마 레지스트리 구성을 확인합니다.

  8. 종속성 관리 탭에서 테스트 설정 또는 보안 설정 배포 옵션을 선택합니다. 어떤 것이 시나리오에 적합한지 잘 모르는 경우 배포 세부 정보 > 에서 기능 선택 지침을 검토하세요.

    선택한 항목에 따라 다음 단계를 수행합니다.

테스트 설정을 사용하여 배포

종속성 관리 탭에서 테스트 설정 옵션을 선택한 경우 다음 단계를 사용합니다.

  1. 다음: 자동화를 선택합니다.

  2. 한 번에 하나씩 터미널의 Automation 탭에서 각 Azure CLI 명령을 실행합니다.

    1. 이전에 이미 로그인한 경우에도 브라우저를 사용하여 대화형으로 Azure CLI에 로그인합니다. 대화형으로 로그인하지 않으면 리소스에 액세스하기 위해 디바이스를 관리해야 한다는 오류가 발생할 수 있습니다.

      az login
      
    2. 최신 Azure IoT Operations CLI 확장을 설치합니다.

      az upgrade
      az extension add --upgrade --name azure-iot-ops
      
    3. Azure IoT Operations 구성 요소에서 사용할 스키마 레지스트리를 만듭니다. 제공된 az iot ops 스키마 레지스트리 만들기 명령을 복사하고 실행합니다.

      기존 스키마 레지스트리를 사용하도록 선택한 경우 이 명령은 Automation 탭에 표시되지 않습니다.

    4. Azure IoT Operations 배포를 위해 클러스터를 준비합니다. 제공된 az iot ops init 명령을 복사하고 실행합니다.

      init 명령은 클러스터당 한 번만 실행하면 됩니다. Azure IoT Operations 버전 0.8.0이 이미 배포된 클러스터를 다시 사용하는 경우 이 단계를 건너뛸 수 있습니다.

      선택적 필수 조건을 따라 사용자 고유의 인증 기관 발급자를 설정한 경우 명령에 플래그를 --user-trust init 추가합니다.

      이 명령은 완료하는 데 몇 분 정도 걸릴 수 있습니다. 터미널에서 배포 진행률 표시의 진행률을 볼 수 있습니다.

    5. Azure IoT 작업을 배포합니다. 제공된 az iot ops create 명령을 복사하고 실행합니다.

      • 선택적 필수 구성 요소를 따라 클러스터를 관찰할 수 있도록 준비한 경우 명령에 다음 매개 변수를 create 추가합니다.

        매개 변수 설명
        --ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> otel-collector-values.yaml 파일에서 구성한 OTel(OpenTelemetry) 수집기 주소를 제공합니다.

        관찰성 구성에 사용되는 샘플 값은 fullnameOverride=aio-otel-collectorgrpc.endpoint=4317입니다.
        --ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> otel-collector-values.yaml 파일에서 구성한 check_interval 값을 제공합니다.

        관찰성 구성에 사용되는 샘플 값은 check_interval=60입니다.
      • 선택적 필수 조건을 따라 사용자 고유의 인증 기관 발급자를 설정한 경우 명령에 매개 변수를 create 추가 --trust-settings 합니다.

        --trust-settings configMapName=<CONFIGMAP_NAME> configMapKey=<CONFIGMAP_KEY_WITH_PUBLICKEY_VALUE> issuerKind=<CLUSTERISSUER_OR_ISSUER> issuerName=<ISSUER_NAME>
        

      이 명령은 완료하는 데 몇 분 정도 걸릴 수 있습니다. 터미널에서 배포 진행률 표시의 진행률을 볼 수 있습니다.

  3. 모든 Azure CLI 명령이 성공적으로 완료되면 Azure IoT 작업 설치 마법사를 닫을 수 있습니다.

명령이 create 성공적으로 완료되면 작동 중인 Azure IoT Operations 인스턴스가 클러스터에서 실행됩니다. 이 시점에서 인스턴스는 대부분의 테스트 및 평가 시나리오에 대해 구성됩니다.

나중에 프로덕션 시나리오에 맞게 인스턴스를 준비하려는 경우 기존 Azure IoT Operations 인스턴스에서 보안 설정 사용의 단계를 수행합니다.

보안 설정을 사용하여 배포

종속성 관리 탭에서 보안 설정 옵션을 선택한 경우 다음 단계를 사용합니다.

  1. 배포 옵션 섹션에서 다음 정보를 제공합니다.

    매개 변수
    구독 Azure Key Vault가 포함된 구독을 선택합니다.
    Azure Key Vault Azure Key Vault를 선택하거나 새로 만들기를 선택합니다.

    키 자격 증명 모음에 권한 모델로 Azure 역할 기반 액세스 제어 가 있는지 확인합니다. 이 설정을 확인하려면 선택한 자격 증명 모음 관리>설정>액세스 구성을 선택합니다.

    사용자 계정에 역할을 사용하여 비밀을 Key Vault Secrets Officer 관리할 수 있는 권한을 부여해야 합니다.
    비밀에 대한 사용자 할당 관리 ID ID를 선택하거나 새로 만들기를 선택합니다.
    AIO 구성 요소에 대한 사용자 할당 관리 ID ID를 선택하거나 새로 만들기를 선택합니다. 비밀에 대해 선택한 것과 동일한 관리 ID를 사용하지 마세요.

    포털에서 Azure IoT 작업을 배포하기 위한 세 번째 탭의 보안 설정 구성을 보여 주는 스크린샷

  2. 다음: 자동화를 선택합니다.

  3. 한 번에 하나씩 터미널의 Automation 탭에서 각 Azure CLI 명령을 실행합니다.

    1. 이전에 이미 로그인한 경우에도 브라우저를 사용하여 대화형으로 Azure CLI에 로그인합니다. 대화형으로 로그인하지 않을 경우 다음 단계로 계속 진행하여 Azure IoT 작업을 배포하면 디바이스가 리소스에 액세스하도록 관리되어야 한다는 오류가 발생할 수 있습니다.

      az login
      
    2. 최신 Azure IoT Operations CLI 확장을 설치합니다.

      az upgrade
      az extension add --upgrade --name azure-iot-ops
      
    3. Azure IoT Operations 구성 요소에서 사용할 스키마 레지스트리를 만듭니다. 제공된 az iot ops 스키마 레지스트리 만들기 명령을 복사하고 실행합니다.

      기존 스키마 레지스트리를 사용하도록 선택한 경우 이 명령은 Automation 탭에 표시되지 않습니다.

      참고 항목

      이 명령은 스토리지 계정에 대한 스키마 레지스트리 액세스 권한을 부여하는 역할을 할당하기 때문에 역할 할당 쓰기 권한이 있어야 합니다. 기본적으로 역할은 기본 제공 Storage Blob 데이터 기여자 역할이거나, 대신 할당할 수 있는 권한이 제한된 사용자 지정 역할을 만들 수 있습니다. 자세한 내용은 az iot ops 스키마 레지스트리 만들기를 참조 하세요.

    4. Azure IoT Operations 배포를 위해 클러스터를 준비합니다. 제공된 az iot ops init 명령을 복사하고 실행합니다.

      init 명령은 클러스터당 한 번만 실행하면 됩니다. Azure IoT Operations 버전 0.8.0이 이미 배포된 클러스터를 다시 사용하는 경우 이 단계를 건너뛸 수 있습니다.

      이 명령은 완료하는 데 몇 분 정도 걸릴 수 있습니다. 터미널에서 배포 진행률 표시의 진행률을 볼 수 있습니다.

    5. Azure IoT 작업을 배포합니다. 제공된 az iot ops create 명령을 복사하고 실행합니다.

      필요에 따라 클러스터를 관찰할 수 있도록 준비하려면 다음 선택적 매개 변수를 create 명령에 추가합니다.

      선택적 매개 변수 설명
      --ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> otel-collector-values.yaml 파일에서 구성한 OTel(OpenTelemetry) 수집기 주소를 제공합니다.

      관찰성 구성에 사용되는 샘플 값은 fullnameOverride=aio-otel-collectorgrpc.endpoint=4317입니다.
      --ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> otel-collector-values.yaml 파일에서 구성한 check_interval 값을 제공합니다.

      관찰성 구성에 사용되는 샘플 값은 check_interval=60입니다.

      이 명령은 완료하는 데 몇 분 정도 걸릴 수 있습니다. 터미널에서 배포 진행률 표시의 진행률을 볼 수 있습니다.

    6. 배포된 Azure IoT Operations 인스턴스에 대해 비밀 동기화를 사용하도록 설정합니다. 제공된 az iot ops secretsync enable 명령을 복사하고 실행합니다.

      이 명령은 다음을 수행합니다.

      • 사용자 할당 관리 ID를 사용하여 페더레이션 ID 자격 증명을 만듭니다.
      • Azure Key Vault에 액세스하기 위해 사용자가 할당한 관리 ID에 역할 할당을 추가합니다.
      • Azure IoT Operations 인스턴스와 연결된 최소 비밀 공급자 클래스를 추가합니다.
    7. 배포된 Azure IoT Operations 인스턴스에 사용자 할당 관리 ID를 할당합니다. 제공된 az iot ops identity assign 명령을 복사하고 실행합니다.

      이 명령은 표시된 연결된 클러스터의 OIDC 발급자 및 Azure IoT Operations 서비스 계정을 사용하여 페더레이션 ID 자격 증명을 만듭니다.

  4. 모든 Azure CLI 명령이 성공적으로 완료되면 Azure IoT 작업 설치 마법사를 닫을 수 있습니다.

명령이 create 성공적으로 완료되면 작동 중인 Azure IoT Operations 인스턴스가 클러스터에서 실행됩니다. 이 시점에서 인스턴스는 프로덕션 시나리오에 맞게 구성됩니다.

배포 확인

배포가 완료된 후 az iot ops check를 사용하여 상태, 구성 및 유용성에 대한 IoT 작업 서비스 배포를 평가할 수 있습니다. check 명령은 배포 및 구성에서 문제를 찾는 데 도움이 될 수 있습니다.

az iot ops check

check 명령은 데이터 흐름을 만들 때까지 정상이며 예상되는 누락된 데이터 흐름에 대한 경고를 표시합니다. 자세한 내용은 데이터 흐름을 사용하여 데이터 처리 및 라우팅을 참조 하세요.

자세한 보기에 대한 명령에 매개 변수를 추가하여 --detail-level 2 토픽 맵, QoS 및 메시지 경로의 check 구성을 확인할 수 있습니다.

다음 단계

구성 요소가 SQL 또는 패브릭과 같은 Azure 엔드포인트에 연결해야 하는 경우 Azure IoT Operations 배포에 대한 비밀을 관리하는 방법을 알아봅니다.