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

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 python

sudo pip install --upgrade pip git

 

  1. 接下来咱们将设备注册并链接到IOT Hub,须要用到以前建立设备时链接字符串:

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

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

    sudo iotedgectl start json

     

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

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

    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 app

     

构建并发布你的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

相关文章
相关标签/搜索