再次讨论Azure IoT Edge模块开发的环境准备
分类: Azure物联网 ◆ 标签: #Azure #IoT Edge # ◆ 发布于: 2023-06-14 22:00:15

我们之前已经有了一篇文章来讨论如何准备开发环境,你可以从这个地址查看这篇文章:https://www.azuredeveloper.cn/article/how-to-setup-a-enviroment-for-azure-iot-edge-module-develop, 我们本章还是想再次总结一下如何为开发Azure IoT Edge
模块准备开发环境的主要特点。
我们先总结一下最佳实践:
- 准备一台用于开发的机器,我们称之为开发机,开发机最好和用于测试的
Azure IoT Edge
是两台机器,如果确实没有多余的机器,也可以使用虚拟机替代Azure IoT Edge
的设备。 - 开发机和用于测试的
Azure IoT Edge
关于容器要一致,例如开发机器是基于Linux 容器的,那么测试机器也应该是基于Linux容器的。另外需要注意的是Azure IoT Edge Runtime
1.2仅仅支持基于Linux的容器。 - 设置项目的容器镜像使用远程的服务,包括
docker hub
或者是微软的Azure Containter register
- 使用
vs code
开发调试时不一定非要使用插件remote-continaer
, 也可以直接使用本机。 - 如果需要在本机调试需要有python的安装,同时要安装包:
pip install --upgrade iotedgehubdev
, 主要用于模拟edgeHub
模块处理消息的收发。
对于开发项目的整个准备checklist
如下:
- 首先你需要一个
Azure
账号,该账号用于创建Azure IoT Hub
的资源。 - 创建一个
Azure IoT Hub
的资源,并在该资源里创建一个Azure IoT Edge
设备。 - 创建一个虚拟机,该虚拟机安装
Azure IoT Edge Runtime
, 并使用SAS Key
配置该Azure IoT Edge
设备,使得该设备可以连接上Azure IoT Hub
。 - 创建一个
Docker Hub
账号或者是Azure Container register
实例,我们创建的Azure IoT Edge
模块会被发布到这里。 VS code
需要安装插件Azure IoT Tool
、Azure
、Docker
, 相关语言的插件,例如.Net
的插件等。- 需要在开发机器上安装一个容器,例如
Docker Desktop
,开发之前需要启动Docker
。 - 在
VS code
安装好插件之后,需要使用Azure IoT Hub
插件选择您的默认Azure IoT Hub
以及你注册的Azure IoT Edge
设备。 - 创建新项目之后需要设置默认的
Azure IoT Edge Runtime
版本。 - 创建新项目之后需要设置默认的
Azure IoT Edge Runtime
运行的平台,例如是amd64
还是arm64
, 需要注意arm64
目前还是在public preview
阶段。 - 创建新项目之后需要设置默认的容器远程服务的认证,通过在文件
.env
中配置相应的变量:CONTAINER_REGISTRY_USERNAME_<服务名>
以及CONTAINER_REGISTRY_PASSWORD_<服务名>
上述最佳实践和checklist
完成之后,我们还需要熟悉一下由Azure IoT Edge
插件创建的项目模板:
项目模板
使用Azure IoT Edge
插件创建一个新的Azure IoT Edge
项目之后,我们会有如下的目录结构,我们一一来讲解一下目录结构以及各文件的用途:
目录结构说明:
.devcontainer
: 如果需要在VS Code
上使用插件remote-container
在Docker
容器里直接开发,那么插件就会使用这个目录用于构建一个remote-container
的开发环境,您可以通过VS Code
命令:Ctrl + Shift + P
, 然后:Remote-containers:Open Folder in Containers
从docker
里打开项目。.vsdoe
: 用于vs code
定义环境或者调试环境。modules
: 我们定义的Azure IoT Edge
模块代码全部组织在这个目录里,每一个模块一个目录,依据使用的语言不同,大家可以根据自己熟悉的语言来定制自己的项目代码,总体来说,是一个控制台应用。在这个文件夹上单机右键,可以选择添加新的模块。.env
: 用于定义访问远端的容器镜像服务器的定义,这里定义的变量会用于上传镜像到指定的位置。deployment.template.json
和deployment.debug.template.json
主要用于部署,其文件内容和我们之前学习的Azure IoT Edge
自动部署大同小异。在这个文件上单击右键可以添加新的模块。