:
IoT Edge 1.5에 적용
중요합니다
IoT Edge 1.5 LTS는 지원되는 릴리스입니다. IoT Edge 1.4 LTS는 2024년 11월 12일에 수명이 종료되었습니다. 이전 릴리스를 사용하는 경우
이 문서에서는 IoT Edge 설치를 포함하는 Linux IoT Edge 디바이스를 등록하고 프로비전하기 위한 엔드투엔드 지침을 제공합니다.
IoT Hub에 연결하는 각 디바이스에는 클라우드-디바이스 또는 디바이스-클라우드 통신을 추적하는 디바이스 ID가 있습니다. 다음을 포함하는 연결 정보를 사용하여 디바이스를 구성합니다.
- IoT 허브 호스트 이름
- 디바이스 ID
- IoT Hub 연결하는 인증 세부 정보
이 문서의 단계는 단일 디바이스를 IoT 허브에 연결하는 수동 프로비저닝이라는 프로세스를 안내합니다. 수동 프로비저닝의 경우 IoT Edge 디바이스를 인증하는 두 가지 옵션이 있습니다.
대칭 키: IoT Hub 새 디바이스 ID를 만들 때 서비스에서 두 개의 키를 만듭니다. 디바이스에 키 중 하나를 배치하면 인증 시 IoT Hub 키를 제공합니다.
이 인증 방법은 시작하는 속도가 빠르지만 안전하지는 않습니다.
X.509 자체 서명: 두 개의 x.509 ID 인증서를 만들어 디바이스에 저장합니다. IoT Hub 새 디바이스 ID를 만들 때 두 인증서의 지문을 제공합니다. 디바이스가 IoT Hub 인증하면 하나의 인증서가 표시되고 IoT Hub 인증서가 지문과 일치하는지 확인합니다.
이 인증 방식은 더 안전하며 프로덕션 시나리오에 권장됩니다.
이 문서에서는 대칭 키를 인증 방법으로 사용하는 방법을 설명합니다. X.509 인증서를 사용하려면 X.509 인증서 사용하여 Linux에서 IoT Edge 디바이스 만들기 및 프로비저닝을 참조하세요.
참고 사항
설정할 디바이스가 많고 각 디바이스를 수동으로 프로비전하지 않으려는 경우 다음 문서 중 하나를 사용하여 IoT Hub 디바이스 프로비저닝 서비스에서 IoT Edge 작동하는 방법을 알아봅니다.
필수 조건
이 문서에서는 IoT Edge 디바이스를 등록하고 디바이스에 IoT Edge(IoT Edge 런타임이라고도 함)를 설치하는 방법을 보여 줍니다. Azure CLI 같은 원하는 디바이스 관리 도구가 있는지 확인하고 디바이스를 등록하고 설치하기 전에 디바이스 요구 사항을 검토합니다.
디바이스 관리 도구
Azure 포털, Visual Studio Code 또는 Azure CLI 사용하여 디바이스를 등록할 수 있습니다. 각 유틸리티에는 고유한 필수 구성 요소가 있거나 설치해야 할 수 있습니다.
Azure 구독의 무료 또는 표준 IoT Hub.
디바이스 요구 사항
x64, ARM32 또는 ARM64 Linux 디바이스.
Microsoft는 다양한 운영 체제에 대한 설치 패키지를 게시합니다.
현재 프로덕션 시나리오에서 지원되는 운영 체제에 대한 최신 정보는 Azure IoT Edge 지원되는 플랫폼 참조하세요.
Visual Studio Code 확장
Visual Studio Code 사용하는 경우 유용한 Azure IoT 확장을 사용하면 디바이스 만들기 및 관리 프로세스가 더 쉬워질 수 있습니다.
Azure IoT Edge 및 Azure IoT Hub 확장을 모두 설치합니다.
- Azure IoT Edge. Azure IoT Edge 도구 확장 기능은 Visual Studio Code에서 유지 관리 모드에 있습니다.
- Azure IoT Hub
디바이스 등록
Azure 포털, Visual Studio Code 또는 Azure CLI 사용하여 기본 설정에 따라 디바이스를 등록할 수 있습니다.
Azure Portal의 IoT Hub에서 에지 사용하도록 설정되지 않은 IoT 디바이스와는 별도로 IoT Edge 디바이스를 만들고 관리합니다.
Azure 포털 로그인하고 IoT Hub로 이동합니다.
왼쪽 창의 메뉴에서 디바이스 를 선택한 다음 디바이스 추가를 선택합니다.
디바이스 만들기에서 다음 정보를 제공합니다.
- 설명이 포함된 디바이스 ID(예:
my-edge-device-1모두 소문자)를 만듭니다. 나중에 사용할 때 이 디바이스 ID를 복사합니다. - IoT Edge 디바이스 확인란을 선택합니다.
- 인증 유형으로 대칭 키를 선택합니다.
- 기본 설정을 사용하여 새 디바이스를 허브에 연결하는 인증 키를 자동으로 생성합니다.
- 설명이 포함된 디바이스 ID(예:
저장을 선택합니다.
IoT 허브에 새 디바이스가 표시되어야 합니다.
이제 디바이스가 IoT Hub 등록되었으므로 다음 단계에서 IoT Edge 런타임 설치 및 프로비저닝을 완료하는 데 사용되는 프로비저닝 정보를 검색할 수 있습니다.
등록된 디바이스 보기 및 프로비전 정보 검색
대칭 키 인증을 사용하는 디바이스는 IoT Edge 런타임의 설치 및 프로비전을 완료하려면 연결 문자열이 필요합니다. IoT Edge 디바이스를 생성할 때 연결 문자열이 생성됩니다. Visual Studio Code 및 Azure CLI 경우 JSON 출력에 connection string 나타납니다. Azure 포털을 사용하여 디바이스를 만드는 경우 디바이스 자체에서 connection string 찾을 수 있습니다. IoT Hub에서 디바이스를 선택하면 디바이스 페이지에 Primary connection string로 나열됩니다.
IoT Hub에 연결되는 에지 지원 디바이스는 IoT Hub의 디바이스 페이지에 나열됩니다. 디바이스가 여러 개 있는 경우 Iot Edge 디바이스 유형을 선택하여 목록을 필터링한 다음 적용을 선택할 수 있습니다.
디바이스를 설정할 준비가 되면 물리적 디바이스를 IoT Hub의 ID와 연결하는 데 필요한 연결 문자열이 필요합니다. 대칭 키를 사용하여 인증하는 디바이스에는 포털에 복사할 수 있는 연결 문자열이 있습니다. 포털에서 connection string 찾으려면 다음 단계를 수행합니다.
- Devices 페이지에서 목록에서 IoT Edge 디바이스 ID를 선택합니다.
- 기본 연결 문자열 또는 보조 연결 문자열 중 하나의 값을 복사합니다. 어느 키든 작동합니다.
IoT Edge 설치하기
이 섹션에서는 IoT Edge 위해 Linux 가상 머신 또는 물리적 디바이스를 준비합니다. 그런 다음 IoT Edge 설치합니다.
다음 명령을 실행하여 패키지 리포지토리를 추가한 다음, 신뢰할 수 있는 키 목록에 Microsoft 패키지 서명 키를 추가합니다.
중요합니다
2022년 6월 30일, Raspberry Pi OS Stretch는 계층 1 OS 지원 목록에서 사용 중지되었습니다. 잠재적인 보안 취약성을 방지하려면 호스트 OS를 Bullseye로 업데이트합니다.
tier 2 지원 플랫폼 운영 체제 설치 패키지는 Azure IoT Edge 릴리스 사용할 수 있습니다. 오프라인 또는 특정 버전 설치의 설치 단계를 참조하세요(선택 사항).
몇 가지 명령을 사용하여 IoT Edge 설치할 수 있습니다. 터미널을 열고 다음 명령을 실행합니다.
24.04:
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb22.04:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
운영 체제 버전에 대한 자세한 내용은 Azure IoT Edge 지원되는 플랫폼 참조하세요.
참고 사항
Azure IoT Edge 소프트웨어 패키지에는 각 패키지에 있는 사용 조건(usr/share/doc/{package-name} 또는 LICENSE 디렉터리)이 적용됩니다. 패키지를 사용하기 전에 사용 조건을 읽습니다. 패키지를 설치하고 사용하면 이러한 사용 조건에 동의하는 것입니다. 사용 조건에 동의하지 않으면 해당 패키지를 사용하지 마세요.
컨테이너 엔진 설치
Azure IoT Edge OCI 호환되는 컨테이너 런타임을 사용합니다. 프로덕션 시나리오의 경우 Moby 엔진을 사용합니다. Moby 엔진은 IoT Edge 공식적으로 지원되는 컨테이너 엔진입니다. Docker CE 및 Docker EE 컨테이너 이미지는 Moby 런타임에서 작동합니다. Ubuntu Core 스냅을 사용하는 경우, Canonical에서 Docker 스냅을 관리하며 프로덕션 시나리오에 대해 지원합니다.
Moby 엔진을 설치합니다.
sudo apt-get update; \
sudo apt-get install moby-engine
기본적으로 컨테이너 엔진은 컨테이너 로그 크기 제한을 설정하지 않습니다. 시간이 지남에 따라 이 상황으로 인해 디바이스가 로그로 채워지고 디스크 공간이 부족해질 수 있습니다. 그러나 선택 사항이지만 로컬로 표시되도록 로그를 구성할 수 있습니다. 로깅 구성에 대한 자세한 내용은 프로덕션에 IoT Edge 솔루션을 배포하기 위한 준비 참조하세요.
다음 단계에서는 로깅 메커니즘으로 로깅 드라이버를 사용하도록 컨테이너를local 구성하는 방법을 보여 줍니다.
기존 Docker 디먼의 구성 파일을 만들거나 편집합니다.
sudo nano /etc/docker/daemon.json예제와 같이 기본 로깅 드라이버를
local로깅 드라이버로 설정합니다.{ "log-driver": "local" }변경 내용을 적용하려면 컨테이너 엔진을 다시 시작합니다.
sudo systemctl restart docker
IoT Edge 런타임 설치
IoT Edge 서비스는 IoT Edge 디바이스에서 보안 표준을 제공하고 유지 관리합니다. 서비스는 부팅할 때마다 시작되고 나머지 IoT Edge 런타임을 시작하여 디바이스를 부트스트랩합니다.
참고 사항
버전 1.2부터 Azure IoT ID 서비스는 IoT Edge 및 IoT Hub 통신해야 하는 다른 디바이스 구성 요소에 대한 ID 프로비저닝 및 관리를 처리합니다.
이 섹션의 단계는 인터넷에 연결된 디바이스에 최신 IoT Edge 버전을 설치하는 일반적인 프로세스를 나타냅니다. 시험판 버전과 같은 특정 버전을 설치해야 하거나 오프라인 상태에서 설치해야 하는 경우 이 문서의 뒷부분에 있는 오프라인 또는 특정 버전 설치 단계를 따릅니다.
팁
이전 버전을 실행하는 IoT Edge 디바이스가 이미 있고 최신 릴리스로 업그레이드하려는 경우 IoT Edge의 단계를 사용합니다. 후속 버전은 이전 버전의 IoT Edge와 충분히 달라서 업그레이드를 위해 특정 단계가 필요합니다.
최신 버전의 IoT Edge 및 IoT ID 서비스 패키지를 설치합니다(최신 버전이 아닌 경우).
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
디바이스의 클라우드 ID를 사용하여 설정
디바이스에 컨테이너 엔진 및 IoT Edge 런타임을 설치한 후 클라우드 ID 및 인증 정보를 사용하여 디바이스를 설정합니다.
다음 명령을 사용하여 대칭 키 인증을 사용하여 IoT Edge 디바이스를 구성할 수 있습니다.
sudo iotedge config mp --connection-string 'PASTE_DEVICE_CONNECTION_STRING_HERE'
구성 변경 내용을 적용합니다.
sudo iotedge config apply구성 파일을 보려면 다음을 열 수 있습니다.
sudo nano /etc/aziot/config.toml
모듈 배포
IoT Edge 모듈을 배포하려면 Azure 포털에서 IoT Hub로 이동한 다음, 다음을 수행합니다.
IoT Hub 메뉴에서 Devices 선택합니다.
디바이스를 선택하여 해당 페이지를 엽니다.
모듈 설정 탭을 선택합니다.
IoT Edge 기본 모듈(edgeAgent 및 edgeHub)을 배포하려고 하므로 이 창에 모듈을 추가할 필요가 없으므로 아래쪽에서 Review + create를 선택합니다.
모듈의 JSON 확인이 표시됩니다. 만들기를 선택하여 모듈을 배포합니다.
자세한 내용은 모듈 배포를 참조하세요.
구성 성공 확인
런타임이 성공적으로 설치되고 IoT Edge 디바이스에 구성되었는지 확인합니다.
팁
iotedge 명령을 실행하려면 상승된 권한이 필요합니다. 머신에서 로그아웃하고 IoT Edge 런타임을 설치한 후 처음으로 다시 로그인하면 사용 권한이 자동으로 업데이트됩니다. 그 전까지는 명령 앞에 sudo를 사용합니다.
IoT Edge 시스템 서비스가 실행 중인지 확인합니다.
sudo iotedge system status성공적인 상태 응답은
aziot서비스가 실행 중이거나 준비된 것으로 표시됩니다.서비스 문제를 해결해야 하는 경우 서비스 로그를 검색합니다.
sudo iotedge system logs이
check도구를 사용하여 디바이스의 구성 및 연결 상태를 확인합니다.sudo iotedge check확인(녹색), 경고(노란색) 또는 오류(빨간색)를 포함할 수 있는 응답 범위를 예상할 수 있습니다. 일반적인 오류 문제를 해결하려면 Azure IoT Edge 일반적인 문제에 대한 해결 방법을 참조하세요.
팁
사용 권한이 업데이트된 후에도 항상
sudo를 사용하여 검사 도구를 실행합니다. 검사 도구가 구성 상태를 확인하기 위해 구성 파일에 액세스하려면 상승된 권한이 필요합니다.참고 사항
새로 프로비전된 디바이스에서 IoT Edge Hub와 관련된 오류가 표시될 수 있습니다.
× 프로덕션 준비 상태: Edge Hub의 스토리지 디렉터리가 호스트 파일 시스템에 유지됨 - 오류edgeHub 컨테이너의 현재 상태를 검사할 수 없습니다
IoT Edge Hub 모듈이 아직 실행되고 있지 않으므로 새로 프로비전된 디바이스에서 이 오류가 발생합니다. IoT Edge 모듈이 이전 단계에서 배포되었는지 확인합니다. 배포는 이 오류를 해결합니다.
또는 상태 코드가 다음과 같이
417 -- The device's deployment configuration is not set표시될 수 있습니다. 모듈이 배포되면 이 상태가 변경됩니다.서비스가 처음 시작되면 edgeAgent 모듈만 실행되는 것으로 표시됩니다. edgeAgent 모듈은 기본적으로 실행되며 디바이스에 배포하는 다른 모듈을 설치하고 시작하는 데 도움이 됩니다.
Azure 포털에서 디바이스 페이지를 확인하여 디바이스 및 모듈이 배포되고 실행되고 있는지 확인합니다.
Azure portal에서 IoT Edge 모듈이 배포되고 실행 중임을 확인하는 스크린샷입니다. 모듈이 배포되고 실행되면 다음 명령을 사용하여 디바이스 또는 가상 머신에 모듈을 나열합니다.
sudo iotedge list
오프라인 설치 또는 특정 버전 설치(선택 사항)
이 섹션의 단계는 표준 설치 단계에서 다루지 않는 시나리오를 위한 단계입니다. 다음과 같은 시나리오가 포함될 수 있습니다.
- 오프라인 상태에서 IoT Edge 설치
- 릴리스 후보 버전 설치
패키지 관리자를 통해 사용할 수 없는 Azure IoT Edge 런타임
Ubuntu 스냅을 사용하는 경우 스냅을 다운로드하여 오프라인으로 설치할 수 있습니다. 자세한 내용은 스냅 다운로드 및 오프라인 설치를 참조하세요.
curl 명령을 사용하여 IoT Edge GitHub 리포지토리에서 직접 구성 요소 파일을 대상으로 지정할 수 있습니다.
Azure IoT Edge 릴리스로 이동하여 대상으로 지정할 릴리스 버전을 찾습니다.
해당 버전의 자산 섹션을 확장합니다.
모든 릴리스에는 IoT Edge 및 ID 서비스에 대한 새 파일이 있어야 합니다. 오프라인 디바이스에 IoT Edge 설치하려는 경우 이러한 파일을 미리 다운로드합니다. 그렇지 않으면 다음 명령을 사용하여 해당 구성 요소를 업데이트합니다.
IoT Edge 디바이스의 아키텍처와 일치하는 aziot-identity-service 파일을 찾습니다. 파일 링크를 마우스 오른쪽 단추로 클릭하고 링크 주소를 복사합니다.
다음 명령의 복사된 링크를 사용하여 해당 버전의 ID 서비스를 설치합니다.
curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
IoT Edge 디바이스의 아키텍처와 일치하는 aziot-edge 파일을 찾습니다. 파일 링크를 마우스 오른쪽 단추로 클릭하고 링크 주소를 복사합니다.
다음 명령에서 복사한 링크를 사용하여 해당 버전의 IoT Edge 설치합니다.
curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
IoT Edge 제거
디바이스에서 IoT Edge 설치를 제거하려면 다음 명령을 사용합니다.
IoT Edge 런타임을 제거합니다.
sudo apt-get autoremove --purge aziot-edge
IoT Edge 다시 설치하고 나중에 동일한 구성 정보를 사용하려는 경우 --purge 플래그를 그대로 둡니다.
--purge 플래그는 구성 파일을 포함하여 IoT Edge 연결된 모든 파일을 삭제합니다.
IoT Edge 런타임이 제거되면 생성된 모든 컨테이너가 중지되지만 디바이스에 계속 존재합니다. 모든 컨테이너를 보고 남아 있는 항목을 확인합니다.
sudo docker ps -a
두 개의 런타임 컨테이너를 포함하여 디바이스에서 컨테이너를 삭제합니다.
sudo docker rm -f <container ID>
마지막으로 디바이스에서 컨테이너 런타임을 제거합니다.
sudo apt-get autoremove --purge moby-engine
다음 단계
IoT Edge 모듈을 계속 배포하여 디바이스에 모듈을 배포하는 방법을 배우십시오.