Azure Lei Zhang的博客

weibo: LeiZhang的微博/QQ: 185165016/QQ群:319036205/邮箱:leizhang1984@outlook.com/TeL:139-161-22926

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  《Windows Azure Platform 系列文章目录

 

  最近遇到一个客户需求,客户的镜像参考保存在IDC侧的Harbor上,需要通过Harbor同步到Azure Container Registry (ACR)里。

  

  Harbor介绍:

  Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

 

  Harbor特性:

  1. 基于角色的访问控制 :用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
  2. 镜像复制 : 镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
  3. 图形化用户界面 : 用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
  4. AD/LDAP 支持 : Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
  5. 审计管理 : 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  6. 国际化 : 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
  7. RESTful API : RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
  8. 部署简单 : 提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。

 

  Harbor组件:

  1. harbor-adminserver:harbor系统管理接口,可以修改系统配置以及获取系统信息
  2. harbor-db:存储项目的元数据、用户、规则、复制策略等信息
  3. harbor-jobservice:harbor里面主要是为了镜像仓库之前同步使用的
  4. harbor-log:收集其他harbor的日志信息。rsyslogd
  5. harbor-ui:一个用户界面模块,用来管理registry。主要是前端的页面和后端CURD的接口
  6. nginx:harbor的一个反向代理组件,代理registry、ui、token等服务。这个代理会转发harbor web和docker client的各种请求到后端服务上。是个nginx。nginx负责流量转发和安全验证,对外提供的流量都是从nginx中转,它将流量分发到后端的ui和正在docker镜像存储的docker registry
  7. registry:存储docker images的服务,并且提供pull/push服务。harbor需要对image的访问进行访问控制,当client每次进行pull、push的时候,registry都需要client去token服务获取一个可用的token。
  8. redis:存储缓存信息
  9. webhook:当registry中的image状态发生变化的时候去记录更新日志、复制等操作。

 

  安装Harbor:

  1.在Azure上准备一台虚拟机,操作系统为Ubuntu 16.04。步骤略。

  把Azure虚拟机的公网DNS地址修改一下,我们选择公网IP地址,修改DNS Name。如下图:

 

  2.创建完毕后,SSH登录到这台虚拟机上,首先我们安装Docker

sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add 

sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update
sudo apt install -y docker-ce

  3.安装Docker Compose

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

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

  4.安装Harbor

wget https://storage.googleapis.com/harbor-releases/release-2.4.0/harbor-online-installer-v2.4.0.tgz

tar zxvf harbor-online-installer-v2.4.0.tgz -C /usr/src/
cd /usr/src/harbor

cp harbor.yml.tmp harbor.yml
vim harbor.yml

  编辑harbor.yml的时候,修改hostname为Azure DNS Name,注释https部分内容

 

  5.在SSH中,去除多余的注释和空行,配置文件如下

cat harbor.yml |grep -v "^#"|grep -v "  #"|grep -v "^$"

  6.之后直接执行:

./install.sh

  7.如果出现以下提示,则表示安装成功

  8.我们访问页面 http://leiharborserver.chinanorth3.cloudapp.chinacloudapi.cn/

  使用默认的登录名: admin,密码: Harbor12345,进行登录

  

  

  9.登录成功之后,效果如下:

 

 

  测试客户端推送:

  1.本地笔记本电脑已经安装了Docker Desktop

  2.因为在Harbor只设置了HTTP,没有启用HTTPS,所以需要进行配置。我们打开Docker Desktop的settings,修改insecure0regustrues。如下图:

  

  3.打开CMD,运行以下命令登录仓库,登录名: admin,密码: Harbor12345

docker login leiharborserver.chinanorth3.cloudapp.chinacloudapi.cn
Username: admin
Password: 

  4.下载一个nginx镜像:

docker pull nginx

  5.给镜像打tag

docker tag nginx:latest leiharborserver.chinanorth3.cloudapp.chinacloudapi.cn/library/nginx:v1.0

  6.把本地镜像推送到Harbor上

docker push leiharborserver.chinanorth3.cloudapp.chinacloudapi.cn/library/nginx:v1.0

  7.推送完毕后,我们登录Harbor,可以查看到之前的镜像

 

  设置Harbor到Azure Container Registry (ACR)的同步:

  1.我们首先查看Azure ACR里的配置,如下图:

  把下图的Login Server,Username和password复制好。

  

 

  2.接下来,我们需要把Harbor上的镜像同步到Azure Container Registry里,我们点击系统管理,仓库管理,新建目标。如下图:

  

  3.把上面的Azure ACR里的Login Server,Username和password信息,复制到下图里。点击测试连接。

  

 

  4.保存上面的新建目标。设置结果如下图:

  

 

  5.在Harbor里,点击复制管理。如下图:

  触发模式,我们选择手动

  

 

  6.配置完毕后,我们点击下图的复制按钮:

  

 

  7.复制任务显示为成功

  

 

  8.我们点击https://portal.azure.cn/,可以查看到harbor的镜像已经同步到Azure ACR了。如下图:

  

 

 

  

posted on 2022-04-12 13:06  Lei Zhang的博客  阅读(411)  评论(0编辑  收藏  举报