0 [Harbor User Case] (Chinese Version) 使用Harbor Azure IOT Edge构建智能边界
Jonas Rosland edited this page 2019-03-20 11:09:44 -04:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Please view this with Chrome or FireFox, Safari does not work with the webp images.

作者: Steven Lian

在之前的文章中我介绍了如何使用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

  1. 企业级别的用户使用容器注册表安全是最基本的要求所以我们需要打开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设置你的账号名称密码容器需要注意的是

A. key和value之间一定要注意需要有一个空格负责会报错

B. 必须添加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端口如下一次类推添加80443 4443可选端口

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

将人工智能带到物联网边界(1)

将人工智能带到物联网边界(2)