IoT Edge 업데이트

적용 대상:IoT Edge 1.4 checkmark IoT Edge 1.4

Important

IoT Edge 1.4는 지원되는 릴리스입니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.

IoT Edge 서비스가 새 버전을 릴리스하면 최신 기능 및 개선된 보안을 사용하도록 IoT Edge 디바이스를 업데이트할 수 있습니다. 이 문서에서는 새 버전을 사용할 수 있을 때 IoT Edge 디바이스를 업데이트하는 방법에 대한 정보를 제공합니다.

새 버전으로 전환하려면 IoT Edge 디바이스의 두 가지 논리 구성 요소를 업데이트해야 합니다.

  • 보안 하위 시스템 - 보안 하위 시스템의 아키텍처는 1.1 및1.2 버전 간에 변경되었지만 책임은 동일하게 유지되었습니다. 디바이스에서 실행되고, 보안 기반 작업을 처리하고, 디바이스가 시작될 때 모듈을 시작합니다. 보안 하위 시스템은 디바이스 자체에서만 업데이트할 수 있습니다.

  • IoT Edge 런타임 - IoT Edge 런타임은 IoT Edge 허브(edgeHub) 및 IoT Edge 에이전트(edgeAgent) 모듈로 구성됩니다. 배포 구성 방법에 따라 디바이스에서 또는 원격으로 런타임을 업데이트할 수 있습니다.

업데이트 방법

이 문서의 섹션을 사용하여 디바이스의 보안 하위 시스템과 런타임 컨테이너를 모두 업데이트합니다.

패치 릴리스

패치 릴리스 간에 업그레이드하는 경우(예: 1.4.1에서 1.4.2로) 업데이트 순서는 중요하지 않습니다. 보안 하위 시스템 또는 런타임 컨테이너 중 아무거나 먼저 업그레이드할 수 있습니다. 패치 릴리스 간에 업데이트하려면 다음을 수행합니다.

  1. 보안 하위 시스템 업데이트
  2. 런타임 컨테이너 업데이트
  3. 버전이 일치하는지 확인

언제든지 업그레이드 프로세스에서 문제를 해결할 수 있습니다.

주 릴리스 또는 부 릴리스

주 릴리스 또는 부 릴리스 간에 업그레이드하는 경우(예: 1.1에서 1.4로) 보안 하위 시스템과 런타임 컨테이너를 모두 업데이트합니다. 릴리스 전에 보안 하위 시스템 및 런타임 컨테이너 버전 조합을 테스트합니다. 주 제품 또는 부 제품 릴리스 간에 업데이트하려면 다음을 수행합니다.

  1. 디바이스에서 명령 sudo systemctl stop iotedge 사용하여 IoT Edge를 중지하고 제거합니다.

  2. 디바이스에서Docker 또는 Moby 컨테이너 엔진을 업그레이드합니다.

  3. 디바이스에서 IoT Edge를 설치합니다.

    iotedge config import를 사용하여 기존 구성을 가져오는 경우 edgeAgent의 1.4 이미지를 통해 생성된 /etc/aziot/config.toml 파일의 [agent.config] 이미지를 수정합니다.

    자세한 내용은 IoT Edge 디바이스 설정 구성을 참조하세요.

  4. IoT Hub에서 최신 시스템 모듈을 참조하도록 모듈 배포를 업데이트합니다.

  5. 디바이스에서 sudo iotedge config apply를 사용하여 IoT Edge를 시작합니다.

언제든지 업그레이드 프로세스에서 문제를 해결할 수 있습니다.

보안 하위 시스템 업데이트

IoT Edge 보안 하위 시스템은 IoT Edge 디바이스에서 패키지 관리자를 사용하여 업데이트해야 하는 네이티브 구성 요소의 세트를 포함합니다.

iotedge version 명령을 사용하여 디바이스에서 실행 중인 보안 하위 시스템의 버전을 확인합니다. Windows에서 Linux용 IoT Edge를 사용하는 경우 버전을 확인하려면 Linux 가상 머신에 SSH로 연결해야 합니다.

Important

버전 1.0 또는 1.1에서 최신 릴리스로 디바이스를 업데이트하는 경우 설치 및 구성 프로세스에 차이점이 있어 추가 단계가 필요합니다. 자세한 내용은 이 문서의 뒷부분에 나오는 단계(특수 사례: 1.0 또는 1.1에서 최신 릴리스로 업데이트)를 참조하세요.

Linux x64 디바이스에서는 apt-get 또는 해당 패키지 관리자를 사용하여 보안 하위 시스템을 최신 버전으로 업데이트합니다.

