我试图了解 IoT Edge 设备如何在给定特定设备部署策略的情况下部署模块。这是我的测试用例:
- 在我的开发机器上,我创建了一个自定义 IoT Edge 模块(本质上是 VS Code 中的默认 CModule 示例)。我手动将模块推送到我的 Azure 容器注册表,并手动将其标记为 1.0.1 和 1.0
- 我创建了一个部署策略,其中包括我的自定义模块,如下所示
"modules": {
"MyModule": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "<my_acr.azurecr.io>/mymodule:1.0",
"createOptions": "{}"
}
}
}
- 我创建了一个使用上述自定义部署策略部署的 IoT Edge 设备(我正在使用标签来执行此操作)。我可以在我的测试机器上看到 /mymodule:1.0 docker 映像可用。测试机上的 docker ImageID 与 ImageID 匹配
- 在我的开发机器上,我稍微修改了模块并重新构建它。我用 1.0.2 和 1.0 标记新模块 docker 映像并将新标签推送到 ACR。我可以在门户中看到新标签出现了。
- 但是,我的测试机器永远不会得到新版本的模块。Docker 仍然显示旧的 ImageID。
那么让我现有的部署策略强制更新我的设备上的模块版本的正确方法是什么?我认为基于https://docs.microsoft.com/en-us/azure/iot-edge/how-to-update-iot-edge#understand-iot-edge-tags我的模块正在使用滚动标记方案.