用于滚动标记的 azure Iot Edge 部署策略
azure Iot Edge deployment policy for rolling tagging
我正在尝试了解 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 我的模块使用的是 滚动标记 方案。
是的,正如您发布的类似内容中所述:
If you use rolling tags in your deployment then you need to force the container runtime on your device to pull the latest version of the image.
因此,通过使用滚动标签,设备上不会自动发生任何事情。因为:为什么要这样?这些设备不会监视您的容器注册表的更改。
您实际上可以做什么:如果您再次在设备上手动拉取相同的图像 (docker pull <my_acr.azurecr.io>/mymodule:1.0
),iotedge 将在设备上看到图像已更改。然后它将使用新的映像版本在本地重新部署模块。
我正在尝试了解 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 我的模块使用的是 滚动标记 方案。
是的,正如您发布的类似内容中所述:
If you use rolling tags in your deployment then you need to force the container runtime on your device to pull the latest version of the image.
因此,通过使用滚动标签,设备上不会自动发生任何事情。因为:为什么要这样?这些设备不会监视您的容器注册表的更改。
您实际上可以做什么:如果您再次在设备上手动拉取相同的图像 (docker pull <my_acr.azurecr.io>/mymodule:1.0
),iotedge 将在设备上看到图像已更改。然后它将使用新的映像版本在本地重新部署模块。