使用Harbor+Auzre IOT Edge构建智能边界

Posted StevenLian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Harbor+Auzre IOT Edge构建智能边界相关的知识,希望对你有一定的参考价值。

Azure上创建IOT Hub服务

  1. 登录到Azure的管理portal,选择新建,物联网,创建IOT Hub:

  2. 创建完成后,选择IOT edge,新建一个IOT Edge的设备:

     

  3. 创建完成后,点击设备,获取设备ID,设备密钥,连接字符串等等信息:

     

边界设备部署

  1. 实际上任何可以安装和运行docker的设备都可以作为边界设备来管理,在这个测试案例中,我们选择在Azure上部署一台Ubuntu 1604的虚拟机作为边界设备进行管理,创建过程和harbor服务器一样,不再赘述。

     

  2. 登录到IOT Edge设备,安装docker环境,安装pip,然后安装IOT Edge运行时:

sudo apt-get install python-pip

sudo pip install --upgrade pip

 

  1. 接下来我们将设备注册并连接到IOT Hub,需要用到之前创建设备时连接字符串:

    sudo iotedgectl setup --connection-string "HostName=myiothubdemo.azure-devices.cn;DeviceId=myiotedge;SharedAccessKey=p45q791E7KAaompZ5+HoyxAD6vfmNJMeR9OgznerWaI=" --nopass

    启动IOT Edge的运行时,本质上是一个docker的容器,可以使用docker ps来查看状态:

    sudo iotedgectl start

     

  2. 登录到容器注册表,需要在你的edge虚拟机上安装证书,然后使用docker login:

    sudo mkdir -p /etc/docker/certs.d/stevenrepo.chinanorth.cloudapp.chinacloudapi.cn/

    sudo cp ca.crt /etc/docker/certs.d/stevenrepo.chinanorth.cloudapp.chinacloudapi.cn/

    docker login stevenrepo.chinanorth.cloudapp.chinacloudapi.cn

     

     

  3. 添加注册表凭据到IOT Edge边缘设备,注册表服务器就是harbor服务器:

    sudo iotedgectl login --address stevenrepo.chinanorth.cloudapp.chinacloudapi.cn --username admin ---password PASSWORD

     

构建并发布你的IOT Edge端应用

我们来开发IOT Edge端应用基本的流程是:

  1. 本地开发构建edge端应用
  2. 使用Dockerfile打包成docker image
  3. 使用Docker tag命令标记你的image
  4. 推送image到你的私有容器注册表
  5. 通过IOT Hub在你的边界设备上部署应用

 

程序开发和使用Dockerfile打包的部分略去,以后有时间再讨论,本例通过在开发机上pull down演示的镜像microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview并将其推送到harbor私有容器注册表中,然后部署到物联网边界设备。

 

  1. 使用docker pull将你要部署的镜像拉到本地来:

    docker pull microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview

  2. 使用docker标记这个镜像:

    docker tag microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview stevenrepo.chinanorth.cloudapp.chinacloudapi.cn/myrepo/azureiotedge-simulated-temperature-sensor:2.0

 

注意:stevenrepo.chinanorth.cloudapp.chinacloudapi.cn是你的harbor服务器地址;myrepoharbor上你的项目名称;后面是imagetag

  1. 推送标记过的镜像到私有容器注册表:

    docker push stevenrepo.chinanorth.cloudapp.chinacloudapi.cn/myrepo/azureiotedge-simulated-temperature-sensor:2.0

     

  1. 配置你的IOT Hub上的设备部署,将你的应用部署到物联网边界设备,在Azure管理界面上,进入IOT Hub的IOT Edge设备管理,点击"Set Modules":

     

点击"添加",添加IOT Edge module,其中name你可以自己起个模块名字,Image URI是你私有容器注册表中镜像地址,例如stevenrepo.chinanorth.cloudapp.chinacloudapi.cn/myrepo/azureiotedge-simulated-temperature-sensor:2.0,点击保存,下一步,最后submit。

 

大约等待1分钟左右时间,可以看到你的模块mysensor已经部署成功,并处于"running"状态,说明你的容器已经被推送到了边界设备:

  1. 登录到你的边界设备,检查当前的Edge agent日志以及状态:

docker ps

 

查看edge agent日志,sudo docker logs edgeAgent,可以看到部署执行的命令:

查看我们部署的边界程序,可以看到他在持续不断的产生模拟数据,正常工作:

  1. 通过之前blog介绍的可以使用visual studio code免费的IOT Hub插件进行监控和管理,设置连接字符串后,我们可以看到当前部署的module,以及module发送到云端的消息:

     

问题故障排查

Azure IOT Edge在中国处于preview阶段,难免会又一些问题,出现问题时除了仔细检查配置,提交支持case之外,也可以自己做一些troubleshooting工作,因为edge端本身就是一个docker运行环境,很多相关的命令都可以来使用:

  1. 日志查看:无论是你的容器还时edge的运行时,都可以通过docker logs来查看问题,例如:

    sudo docker ps

    sudo docker logs -f edgeAgent

    sudo docker logs -f YOURCONTAINER

  2. 关于界面部署出现"Agent configuration format is invalid"错误

    在有些情况下,在界面部署会出现长期pending的情况,检查edgeAgent的日志会发现:

    解决办法:使用Azure CLI进行部署:

#设置环境为Azure 中国

az cloud set -n AzureChinaCloud

#登录

az login

 

azure cli必须是2.0.24以上版本才可以,az –version可以获得当前版本

 

添加IOT的扩展

az extension add --name azure-cli-iot-ext

 

下载例子配置文件: https://github.com/kingliantop/azurelabs/blob/master/IOTEdge/config.json

 

命令行执行部署即可:

az iot hub apply-configuration --device-id myedgedevice --hub-name myiotdemo --content ./config.json

以上是关于使用Harbor+Auzre IOT Edge构建智能边界的主要内容,如果未能解决你的问题,请参考以下文章

IoT 中心到 Azure Edge

Azure IOT Edge 设备能否连接到多个 Azure IOT Hub?

Windows主机上运行Azure IoT Edge的推荐方法

用于虚拟下游设备的 Azure IoT Edge 模块标识转换

Windows 上的边缘计算 Azure IoT Edge for Iinux on Windows

Azure IoT Edge ModuleClient 在另一个模块中调用直接方法