共用方式為


更新 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 就會更新至最新的 1.1.x 版本。 如果 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 HubImage 值更新為所需的版本。 尚未選取 [儲存]。

    更新Edge Hub映像版本

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

    更新 Edge Hub 代理程式版本

  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.tomliotedge config import 命令可用來協助將組態資訊從舊的位置和語法移轉至新的位置和語法。
    • 匯入命令無法偵測或修改裝置受信任平臺模組 (TPM) 的存取規則。 如果您的裝置使用 TPM 證明,您必須手動更新 /etc/udev/rules.d/tpmaccess.rules 檔案,以授與 aziottpm 服務的存取權。 如需詳細資訊,請參閱 授與 IoT Edge 存取 TPM
  • 最新版本中的工作負載 API 會以新格式儲存加密的秘密。 如果您從舊版升級至最新版本,則會匯入現有的主要加密密鑰。 工作負載 API 可以使用匯入的加密金鑰,讀取以先前格式儲存的秘密。 不過,工作負載 API 無法以舊格式寫入加密的秘密。 一旦模組重新加密秘密,就會以新格式儲存。 在最新版本中加密後的憑證,無法被 1.1 版的相同模組讀取。 如果您將加密的數據保存到主機裝載的資料夾或磁碟區,請務必建立數據備份複本,以便在需要時可以降級 升級。
  • 若要在連線不支援 TLS 1.2 的裝置時回溯相容性,您可以透過 SslProtocols 環境變數,將 Edge Hub 設定為仍接受 TLS 1.0 或 1.1。 請注意,IoT 中樞 TLS 1.0 和 1.1 的支援會被視為舊版,未來版本也可能從 Edge 中樞移除。 若要避免未來的問題,請在連線到Edge中樞或IoT中樞時,使用TLS 1.2作為唯一的TLS版本。
  • Edge Hub 1.2 中實驗性 MQTT 訊息代理程式預覽已結束,且不包含在 Edge Hub 1.3 或更新版本中。 我們會根據收到的意見反應,繼續精簡 MQTT 訊息代理程序的計劃。 同時,如果您需要IoT Edge上符合標準的 MQTT 訊息代理程式,請考慮將像 Mosquitto 這樣的開放原始碼訊息代理程式部署為 IoT Edge 模組。
  • 從 1.2 版開始,從容器中移除備份映射時,容器會持續執行,而且會在重新啟動時持續保存。 在 1.1 中,移除備份映射時,會立即重新建立容器,並更新備份映射。

將任何更新程式自動化之前,請先驗證它是否可在測試計算機上運作。

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

  1. 更新apt套件。

    sudo apt-get update
    
  2. 卸載舊版的 IoT Edge,讓組態檔準備就緒。

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

    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 版本

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