다음을 통해 공유


빠른 시작: K3s를 사용하여 GitHub Codespaces에서 Azure IoT 작업 미리 보기 실행

Important

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

일반적으로 릴리스되는 릴리스가 제공되면 새로운 Azure IoT 작업 설치를 배포해야 합니다. 미리 보기 설치는 업그레이드할 수 없습니다.

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

이 빠른 시작에서는 디바이스와 워크로드를 원격으로 관리할 수 있도록 Azure Arc 지원 Kubernetes 클러스터에 IoT 서비스 제품군을 배포합니다. Azure IoT 작업은 디지털 운영 서비스 제품군입니다. 이 빠른 시작에서는 Orchestrator를 사용하여 이러한 서비스를 Kubernetes 클러스터에 배포하는 방법을 안내합니다. 빠른 시작을 끝내면 다음 빠른 시작에서 사용할 샘플 데이터를 생성하는 클라우드에서 관리할 수 있는 클러스터가 제공됩니다.

이 엔드투엔드 시리즈의 나머지 빠른 시작은 샘플 자산, 데이터 처리 파이프라인 및 시각화를 정의하기 위해 빌드됩니다.

Azure Kubernetes Service Edge Essentials 또는 Ubuntu의 K3s와 같은 로컬 클러스터에 Azure IoT 작업을 배포하려면 배포 세부 정보를 참조하세요.

시작하기 전에

이 빠른 시작 시리즈는 Azure IoT 작업을 최대한 빨리 시작하여 엔드투엔드 시나리오를 평가할 수 있도록 돕기 위해 작성되었습니다. 진정한 개발 또는 프로덕션 환경에서 여러 팀이 함께 작업하는 경우 이러한 작업을 수행하고 일부 작업에는 상승된 권한이 필요할 수 있습니다.

최상의 새 사용자 환경을 위해 이러한 빠른 시작에서 리소스에 대한 소유자 권한이 있도록 Azure 체험 계정을 사용하는 것이 좋습니다. 또한 자체 컴퓨터에 새 도구를 설치하지 않고도 리소스 배포와 명령 실행을 빠르게 시작할 수 있는 가상 환경으로 GitHub Codespaces를 사용하는 단계도 제공합니다.

필수 조건

이 빠른 시작에서는 Azure IoT 작업 배포를 수신할 Kubernetes 클러스터를 만듭니다.

Azure IoT 작업이 이미 배포된 클러스터를 다시 사용하려면 계속하기 전에 리소스 정리의 단계를 참조하여 Azure IoT 작업을 제거합니다.

시작하기 전에 다음 필수 조건을 준비합니다.

  • Azure 구독 Azure 구독이 아직 없는 경우 시작하기 전에 무료 구독을 만듭니다.

  • GitHub 계정

  • 개발 컴퓨터에 Visual Studio Code를 설치했습니다. 자세한 내용은 Visual Studio Code 다운로드를 참조하세요.

  • 리소스 그룹 수준에서 Microsoft.Authorization/roleAssignments/쓰기 권한입니다.

어떤 문제를 해결할 수 있나요?

Azure IoT 작업은 Kubernetes 클러스터에서 실행되는 데이터 서비스 모음입니다. 이러한 클러스터는 클라우드에서 원격으로 관리하고, 클라우드 리소스 및 엔드포인트와 안전하게 통신할 수 있습니다. 이 빠른 시작에서는 다음 작업을 통해 이러한 문제를 해결합니다.

  1. Kubernetes 클러스터를 만들고 원격 관리를 위해 Azure Arc에 연결합니다.
  2. 스키마 레지스트리를 만듭니다.
  3. Azure IoT 작업을 클러스터에 배포합니다.

Kubernetes 클러스터를 Azure Arc에 연결

Azure IoT Operations는 Ubuntu 클러스터에서 AKS(Azure Kubernetes Service) Edge Essentials 및 K3s를 지원합니다. 그러나 속도와 편의를 위해 이 빠른 시작에서는 GitHub Codespaces를 사용하여 클러스터를 호스트합니다.

Codespace는 빠르게 설정하고 나중에 쉽게 분해할 수 있지만, 성능 평가 또는 크기 조정 테스트에는 적합하지 않습니다. GitHub Codespaces는 탐색 용도로만 사용해야 합니다. Windows 또는 Ubuntu의 클러스터에 Azure IoT 작업을 배포하는 방법을 알아보려면 Azure Arc 지원 Kubernetes 클러스터 준비를 참조하세요.

이 섹션에서는 새 클러스터를 만들고 Azure Arc에 연결합니다. 이전에 Azure IoT 작업을 배포한 클러스터를 다시 사용하려면 계속하기 전에 리소스 정리에 나오는 단계를 참조해 Azure IoT 작업을 제거해야 합니다.

