共用方式為


更新 IoT Edge

適用於: 是圖示 IoT Edge 1.1

重要

IoT Edge 1.1 終止支援日期為 2022 年 12 月 13 日。 如需此產品、服務、技術或 API 的支援資訊,請參閱 Microsoft 產品生命週期。 如需更新至最新版IoT Edge的詳細資訊,請參閱 更新IoT Edge

當 IoT Edge 服務發行新版本時,您會想要更新 IoT Edge 裝置,以取得最新的功能和安全性改善。 本文提供在新版本發行時如何更新 IoT Edge 裝置的相關資訊。

如果您想要更新至較新的版本,IoT Edge 裝置將有兩個邏輯元件需要更新。 第一個是安全性子系統。 雖然安全性子系統 的架構在 1.1 版和 1.2 版之間有所變更,但其整體責任保持不變。 其會在裝置上執行、處理安全性型工作,並在裝置啟動時啟動模組。 目前,安全性子系統只能從裝置本身更新。 第二個元件是運行時間,由IoT Edge中樞和IoT Edge代理程式模組組成。 視您建構部署的方式而定,運行時間可以從裝置或遠端更新。

您應該更新 IoT Edge 執行時間和應用程式層使用相同的版本。 雖然支援不相符的版本,但不會一起測試。 使用本文中的下列各節來更新裝置上的運行時間和應用層:

  1. 更新安全性子系統
  2. 更新執行階段容器
  3. 確認版本相符
    • 在您的裝置上,使用 iotedge version 來檢查安全性子系統版本。 輸出包含主要、次要和修訂版本號碼。 例如,iotedge 1.4.2
    • 在您的裝置部署運行時間設定中,確認 edgehubedgeagent 映像URI版本符合安全性子系統的主要和次要版本。 如果安全性子系統版本為 1.4.2,則映像版本會是 1.4。 例如,mcr.microsoft.com/azureiotedge-hub:1.4mcr.microsoft.com/azureiotedge-agent:1.4

若要尋找最新版的 Azure IoT Edge,請參閱 Azure IoT Edge 版本

更新安全性子系統

IoT Edge 安全性子系統包含一組原生元件,必須在 IoT Edge 裝置上使用套件管理員進行更新。

請使用 iotedge version 命令檢查在您裝置上執行的安全性子系統版本。 如果使用 IoT Edge for Linux on Windows,您必須透過 SSH 連線到 Linux 虛擬機器,才能檢查版本。

重要

如果您要將裝置從 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 iotedge

如果您想要更新至最新版本的運行時間模組,請使用下列命令,其也會將 libiothsm-std 更新為最新版本:

sudo apt-get install iotedge

如果您想要更新為特定版本的運行時間模組,請從 apt 清單輸出指定版本。 每當 iotedge 更新時,它會自動嘗試將 libiothsm-std 套件更新為其最新版本,這可能會導致相依性衝突。 如果您不打算使用最新版本,請務必將這兩個套件的目標設為相同版本。 例如,下列命令會安裝 1.1 版的特定版本:

sudo apt-get install iotedge=1.1.1 libiothsm-std=1.1.1

如果想要安裝的版本無法透過apt-get取得,您可以使用 curl 以IoT Edge版本存放庫的任何版本為目標。 針對您想要安裝的版本,找出適用於您裝置的適當 libiothsm-stdiotedge 檔案。 針對每個檔案,以滑鼠右鍵按下檔案連結,然後複製連結位址。 使用連結地址安裝這些元件的特定版本:

curl -L <libiothsm-std link> -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
curl -L <iotedge link> -o iotedge.deb && sudo apt-get install ./iotedge.deb

然後,重新套用設定以確保系統完全更新。

sudo iotedge config apply

更新執行階段容器

您更新 IoT Edge 代理程式和 IoT Edge 中樞容器的方式,取決於您在部署中使用的是累積標記 (例如 1.1) 還是特定標記 (例如 1.1.1)。

使用 iotedge logs edgeAgentiotedge logs edgeHub 命令,檢查您裝置上目前的 IoT Edge 代理程式和 IoT Edge 中樞模組版本。 如果使用 IoT Edge for Linux on Windows,您必須透過 SSH 連線到 Linux 虛擬機器,才能檢查執行階段模組版本。

在記錄中尋找容器版本

了解 IoT Edge 標記

