이 빠른 시작에서는 디바이스 및 워크로드를 원격으로 관리할 수 있도록 Azure Arc 사용 가능한 Kubernetes 클러스터에 Azure IoT 작업 배포합니다. 빠른 시작을 마치면 클라우드에서 관리할 수 있는 클러스터가 생성됩니다. 이 엔드투엔드 시리즈의 나머지 빠른 시작은 이 빠른 시작을 기반으로 샘플 자산, 데이터 처리 파이프라인 및 시각화를 정의합니다.
시작하기 전에
이 퀵스타트 가이드는 Azure IoT 작업을 가능한 한 빨리 시작하여 엔드투엔드 시나리오를 평가하는 데 도움을 주기 위해 마련되었습니다. 실제 개발 또는 프로덕션 환경에서는 여러 팀이 협력하여 이러한 작업을 수행하며, 일부 작업에는 관리자 권한의 권한이 필요할 수 있습니다.
최상의 새 사용자 환경을 위해 이러한 빠른 시작에서 리소스에 대한 소유자 권한이 있도록 Azure 체험 계정 사용하는 것이 좋습니다.
이 빠른 시작에서는 GitHub Codespaces를 가상 환경으로 사용하여 사용자 고유의 컴퓨터에 새 도구를 설치하지 않고 시나리오를 테스트할 수 있습니다. 그러나 Ubuntu 또는 AKS(Azure Kubernetes Service) 로컬 클러스터에 Azure IoT 작업 배포하려는 경우 Azure Arc 사용 가능한 Kubernetes 클러스터 준비 참조하세요.
중요합니다
코드스페이스는 빠르게 설정하고 나중에 분해하기 쉽지만 프로덕션, 성능 평가 또는 크기 조정 테스트에는 적합하지 않습니다. 탐색에만 GitHub Codespace를 사용합니다.
Codespaces 환경은 빠른 시작 단계를 완료하기에 충분하지만 보안 설정과 같은 고급 구성은 지원하지 않습니다. GitHub에서 보안 설정이 포함된 프로덕션 준비 배포를 위한 이러한 스크립트를 참조하세요.
필수 구성 요소
시작하기 전에 다음 필수 조건을 준비합니다.
GitHub 계정입니다.
Visual Studio Code 개발 머신에 설치되어 있습니다. 자세한 내용은 Visual Studio Code 다운로드를 참조하세요.
리소스 그룹 수준에서 Microsoft.Authorization/roleAssignments/write 권한.
어떤 문제를 해결할 수 있나요?
Azure IoT 작업 Kubernetes 클러스터에서 실행되는 데이터 서비스 모음입니다. 이러한 클러스터는 클라우드에서 원격으로 관리하고, 클라우드 리소스 및 엔드포인트와 안전하게 통신할 수 있습니다. 이 빠른 시작에서는 다음 작업을 통해 이러한 문제를 해결합니다.
- GitHub Codespaces에서 Kubernetes 클러스터를 만듭니다.
- 원격 관리를 위해 클러스터를 Azure Arc 연결합니다.
- 스키마 레지스트리를 만듭니다.
- 클러스터에 Azure IoT 작업 배포합니다.
클러스터 만들기
이 섹션에서는 새로운 클러스터를 만듭니다. 이전에 Azure IoT 작업을 배포한 클러스터를 다시 사용하려면, 계속하기 전에 Azure IoT 작업을 제거하기 위한 리소스 정리 단계를 참조하세요.
Azure-Samples/explore-iot-operations 코드스페이스는 다음으로 미리 구성됩니다.
- 경량 Kubernetes 클러스터를 위해 K3d에서 실행 중인 K3s
- Azure CLI
- Kubernetes 리소스 관리를 위한 Kubectl
- Helm 및 k9s와 같은 기타 유용한 도구
codespace와 클러스터를 만들려면 다음 단계를 따릅니다.
GitHub Codespaces에서 코드스페이스를 만듭니다.
코드 공간에 대해 다음 권장 비밀을 제공합니다.
매개 변수 값 구독 ID Azure 구독 ID입니다. 리소스 그룹 클러스터를 만들 새 Azure 리소스 그룹의 이름입니다. LOCATION 당신에게 가까운 Azure 지역입니다. 현재 지원되는 지역 목록은 지원되는 지역을 참조하세요. 팁
이 단계에서 비밀로 제공하는 값은 이 코드스페이스와 향후 Codespace에서 사용할 GitHub 계정에 저장됩니다. 이러한 환경 변수는 codespace 터미널에 환경 변수로 추가되며, 다음 섹션의 CLI 명령에서 해당 환경 변수를 사용할 수 있습니다.
또한 이 codespace는 codespace 이름으로 설정되는
CLUSTER_NAME환경 변수를 만듭니다.새 codespace 만들기를 선택합니다.
codespace가 준비되면 왼쪽 위에 있는 메뉴 단추를 선택한 다음 VS Code 데스크톱에서 열기를 선택합니다.
메시지가 표시되면 Visual Studio Code 대한 GitHub Codespaces 확장을 설치하고 GitHub 로그인합니다.
Visual Studio Code에서 View>Terminal을 선택하십시오.
이 터미널을 사용하면 클러스터를 관리하기 위한 모든 CLI 명령을 실행할 수 있습니다.
Azure Arc에 클러스터 연결하기
클러스터를 Azure Arc 연결하려면 다음을 수행합니다.
코드스페이스 터미널에서 Azure CLI에 로그인하세요.
az login팁
VS Code 데스크톱이 아닌 브라우저에서 GitHub 코드스페이스 환경을 사용하는 경우
az login실행하면 localhost 오류가 반환됩니다. 오류를 수정하려면 다음 중 하나를 수행합니다.- VS Code 데스크톱에서 코드스페이스를 연 다음 브라우저 터미널로 돌아가
az login을 다시 실행합니다. - 또는 브라우저에서 localhost 오류가 발생한 후 브라우저에서 URL을 복사하고 새 터미널 탭에서
curl "<URL>"실행합니다. "Microsoft Azure 로그인했습니다!"라는 메시지와 함께 JSON 응답이 표시됩니다.
- VS Code 데스크톱에서 코드스페이스를 연 다음 브라우저 터미널로 돌아가
로그인한 후 Azure CLI 모든 구독을 표시하고 별표
*기본 구독을 나타냅니다. 기본 구독을 계속하려면Enter를 선택합니다. 그렇지 않은 경우 사용하려는 Azure 구독 수를 입력합니다.필요한 리소스 공급자를 구독에 등록합니다.
팁
이 단계는 구독당 한 번만 실행하면 됩니다. 리소스 공급자를 등록하려면 구독 기여자 및 소유자 역할에 포함된
/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"az group create 명령을 사용하여 Azure 구독에 리소스 그룹을 만들어 모든 리소스를 저장합니다.
az group create --location $LOCATION --resource-group $RESOURCE_GROUPaz connectedk8s connect 명령을 사용하여 Kubernetes 클러스터를 Arc로 사용하도록 설정하고 Azure 리소스 그룹의 일부로 관리합니다.
az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP팁
$CLUSTER_NAME값은 자동으로 codespace의 이름으로 설정됩니다. 다른 이름을 사용하려면 환경 변수를 바꿉니다.Azure Arc 서비스가 테넌트에서 사용하는 Microsoft Entra ID 애플리케이션의
objectId가져와서 환경 변수로 저장합니다. GUID 값을 변경하지 않고 다음 명령을 정확히 작성된 대로 실행합니다.export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)az connectedk8s enable-features 명령을 사용하여 클러스터에서 사용자 지정 위치 지원을 사용하도록 설정합니다. 이 명령은 Azure Arc 서비스에서 사용하는 Microsoft Entra ID 애플리케이션의
objectId사용합니다. Kubernetes 클러스터를 배포한 컴퓨터에서 이 명령을 실행합니다.az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
최신 버전의 설치 az iot ops
이 빠른 시작에서는 최신 버전의 Azure IoT 작업 사용합니다. 최신 버전을 설치하려면 최신 버전의 Azure IoT 작업 CLI 확장이 필요합니다.
az extension add --upgrade --name azure-iot-ops
스토리지 계정 및 스키마 레지스트리 만들기
스키마 레지스트리는 클라우드와 에지 모두에 메시지 정의를 저장하는 동기화된 리포지토리입니다. Azure IoT 작업 클러스터에 스키마 레지스트리가 필요합니다. 스키마 레지스트리에는 클라우드에 저장된 스키마 정보에 대한 Azure 스토리지 계정이 필요합니다.
이 섹션에서 스키마 레지스트리를 생성하는 명령어는 리소스 그룹 수준에서 Microsoft.Authorization/roleAssignments/write 권한이 필요합니다. 이 권한은 스키마 레지스트리에 기여자 역할을 부여하여 스토리지 계정에 쓸 수 있도록 하는 데 사용됩니다.
Codespaces 터미널에서 다음 CLI 명령을 실행합니다.
이 섹션에서 만드는 리소스에 대한 환경 변수를 설정합니다.
자리 표시자 값 <스토리지_계정_이름 (STORAGE_ACCOUNT_NAME)> 스토리지 계정의 이름. 스토리지 계정 이름은 3~24자 길이여야 하며 숫자와 소문자만 포함할 수 있습니다. <스키마_레지스트리_이름> 스키마 레지스트리의 이름. 스키마 레지스트리 이름에는 숫자, 소문자, 하이픈만 포함될 수 있습니다. <SCHEMA_REGISTRY_NAMESPACE> 스키마 레지스트리 네임스페이스의 이름. 네임스페이스는 테넌트 내의 스키마 레지스트리를 고유하게 식별합니다. 스키마 레지스트리 네임스페이스 이름에는 숫자, 소문자, 하이픈만 포함될 수 있습니다. STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME> SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME> SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>계층 구조 네임스페이스가 사용하도록 설정된 스토리지 계정을 만듭니다.
az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace스토리지 계정에 연결되는 스키마 레지스트리를 만듭니다. 이 명령은 또한 스토리지 계정에 schemas라는 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 Device Registry 네임스페이스 만들기
Azure IoT 작업 및 Azure 디바이스 레지스트리는 namespaces를 사용하여 자산과 디바이스를 구성합니다. 각 Azure IoT 작업 인스턴스는 자산 및 디바이스에 단일 네임스페이스를 사용합니다.
다음 CLI 명령을 실행하여 Azure Device Registry 네임스페이스를 만듭니다.
az iot ops ns create -n myqsnamespace -g $RESOURCE_GROUP
Azure IoT 작업 배포
이 섹션에서는 Azure IoT 작업 구성 요소에 대한 종속성을 사용하여 클러스터를 구성한 다음, Azure IoT 작업 배포합니다.
Codespaces 터미널에서 다음 CLI 명령을 실행합니다.
Azure IoT 작업 위해 클러스터를 초기화합니다.
팁
init명령은 클러스터당 한 번만 실행하면 됩니다. 이미 최신 Azure IoT 작업 버전이 배포된 클러스터를 다시 사용하는 경우 이 단계를 건너뛸 수 있습니다.az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP이 명령을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 터미널의 배포 진행률 표시를 통해 진행률을 볼 수 있습니다.
Azure IoT 작업 배포합니다. 이 명령에는 다음 빠른 시작에서 사용하는 OPC UA용 선택적 커넥터가 포함됩니다.
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) --ns-resource-id $(az iot ops ns show --name myqsnamespace --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 --feature opcua.mode=Stable이 명령을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 터미널의 배포 진행률 표시를 통해 진행률을 볼 수 있습니다.
리소스에 액세스하려면 디바이스를 관리해야 함 오류가 발생하면
az login을 다시 실행하고 브라우저를 사용하여 대화형으로 로그인해야 합니다.
클러스터의 리소스 보기
배포가 완료되면 kubectl 명령을 사용하여 클러스터의 변경 내용을 관찰하거나 클러스터가 Arc 사용이므로 Azure 포털을 사용할 수 있습니다.
클러스터에서 Pod를 보려면 다음 명령을 실행합니다.
kubectl get pods -n azure-iot-operations
Azure 포털에서 리소스를 보려면 다음 단계를 사용합니다.
Azure 포털 Azure IoT 작업 인스턴스가 포함된 리소스 그룹으로 이동하거나 Azure IoT 작업 검색하여 선택합니다.
Azure IoT 작업 인스턴스의 이름을 선택합니다.
인스턴스의 개요 페이지에서 리소스 요약 탭을 선택하여 클러스터에 배포된 리소스의 프로비전 상태를 확인합니다.
문제를 어떻게 해결했나요?
이 빠른 시작에서는 Azure IoT 작업 구성 요소와 안전하게 통신할 수 있도록 Arc 지원 Kubernetes 클러스터를 구성했습니다. 그런 다음 이러한 구성 요소를 클러스터에 배포했습니다. 이 테스트 시나리오에서는 Codespaces에서 실행되는 단일 Kubernetes 클러스터가 있습니다. 그러나 프로덕션 시나리오에서는 동일한 단계를 사용하여, 여러 사이트에서 많은 클러스터에 워크로드를 배포할 수 있습니다.
리소스 정리
다음 빠른 시작을 진행하는 경우에는 모든 리소스를 유지해야 합니다.
Azure IoT 작업 배포를 제거하지만 클러스터를 유지하려면 az iot ops delete 명령을 사용합니다.
az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
이 빠른 시작을 위해 만든 모든 리소스를 삭제하려면 Azure IoT 작업 배포한 Kubernetes 클러스터를 삭제한 다음 클러스터가 포함된 Azure 리소스 그룹을 제거합니다.
이러한 빠른 시작에 Codespaces를 사용한 경우 GitHub Codespace를 삭제합니다.