使用Harbor+Auzre IOT Edge構建智能邊界

在以前的文章中,我介紹瞭如何使用Azure Container Registry, IOT Edge, IOT Hub來構建智能邊界: node

然而在中國的Azure上面,ACR尚未落地,IOT Edge處於預覽階段,那麼咱們如何來構建IOT Edge環境暱?在中國部署和海外Azure上部署又有什麼不一樣暱?本文介紹如何使用開源的容器註冊表Harbor和Azure IOT Edge構建邊緣智能環境。 linux

咱們使用開源軟件Harbor做爲分發和保存咱們docker image的私有容器註冊服務器。Harbor是由VMware開發,基於Apache 2 license受權的開源軟件。Harbor提供了良好的性能,企業級的安全和身份管理,漏洞掃描和檢測,基於角色的權限管理,圖形化界面支持等高級特性,很是適合企業級用戶使用。 git

Azure上Harbor的安裝配置

  1. 在Azure上建立一臺Ubuntu 1604的虛擬機,實際上對Harbor來講,任何支持Docker的Linux虛擬機物理機均可以:

配置DNS name github

  1. 建立完成後,使用ssh登陸到虛擬機,安裝最新的docker以及docker-compose:

    $sudo apt-get update docker

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

ca-certificates curl \ api

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,而後能夠新建項目或者用戶:

相關文章
相關標籤/搜索