IoT Edge 代理程式和 IoT Edge 中樞映像會標示與其相關聯的 IoT Edge 版本。 標記可透過兩種不同的使用方式用於執行階段映像上:

  • 累積標記 - 僅使用版本號碼的前兩個值來取得符合這些數字的最新映像。 例如,有新版本指向最新的 1.1.x 版時,就會更新 1.1。 如果 IoT Edge 裝置的容器執行階段重新提取映像,執行階段模組就會更新為最新版本。 從 Azure 入口網站執行的部署預設為累積標記。 進行開發時建議使用此方法。

  • 特定標記 - 版本號碼的三個值全都會使用,以明確設定映像版本。 例如,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.1.1),則您只需要更新部署指令清單中的標記,並將變更套用至您的裝置。

  1. 在 Azure 入口網站的 IoT 中樞中,選取您的 IoT Edge裝置,然後選取 [設定模組]

  2. 在 [ IoT Edge 模組] 區段中,選取 [ 運行時間設定]。

    設定運行時間設定

  3. [運行時間設定],使用所需的版本更新Edge Hub映像值。 不要選取 [儲存 ]。

    更新Edge中樞映像版本

  4. 折疊 Edge 中樞設定,或向下捲動,並使用相同所需版本更新 Edge Agent映射值。

    更新 Edge 中樞代理程式版本

  5. 選取 [儲存]。

  6. 選取 [ 檢閱 + 建立]、檢閱部署,然後選取 [ 建立]。

特殊案例:從 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 實作,則必須重新設定任何使用者提供的憑證,例如裝置身分識別憑證、裝置 CA 和信任套件組合。
  • 在 1.2 版中引進了新的身分識別服務 aziot-identity-service。 此服務會處理 IoT Edge 的身分識別佈建和管理,也會處理下列元件的身分識別佈建和管理:需要與 IoT 中樞 (例如 IoT 中樞裝置更新) 通訊的其他裝置元件。
  • 預設設定檔具有新的名稱和位置。 原為 /etc/iotedge/config.yaml,依預設您的裝置設定資訊現在預期會位於 /etc/aziot/config.toml 中。 iotedge config import 命令可用來協助將組態資訊從舊的位置和語法移轉至新的位置和語法。
    • 匯入命令無法偵測或修改裝置信賴平台模組 (TPM) 的存取規則。 如果您的裝置使用 TPM 證明,您必須手動更新 /etc/udev/rules.d/tpmaccess.rules 檔案,才能授與 aziottpm 服務的存取權。 如需詳細資訊,請參閱授與 IoT Edge 對 TPM 的存取權
  • 最新版本中的工作負載 API 會以新的格式儲存加密的秘密。 如果您從舊版升級至最新版本,則會匯入現有的主要加密密鑰。 工作負載 API 可以使用匯入的加密金鑰,讀取以舊格式儲存的秘密。 不過,工作負載 API 無法以舊格式寫入加密的秘密。 一旦模組重新加密秘密,就會以新格式儲存。 1.1 版中的相同模組無法讀取最新版本中加密的秘密。 如果您將加密的資料保存到主機掛接的資料夾或磁碟區,請一律在升級之前建立資料的備份複本,以在必要時保留降級的能力。
  • 如需在連線不支援 TLS 1.2 的裝置時回溯相容性,您可以將 Edge 中樞設定為仍可透過 SslProtocols 環境變數接受 TLS 1.0 或 1.1。 請注意,IoT 中樞 中的 TLS 1.0 和 1.1 支援會被視為舊版,而且未來版本也可能從 Edge Hub 中移除。 若要避免未來發生問題,請在連線到 Edge 中樞或 IoT 中樞時,使用 TLS 1.2 作為唯一的 TLS 版本。
  • Edge Hub 1.2 中實驗性 MQTT 訊息代理程式預覽已結束,且不包含在 Edge Hub 1.3 或更新版本中。 我們會根據收到的意見反應,繼續精簡 MQTT 訊息代理程式的方案。 同時,如果您需要 IoT 中樞上符合標準的 MQTT 訊息代理程式,請考慮將 Mosquitto 之類的開放原始碼訊息代理程式部署為 IoT 中樞模組。
  • 從 1.2 版開始,從容器中移除支援映像時,容器會持續執行,並在重新開機期間持續存在。 在 1.1 中,移除支援映像時,會立即重新建立容器,並更新支援映像。

將任何更新流程自動化之前,請先驗證其是否可在測試機器上運作。

當您準備好時,請遵循下列步驟來更新裝置上的 IoT 中樞:

  1. 更新 apt。

    sudo apt-get update
    
  2. 解除安裝舊版 IoT 中樞,讓您的設定檔就位。

    sudo apt-get remove iotedge
    
  3. 安裝最新版的 IoT Edge,以及 IoT 識別服務和適用於 IoT 的 Microsoft Defender Edge 微代理程式。

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

建議您使用 Edge 代理程式安裝微代理程式,以啟用 Edge 裝置的安全性監視和強化。 若要深入了解適用於 IoT 的 Microsoft Defender,請參閱對於裝置建置者而言,什麼是適用於 IoT 的 Microsoft Defender

  1. 將舊的 config.yaml 檔案匯入至其新的格式,並套用設定資訊。

    sudo iotedge config import
    

既然已在裝置上執行的IoT Edge服務已更新,請遵循本文中的步驟,同時 更新運行時間容器

下一步

檢視最新的 Azure IoT Edge 版本

持續關注物聯網部落格中的最新更新和公告