使用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

相關文章
相關標籤/搜索