다음과 같이 apt를 업데이트합니다.

sudo apt-get update

참고 항목

Microsoft에서 최신 리포지토리 구성을 가져오는 지침은 IoT Edge 설치에 대한 예비 단계를 참조하세요.

사용할 수 있는 IoT Edge 버전을 확인합니다.

apt list -a aziot-edge

IoT Edge 업데이트:

sudo apt-get install aziot-edge defender-iot-micro-agent-edge

apt-get install aziot-edge을 실행하면 보안 하위 시스템이 업그레이드되고 필요한 종속성으로 aziot-identity-serviceID 서비스가 설치됩니다.

Edge 디바이스의 보안 모니터링 및 강화를 사용하도록 설정하려면 Edge 에이전트와 함께 마이크로 에이전트를 설치하는 것이 좋습니다. Microsoft Defender for IoT에 대한 자세한 내용은 디바이스 빌더를 위한 Microsoft Defender for IoT란?을 참조하세요.

그런 다음 시스템이 완전히 업데이트되도록 구성을 다시 적용합니다.

sudo iotedge config apply

런타임 컨테이너 업데이트

IoT Edge 에이전트 및 IoT Edge 허브 컨테이너를 업데이트하는 방법은 배포에서 롤링 태그(예: 1.1)를 사용할지 또는 특정 태그(예: 1.1.1)를 사용할지에 따라 다릅니다.

iotedge logs edgeAgent 또는 iotedge logs edgeHub 명령을 사용하여 현재 사용 중인 디바이스에 있는 IoT Edge 에이전트 및 IoT Edge 허브 모듈 버전을 확인합니다. Windows에서 Linux용 IoT Edge를 사용하는 경우 런타임 모듈 버전을 확인하려면 Linux 가상 머신에 SSH로 연결해야 합니다.

Screenshot of where to find the container version in console logs.

IoT Edge 태그 이해

IoT Edge 에이전트 및 IoT Edge 허브 이미지에는 연결된 IoT Edge 버전으로 태그가 지정됩니다. 런타임 이미지에 태그를 사용하는 방법에는 다음 두 가지가 있습니다.

  • 롤링 태그 - 버전 번호의 처음 두 개 값만 사용하여 해당 숫자와 일치하는 최신 이미지를 가져옵니다. 예를 들어, 최신 1.1.x 버전을 가리키는 새 릴리스가 있을 때마다 1.1이 업데이트됩니다. IoT Edge 디바이스의 컨테이너 런타임이 이미지를 다시 끌어오면 런타임 모듈은 최신 버전으로 업데이트됩니다. Azure Portal에서 배포할 때는 기본적으로 롤링 태그가 사용됩니다. 이 접근 방법은 개발 목적으로 제안됩니다.

  • 특정 태그 - 버전 번호의 세 값을 모두 사용하여 이미지 버전을 명시적으로 설정합니다. 예를 들어, 1.1.0은 초기 릴리스 이후에 변경되지 않습니다. 업데이트할 준비가 되면 배포 매니페스트에서 새 버전 번호를 선언할 수 있습니다. 이 접근 방법은 프로덕션 목적으로 제안됩니다.

롤링 태그 이미지 업데이트

배포에 롤링 태그를 사용하는 경우(예: mcr.microsoft.com/azureiotedge-hub:1.1) 디바이스의 컨테이너 런타임이 강제로 최신 버전의 이미지를 가져오도록 해야 합니다.

IoT Edge 디바이스에서 이미지의 로컬 버전을 삭제합니다. Windows 머신에서 보안 하위 시스템을 제거하면 런타임 이미지도 제거되므로 이 단계를 다시 수행할 필요가 없습니다.

docker rmi mcr.microsoft.com/azureiotedge-hub:1.1
docker rmi mcr.microsoft.com/azureiotedge-agent:1.1

이미지를 제거하기 위해 강제 -f 플래그를 사용해야 할 수 있습니다.

IoT Edge 서비스는 최신 버전의 런타임 이미지를 끌어오고 해당 이미지를 디바이스에서 자동으로 다시 시작합니다.

특정 태그 이미지 업데이트

