更新 IoT Edge
適用于: 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.1 升級至 1.4,請同時更新安全性子系統和執行時間容器。 在發行之前,我們會測試安全性子系統和執行時間容器版本組合。 若要在主要或次要產品版本之間更新:
在裝置上,使用 命令
sudo systemctl stop iotedge
停止 IoT Edge 並 卸載 。在裝置上, 安裝 IoT Edge 。
如果您要使用
iotedge config import
匯入舊的組態,請修改所/etc/aziot/config.toml
產生檔案的 [agent.config] 映射,以使用 edgeAgent 的 1.4 映射。如需詳細資訊,請參閱 設定 IoT Edge 裝置設定 。
在 IoT 中樞 中, 更新模組部署 以參考最新的系統模組。
在裝置上,使用
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 edgeAgent
或 iotedge logs edgeHub
檢查裝置上目前裝置上的 IoT Edge 代理程式和 IoT Edge 中樞模組版本。 如果您在 Windows 上使用適用于 Linux 的 IoT Edge,則必須透過 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.4 ),則只需要更新部署資訊清單中的標記,並將變更套用至您的裝置。
在Azure 入口網站的IoT 中樞中,選取您的 IoT Edge 裝置,然後選取 [ 設定模組 ]。
在 [模組] 索引 標籤上,選取 [執行時間設定 ]。
在 [執行時間] 設定 中,使用所需的版本更新 Edge Agent 區段中的 [映射 URI ] 值。 尚未選取 [ 套用 ]。
選取 [ Edge 中樞 ] 索引標籤,並以相同的所需版本更新 映射 URI 值。
選取 [ 套用 ] 以儲存變更。
選取 [ 檢閱 + 建立 ]、檢閱 JSON 檔案中所見的部署,然後選取 [ 建立 ]。
確認版本相符
在您的裝置上,使用
iotedge version
來檢查安全性子系統版本。 輸出包含主要、次要和修訂版本號碼。 例如, iotedge 1.4.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:
更新 apt。
sudo apt-get update
卸載舊版的 IoT Edge,讓組態檔準備就緒。
sudo apt-get remove iotedge
安裝最新版的 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 。
將舊的 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 版本 。
在物聯網部落格中 隨時掌握最新的更新和公告