zoukankan      html  css  js  c++  java
  • 使用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,然后可以新建项目或者用户:

  • 相关阅读:
    tomcat9部署到nginx,不能通过nginx访问到tomcat
    解决Linux系统部署webapp,JavaMail 发送邮件javax.mail.MessagingException: 501 Syntax: HELO hostname问题
    先本地仓库中国添加jar包
    IDEA修改pom.xml文件不自动下载的问题
    JavaWeb路径的理解【加不加斜杠又何区别】
    IDEA好用的模板设置
    使用maven启动web项目报错
    MAVEN的学习(图片资源来自黑马程序员)
    option标签不支持单击事件
    immutable.js学习笔记(九)----- Range 与 Repeat
  • 原文地址:https://www.cnblogs.com/cloudapps/p/9085639.html
Copyright © 2011-2022 走看看