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

Posted StevenLian

tags:

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

在之前的文章中,我介绍了如何使用Azure Container Registry, IOT Edge, IOT Hub来构建智能边界:

然而在中国的Azure上面,ACR还没有落地,IOT Edge处于预览阶段,那么我们如何来构建IOT Edge环境昵?在中国部署和海外Azure上部署又有什么不同昵?本文介绍如何使用开源的容器注册表Harbor和Azure IOT Edge构建边缘智能环境。

我们使用开源软件Harbor作为分发和保存我们docker image的私有容器注册服务器。Harbor是由VMware开发,基于Apache 2 license授权的开源软件。Harbor提供了良好的性能,企业级的安全和身份管理,漏洞扫描和检测,基于角色的权限管理,图形化界面支持等高级特性,非常适合企业级用户使用。

Azure上Harbor的安装配置

  1. 在Azure上创建一台Ubuntu 1604的虚拟机,实际上对Harbor来说,任何支持Docker的Linux虚拟机物理机都可以:

配置DNS name

  1. 创建完成后,使用ssh登录到虚拟机,安装最新的docker以及docker-compose:

    $sudo apt-get update

$sudo apt-get install apt-transport-https \\

ca-certificates curl \\

software-properties-common

 

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

 

$ sudo add-apt-repository \\

"deb [arch=amd64] https://download.docker.com/linux/ubuntu \\

$(lsb_release -cs) \\

stable"

 

$ sudo apt-get update

 

$ sudo apt-get install docker-ce

 

为了让当前用户也可以不使用sudo使用docker,运行以下命令:

sudo usermod -aG docker $USER

 

安装最新的docker-compose:

sudo curl -L

https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

 

sudo chmod +x /usr/local/bin/docker-compose

登录出系统,然后重新登录,运行以下命令测试当前版本和docker:

$docker version

$docker-compose version

 

  1. 下载安装harbor,最新的版本是1.5,由于体积比较大,加上网络问题,国内的用户建议从国内的镜像站点下载:

原始发布版本地址:https://github.com/vmware/harbor/releases

国内下载安装:

wget http://harbor.orientsoft.cn/harbor-v1.5.0/harbor-offline-installer-v1.5.0.tgz

 

  1. 解压缩下载的文件,进入harbor目录,其中最为重要的文件就是harbor.cfg文件

    $ tar -xzvf harbor-offline-installer-v1.5.0.tgz

  2. 企业级别的用户使用容器注册表,安全是最基本的要求,所以我们需要打开https,并进行自定的证书签发等工作,这个部分比较复杂,稍不小心就容易做错,下面是具体步骤,作为参考:

A.创建一个cert目录:mkdir cert

B. 创建CA证书,请注意Common Name部分必须完整的写上你之前配置的DNS名称,不要乱写:

openssl req \\

-newkey rsa:4096 -nodes -sha256 -keyout ca.key \\

-x509 -days 365 -out ca.crt

C.生成签名请求证书:

 

openssl req -newkey rsa:4096 -nodes -sha256 -keyout stevenrepo.chinanorth.cloudapp.chinacloudapi.cn.key -out stevenrepo.chinanorth.cloudapp.chinacloudapi.cn.csr

 

D. 生成你的容器注册表的签名:

openssl x509 -req -days 365 -in stevenrepo.chinanorth.cloudapp.chinacloudapi.cn.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out stevenrepo.chinanorth.cloudapp.chinacloudapi.cn.crt

 

E.拷贝证书并更新系统证书

sudo cp ca.crt stevenrepo.chinanorth.cloudapp.chinacloudapi.cn.crt /usr/local/share/ca-certificates/

sudo update-ca-certificates

 

F.拷贝证书到Docker的证书目录,并重新启动Docker

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/

sudo systemctl restart docker

 

  1. 进入到harbor目录,修改关键的harbor.cfg文件,最为关键的部分需要修改:

    修改hostname以及SSL证书地址:

    对于容器注册表的存储部分,你可以使用默认的文件系统,也可以将将所有的images放在Azure Storage上面,因为Azure Storage数据默认保存3份,是持久化的,即使万一harbor主机挂掉了,你的docker image也不会丢,配置存储在harbor.cfg的末尾部分:

 

registry_storage_provider_name设置为azure

registry_storage_provider_config设置你的账号名称,密码,容器,需要注意的是:

  1. keyvalue之间一定要注意,需要有一个空格,负责会报错
  2. 必须添加realm属性,负责会自动连Azure global,会报错,所以例子配置如下(注意空格):

    registry_storage_provider_config = accountname: repodocker, accountkey: YOURPASSWORD, container: images, realm: core.chinacloudapi.cn

如果需要完整的azure配置信息,可以参考:

https://github.com/docker/docker.github.io/blob/master/registry/storage-drivers/azure.md

 

  1. 保存harbor.cfg文件修改,执行安装操作:

$ sudo ./install.sh

 

安装完成后,检查harbor服务是否都正常启动,如果有任何问题,请参考/var/log/harbor日志文件进行debug:

  1. Harbor对一些端口要求你要开放出来,具体端口见下表,在Azure上可以通过修改NSG的配置来开放这些端口:

进入到portal.azure.cn找到你的虚拟机的网络,网络安全组,添加入站规则:

例如添加80端口如下,一次类推,添加80,443, 4443(可选)端口:

  1. 登录到harbor并做基础配置,登录到你的harbor UI,地址是你的dns name,然后可以新建项目或者用户:

以上是关于使用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 在另一个模块中调用直接方法