배포에서 특정 태그를 사용하는 경우(예: mcr.microsoft.com/azureiotedge-hub:1.4) 배포 매니페스트에서 태그를 업데이트하고 변경 내용을 디바이스에 적용하기만 하면 됩니다.

  1. Azure Portal의 IoT Hub에서 IoT Edge 디바이스를 선택하고 모듈 설정을 선택합니다.

  2. 모듈 탭에서 런타임 설정을 선택합니다.

    Screenshot that shows location of the Runtime Settings tab.

  3. 런타임 설정에서 Edge 에이전트 섹션의 이미지 URI 값을 원하는 버전으로 업데이트합니다. 아직 적용을 선택하지 마세요.

    Screenshot that shows where to update the image URI with your version in the Edge Agent.

  4. Edge Hub 탭을 선택하고 원하는 동일한 버전으로 이미지 URI 값을 업데이트합니다.

    Screenshot that shows where to update the image URI with your version in the Edge Hub.

  5. 적용을 선택하여 변경 내용을 저장합니다.

  6. 검토 + 만들기를 선택하고 JSON 파일에 표시된 대로 배포를 검토한 다음 만들기를 선택합니다.

버전이 일치하는지 확인

  1. 디바이스에서 iotedge version을 사용하여 보안 하위 시스템 버전을 확인합니다. 출력에는 주 버전, 부 버전 및 수정 버전 번호가 포함됩니다. 예: iotedge 1.4.2.

  2. 디바이스 배포 런타임 설정에서 edgeHubedgeAgent 이미지 URI 버전이 보안 하위 시스템의 주 버전 및 부 버전과 일치하는지 확인합니다. 보안 하위 시스템 버전이 1.4.2인 경우 이미지 버전은 1.4입니다. 예: mcr.microsoft.com/azureiotedge-hub:1.4mcr.microsoft.com/azureiotedge-agent:1.4.

참고 항목

IoT Edge 보안 하위 시스템 및 런타임 컨테이너를 지원되는 동일한 릴리스 버전으로 업데이트합니다. 일치하지 않는 버전이 지원되지만 모든 버전 조합을 테스트하지는 않았습니다.

최신 버전의 Azure IoT Edge를 찾으려면 Azure IoT Edge 릴리스를 참조하세요.

특수 사례: 1.0 또는 1.1에서 최신 릴리스로 업데이트

버전 1.2부터 IoT Edge 서비스는 새 패키지 이름을 사용하며 설치 및 구성 프로세스가 약간 달라졌습니다. 1.0 또는 1.1 버전을 실행하는 IoT Edge 디바이스가 있는 경우 다음 지침을 사용하여 최신 릴리스로 업데이트하는 방법을 알아보세요.

최신 릴리스와 버전 1.1 이전의 주요 차이점은 다음과 같습니다.

  • 패키지 이름이 iotedge에서 aziot-edge로 변경되었습니다.
  • libiothsm-std 패키지가 더 이상 사용되지 않습니다. IoT Edge 릴리스의 일부로 제공된 표준 패키지를 사용한 경우 구성이 새 버전으로 이전될 수 있습니다. libiothsm-std의 다른 구현을 사용한 경우 디바이스 ID 인증서, 디바이스 CA, 신뢰 번들과 같은 사용자 제공 인증서를 다시 구성해야 합니다.
  • 새 ID 서비스인 aziot-identity-service가 1.2 릴리스의 일부로 도입되었습니다. 이 서비스는 IoT Edge 및 IoT Hub와 통신해야 하는 기타 디바이스 구성 요소(예: Device Update for IoT Hub)에 대한 ID 프로비저닝 및 관리를 처리합니다.
  • 기본 구성 파일이 새 이름과 위치를 갖게 되었습니다. 이전에 /etc/iotedge/config.yaml에 있었던 디바이스 구성 정보가 이제는 기본적으로 /etc/aziot/config.toml에 있을 것으로 예상됩니다. 구성 정보를 이전 위치와 구문에서 새 위치와 구문으로 이전하는 데 iotedge config import 명령을 사용하는 것이 도움이 될 수 있습니다.
    • import 명령은 디바이스의 TPM(신뢰할 수 있는 플랫폼 모듈)에 대한 액세스 규칙을 감지하거나 수정할 수 없습니다. 디바이스에서 TPM 증명을 사용하는 경우 aziottpm 서비스에 대한 액세스 권한을 부여하려면 /etc/udev/rules.d/tpmaccess.rules 파일을 수동으로 업데이트해야 합니다. 자세한 내용은 TPM에 대한 IoT Edge 액세스 권한 부여를 참조하세요.
  • 최신 버전의 워크로드 API는 암호화된 비밀을 새 형식으로 저장합니다. 이전 버전에서 최신 버전으로 업그레이드하는 경우 기존 마스터 암호화 키를 가져옵니다. 워크로드 API는 가져온 암호화 키를 사용하여 이전 형식으로 저장된 비밀을 읽을 수 있습니다. 그러나 워크로드 API는 암호화된 비밀을 이전 형식으로 쓸 수 없습니다. 모듈이 비밀로 다시 암호화되면 새 형식으로 저장됩니다. 최신 버전에서 암호화된 비밀은 버전 1.1의 동일한 모듈에서 읽을 수 없습니다. 암호화된 데이터를 호스트 탑재 폴더 또는 볼륨에 유지하는 경우 업그레이드하기 에 항상 데이터의 백업 복사본을 만들어 필요한 경우 다운그레이드 기능을 유지합니다.
  • TLS 1.2를 지원하지 않는 디바이스를 연결할 때 이전 버전과의 호환성을 위해 SslProtocols 환경 변수를 통해 TLS 1.0 또는 1.1을 계속 허용하도록 Edge Hub를 구성할 수 있습니다. IoT Hub에서 TLS 1.0 및 1.1에 대한 지원은 레거시로 간주되며 향후 릴리스의 Edge Hub에서 제거될 수도 있습니다.  향후 문제를 방지하려면 Edge Hub 또는 IoT Hub에 연결할 때 TLS 버전으로 TLS 1.2만을 사용합니다.
  • Edge Hub 1.2의 실험적 MQTT 브로커에 대한 미리 보기가 종료되었으며 Edge Hub 1.4에 포함되지 않습니다. 받은 피드백에 따라 MQTT 브로커에 대한 계획을 계속 구체화하고 있습니다. 한편, IoT Edge에 표준 규격 MQTT 브로커가 필요한 경우 Mosquitto와 같은 오픈 소스 브로커를 IoT Edge 모듈로 배포하는 것을 고려하세요.
  • 버전 1.2부터 컨테이너에서 백업 이미지가 제거되면 컨테이너가 계속 실행되고 다시 시작할 때 유지됩니다. 1.1에서 백업 이미지가 제거되면 컨테이너가 즉시 다시 만들어지고 백업 이미지가 업데이트됩니다.

