共用方式為


更新 IoT Edge

適用於:yes 圖示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 中樞] 的 [映像] 值。 請還不要選取 [儲存]。

    更新 Edge 中樞映像版本

  4. 摺疊 [Edge 中樞] 設定,或向下捲動,並使用相同的所需版本更新 [Edge 代理程式] 的 [映像] 值。

    更新 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 Hub 設定為仍可透過 SslProtocols 環境變數接受 TLS 1.0 或 1.1。 請注意,IoT 中樞中的 TLS 1.0 和 1.1 支援會被視為舊版,也可能在未來版本中從 Edge 中樞中移除。†ー ー 若要避免未來的問題,請使用 TLS 1.2 作為連線到 Edge Hub 或IoT 中樞時的唯一 TLS 版本。
  • Edge Hub 1.2 中實驗性 MQTT 訊息代理程式預覽已結束,且未包含在 Edge Hub 1.4.†}}中,我們會繼續根據收到的意見反應來精簡 MQTT 訊息代理程式的計畫。 同時,如果您需要IoT Edge上符合標準的 MQTT 訊息代理程式,請考慮部署開放原始碼訊息代理程式,例如 ー ー個IoT Edge模組。
  • 從 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 版本

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