更新 IoT Edge

適用于: IoT Edge 1.4 checkmark IoT Edge 1.4

重要

支援的版本是 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 匯入舊的組態,請修改所 /etc/aziot/config.toml 產生檔案的 [agent.config] 映射,以使用 edgeAgent 的 1.4 映射。

    如需詳細資訊,請參閱 設定 IoT Edge 裝置設定

  4. 在 IoT 中樞 中, 更新模組部署 以參考最新的系統模組。

  5. 在裝置上,使用 sudo iotedge config apply 啟動 IoT Edge。

您可以隨時 針對升級程式進行疑難排解

更新安全性子系統

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

使用 命令 iotedge version 檢查裝置上執行的安全性子系統版本。 如果您在 Windows 上使用適用于 Linux 的 IoT Edge,則必須透過 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 aziot-edge

更新 IoT Edge:

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

執行 apt-get install aziot-edge 會升級安全性子系統,並將身分識別服務 aziot-identity-service 安裝 為必要的相依性。

建議使用 Edge 代理程式安裝微代理程式,以啟用 Edge 裝置的安全性監視和強化。 若要深入瞭解適用于 IoT 的 Microsoft Defender,請參閱 什麼是適用于 IoT 的 Microsoft Defender for Device Builder

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

sudo iotedge config apply

更新執行時間容器

更新 IoT Edge 代理程式和 IoT Edge 中樞容器的方式取決於您在部署中使用滾動標籤 (例如 1.1) 或特定標籤 (例如 1.1.1)。

使用 命令 iotedge logs edgeAgentiotedge logs edgeHub 檢查裝置上目前裝置上的 IoT Edge 代理程式和 IoT Edge 中樞模組版本。 如果您在 Windows 上使用適用于 Linux 的 IoT Edge,則必須透過 SSH 連線到 Linux 虛擬機器,以檢查執行時間模組版本。

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 入口網站部署預設為滾動標籤。 為了開發目的,建議使用此方法。

  • 特定標籤 - 使用版本號碼的所有三個值來明確設定映射版本。 例如,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 入口網站的IoT 中樞中,選取您的 IoT Edge 裝置,然後選取 [ 設定模組 ]。

  2. 在 [模組] 索引 標籤上,選取 [執行時間設定 ]。

    Screenshot that shows location of the Runtime Settings tab.

  3. [執行時間] 設定 中,使用所需的版本更新 Edge Agent 區段中的 [映射 URI ] 值。 尚未選取 [ 套用 ]。

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

  4. 選取 [ Edge 中樞 ] 索引標籤,並以相同的所需版本更新 映射 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. 在您的裝置部署執行時間設定中 ,確認 edgeHub edgeAgent 映射 URI 版本符合安全性子系統的主要和次要版本。 如果安全性子系統版本是 1.4.2,映射版本會是 1.4。 例如, mcr.microsoft.com/azureiotedge-hub:1.4 mcr.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 作,則必須重新設定任何使用者提供的憑證,例如裝置身分識別憑證、裝置 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 Hub 中移除。  若要避免未來的問題,請在連線到 Edge Hub 或IoT 中樞時,使用 TLS 1.2 作為唯一的 TLS 版本。
  • Edge Hub 1.2 中實驗 MQTT 訊息代理程式預覽已結束,且不包含在 Edge Hub 1.4 中。 我們會根據收到的意見反應,繼續精簡 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,以及適用于 Edge 的 IoT 身分識別服務和適用于 IoT 的 Microsoft Defender 微代理程式。

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

建議使用 Edge 代理程式安裝微代理程式,以啟用 Edge 裝置的安全性監視和強化。 若要深入瞭解適用于 IoT 的 Microsoft Defender,請參閱 什麼是適用于 IoT 的 Microsoft Defender for Device Builder

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

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

在物聯網部落格中 隨時掌握最新的更新和公告