GitHub Codespaces를 사용하여, 로컬 컴퓨터에 아무것도 설치하지 않고도 Kubernetes 클러스터에서 Azure IoT 작업을 사용해 보세요. Azure-Samples/explore-iot-operations 코드스페이스는 다음으로 미리 구성됩니다.

  • 경량 Kubernetes 클러스터를 위해 K3d에서 실행 중인 K3s
  • Azure CLI
  • Kubernetes 리소스 관리를 위한 Kubectl
  • Helmk9s 같은 다른 유용한 도구

codespace와 클러스터를 만들려면 다음 단계를 따릅니다.

  1. GitHub Codespace에서 코드스페이스를 만듭니다.

    explore-iot-operations 코드스페이스 만들기

  2. 코드 공간에 대해 다음 권장 비밀을 제공합니다.

    매개 변수
    SUBSCRIPTION_ID Azure 구독 ID.
    RESOURCE_GROUP 클러스터를 생성할 새 Azure 리소스 그룹의 이름입니다.
    위치 가까운 Azure 지역입니다. 현재 지원되는 지역 목록은 지원되는 지역을 참조하세요.

    이 단계에서 비밀로 제공하는 값은 이 코드 공간과 향후 코드 공간에서 사용할 수 있도록 GitHub 계정에 저장됩니다. 코드스페이스 터미널에서 환경 변수로 추가되며, 다음 섹션의 CLI 명령에서 이러한 환경 변수를 사용할 수 있습니다.

    또한 이 코드스페이스는 코드스페이스 이름으로 설정된 환경 변수를 만듭니다 CLUSTER_NAME .

  3. 새 codespace 만들기를 선택합니다.

  4. Codespace가 준비되면 왼쪽 위에 있는 메뉴 단추를 선택한 다음 VS Code 데스크톱에서 열기를 선택합니다.

    VS Code 데스크톱 열기

  5. 메시지가 표시되면 Visual Studio Code용 GitHub Codespaces 확장을 설치하고 GitHub에 로그인합니다.

  6. Visual Studio Code에서 보기>터미널을 차례로 선택합니다.

    이 터미널을 사용하여 클러스터를 관리하기 위한 모든 CLI 명령을 실행합니다.

클러스터를 Azure Arc에 연결하는 방법:

  1. codespace 터미널에서 Azure CLI에 로그인합니다.

    az login
    

    VS Code 데스크톱이 아닌 브라우저에서 GitHub codespace 환경을 사용하는 경우 az login을 실행하면 localhost 오류가 반환됩니다. 오류를 수정하려면 다음 중 하나를 수행합니다.

    • VS Code 데스크톱에서 코드스페이스를 연 다음 브라우저 터미널로 돌아가 az login을(를) 다시 실행합니다.
    • 또는 브라우저에서 localhost 오류가 발생하면 브라우저에서 URL을 복사하고 새 터미널 탭에서 curl "<URL>"을(를) 실행합니다. JSON 응답과 "Microsoft Azure에 로그인했습니다!"라는 메시지가 표시됩니다.
  2. 로그인한 후 Azure CLI는 모든 구독을 표시하고 별표 *가 있는 기본 구독을 나타냅니다. 기본 구독을 계속하려면 .를 선택합니다 Enter. 그렇지 않은 경우 사용하려는 Azure 구독 수를 입력합니다.

  3. 구독에 필요한 리소스 공급자를 등록합니다.

    참고 항목

    이 단계는 구독당 한 번만 실행하면 됩니다. 리소스 공급자를 등록하려면 구독 기여자 및 소유자 역할에 포함된 /register/action 작업을 수행할 수 있는 권한이 필요합니다. 자세한 내용은 Azure 리소스 공급자 및 형식을 참조하세요.

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperations"
    az provider register -n "Microsoft.DeviceRegistry"
    az provider register -n "Microsoft.SecretSyncController"
    
  4. az group create 명령을 사용하여 Azure 구독에 리소스 그룹을 만들어 모든 리소스를 저장합니다.

    az group create --location $LOCATION --resource-group $RESOURCE_GROUP
    
  5. az connectedk8s connect 명령을 사용하여 Kubernetes 클러스터를 Arc로 사용하도록 설정하고 Azure 리소스 그룹의 일부로 관리합니다.

    az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP
    

    $CLUSTER_NAME 값은 자동으로 codespace의 이름으로 설정됩니다. 다른 이름을 사용하려면 환경 변수를 바꿉니다.

  6. objectId 테넌트에서 Azure Arc 서비스에서 사용하는 Microsoft Entra ID 애플리케이션을 가져와서 환경 변수로 저장합니다. GUID 값을 변경하지 않고 기록된 대로 정확하게 다음 명령을 실행합니다.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    
  7. az connectedk8s enable-features 명령을 사용하여 클러스터에서 사용자 지정 위치 지원을 사용하도록 설정합니다. 이 명령은 Azure Arc 서비스에서 사용하는 Microsoft Entra ID 애플리케이션의 objectId를 사용합니다.

    az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    

스토리지 계정 및 스키마 레지스트리 만들기

