Azure IoT Edge中同部署清单下的Module单独更新是否影响其他模块?
可否在不影响其他模块的前提下单独更新Edge Device中的单个模块
答案是完全可以,只要操作符合部署清单的规范,不会干扰其余未修改的模块的运行。
具体原理和操作注意事项如下:
- IoT Edge的部署采用声明式比对机制:运行在设备上的
$edgeAgent系统模块会持续比对当前生效的部署清单和设备实际运行状态,收到新的部署清单后,只会对配置发生变更的模块执行更新操作,其余配置和原有清单完全一致的模块会保持当前运行状态,不会被重启、重建。 - 操作时仅需要基于当前生效的完整部署清单做最小修改:你可以先导出当前在用的部署清单,仅修改你要更新的目标模块的镜像地址、环境变量、容器创建参数等需要调整的内容,其余所有配置(包括其他业务模块、
$edgeAgent、$edgeHub系统模块的配置)都原封不动保留,再提交这份修改后的清单即可。 - 特殊注意项:如果你要更新的模块和其他业务模块存在服务调用依赖,建议提前验证新版本模块的接口兼容性,避免接口逻辑变动导致关联模块的业务报错,这类业务层面的影响不属于部署机制本身带来的问题。
你可以使用以下Azure CLI命令导出当前生效的部署清单作为修改基准:az iot edge deployment show --deployment-id <部署ID> --resource-group <资源组名称> --output json
内容的提问来源于stack exchange,提问作者Jonas Nilsson
相关产品推荐
相关产品推荐