업데이트 프로세스를 자동화하기 전에 IoT Edge 버전 1.2가 테스트 머신에서 작동하는지 확인합니다.

준비가 되면 다음 단계에 따라 디바이스에서 IoT Edge를 업데이트합니다.

  1. apt를 업데이트합니다.

    sudo apt-get update
    
  2. 구성 파일은 그대로 두고 이전 버전의 IoT Edge를 제거합니다.

    sudo apt-get remove iotedge
    
  3. IoT ID 서비스 및 Edge용 Microsoft Defender for IoT 마이크로 에이전트와 함께 최신 버전의 IoT Edge를 설치합니다.

    sudo apt-get install aziot-edge defender-iot-micro-agent-edge
    

Edge 디바이스의 보안 모니터링 및 강화를 사용하도록 설정하려면 Edge 에이전트와 함께 마이크로 에이전트를 설치하는 것이 좋습니다. Microsoft Defender for IoT에 대한 자세한 내용은 디바이스 빌더를 위한 Microsoft Defender for IoT란?을 참조하세요.

  1. 이전 config.xml 파일을 새 형식으로 가져오고 구성 정보를 적용합니다.

    sudo iotedge config import
    

이제 최신 IoT Edge 서비스가 디바이스에서 실행 중이므로 최신 버전으로 런타임 컨테이너를 업데이트해야 합니다. 런타임 컨테이너의 업데이트 프로세스는 IoT Edge 서비스의 업데이트 프로세스와 동일합니다.

문제 해결

언제든 디바이스에서 다음 명령을 실행하여 시스템의 로그를 볼 수 있습니다.

  • check 명령을 사용하여 문제 해결을 시작합니다. 일반적인 문제에 대한 구성 및 연결 테스트 컬렉션을 실행합니다.

    sudo iotedge check --verbose
    
  • IoT Edge 시스템 서비스의 상태를 확인하려면 다음을 수행합니다.

    sudo iotedge system status 
    
  • 호스트 구성 요소 로그를 보려면 다음을 실행합니다.

    sudo iotedge system logs
    
  • edgeAgent 및 edgeHub에서 보고된 반복되는 문제를 확인하려면 다음을 실행합니다.

    <module>을 고유의 모듈 이름으로 바꿉니다. 문제가 없으면 출력이 표시되지 않습니다.

    sudo iotedge logs <module>
    

자세한 내용은 IoT Edge 디바이스 문제 해결을 참조하세요.

다음 단계

최신 Azure IoT Edge 릴리스를 확인합니다.

IoT(사물 인터넷) 블로그에서 최신 업데이트 및 알림을 받아 보세요.