Azure IoT Operations에는 클러스터에 스키마 레지스트리가 필요합니다. 스키마 레지스트리에는 클라우드와 에지 간에 스키마 정보를 동기화할 수 있도록 Azure Storage 계정이 필요합니다.

이 섹션에서 스키마 레지스트리를 만드는 명령에는 리소스 그룹 수준에서 Microsoft.Authorization/roleAssignments/write 권한이 필요합니다.

Codespaces 터미널에서 다음 CLI 명령을 실행합니다.

  1. 이 섹션에서 만드는 리소스에 대한 환경 변수를 설정합니다.

    자리 표시자
    <STORAGE_ACCOUNT_NAME> 스토리지 계정의 이름입니다. 스토리지 계정 이름은 길이가 3자에서 24자 사이여야 하며 숫자와 소문자만 포함해야 합니다.
    <SCHEMA_REGISTRY_NAME> 스키마 레지스트리의 이름입니다.
    <SCHEMA_REGISTRY_NAMESPACE> 스키마 레지스트리 네임스페이스의 이름입니다. 네임스페이스는 테넌트 내에서 스키마 레지스트리를 고유하게 식별합니다.
    export STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME>
    export SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME>
    export SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
    
  2. 계층 구조 네임스페이스를 사용하도록 설정된 스토리지 계정을 만듭니다.

    az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
    
  3. 스토리지 계정에 연결하는 스키마 레지스트리를 만듭니다. 또한 이 명령은 아직 없는 경우 스토리지 계정에 스키마라는 Blob 컨테이너를 만듭니다.

    az iot ops schema registry create --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP --registry-namespace $SCHEMA_REGISTRY_NAMESPACE --sa-resource-id $(az storage account show --name $STORAGE_ACCOUNT -o tsv --query id)
    

Azure IoT 작업 미리 보기 배포

이 섹션에서는 Azure IoT Operations 구성 요소에 대한 종속성을 사용하여 클러스터를 구성한 다음, Azure IoT Operations를 배포합니다.

Codespaces 터미널에서 다음 CLI 명령을 실행합니다.

  1. Azure IoT Operations에 대한 클러스터를 초기화합니다.

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

    az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
    

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

  2. Azure IoT 작업을 배포합니다. 이 명령을 완료하는 데 몇 분 정도 걸립니다.

    az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance  --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id) --broker-frontend-replicas 1 --broker-frontend-workers 1  --broker-backend-part 1  --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low
    

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

    리소스에 액세스하려면 디바이스를 관리해야 함 오류가 발생하면 az login을(를) 다시 실행하고 브라우저를 사용하여 대화형으로 로그인해야 합니다.

클러스터에서 리소스 보기

배포가 진행 중인 동안 CLI 진행률 인터페이스는 현재 배포 단계를 보여줍니다. 배포가 완료되면 kubectl 명령을 사용하여 클러스터의 변경 내용을 관찰하거나 클러스터가 Arc 사용이므로 Azure Portal을 사용할 수 있습니다.

클러스터에서 Pod를 보려면 다음 명령을 실행합니다.

kubectl get pods -n azure-iot-operations

Azure Portal에서 리소스를 보려면 다음 단계를 사용합니다.

  1. Azure Portal에서 Azure IoT 작업 인스턴스가 포함된 리소스 그룹으로 이동하거나 Azure IoT 작업을 검색하여 선택합니다.

  2. Azure IoT 작업 인스턴스의 이름을 선택합니다.

  3. 인스턴스개요 페이지에서 Arc 확장 탭에는 클러스터에 배포된 리소스가 표시됩니다.

    Arc 지원 클러스터의 Azure IoT 작업 인스턴스를 보여 주는 스크린샷.

문제를 어떻게 해결했나요?

이 빠른 시작에서는 Azure IoT 작업 구성 요소와 안전하게 통신할 수 있도록 Arc 지원 Kubernetes 클러스터를 구성했습니다. 그런 다음 이러한 구성 요소를 클러스터에 배포했습니다. 이 테스트 시나리오에서는 컴퓨터에서 로컬로 실행 중일 단일 Kubernetes 클러스터가 있습니다. 그러나 프로덕션 시나리오에서는 동일한 단계를 사용하여, 여러 사이트에서 많은 클러스터에 워크로드를 배포할 수 있습니다.

리소스 정리

다음 빠른 시작을 진행하는 경우에는 모든 리소스를 유지해야 합니다.

Azure IoT Operations 배포를 제거하지만 클러스터를 유지하려면 az iot ops delete 명령을 사용합니다.

az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP

이 빠른 시작을 위해 만든 모든 리소스를 삭제하려면 Azure IoT 작업을 배포한 Kubernetes 클러스터를 삭제한 다음 클러스터가 포함된 Azure 리소스 그룹을 제거합니다.

이러한 빠른 시작에서 Codespaces를 사용한 경우 GitHub에서 Codespace를 삭제합니다.

다음 단계