Demo环境私有容器镜像仓库Harbor升级过程记录

Demo环境私有容器镜像仓库Harbor升级过程记录

在某朵月底即将随风飘散的云中,我搭建有一个Kubernetes环境,一个容器Demo环境。前段时间,看到VMware公司对其开源Docker镜像仓库实现Harbor做了许多升级,尤其增加了对镜像安全漏洞的扫描,因此就尝试着升了下级,现在整理下当时粗略记录的过程步骤。

因公司面向的主要客户目前对应用容器化还没有需求,对微服务的需求还集中于求业绩亮点,所以对容器及容器平台没有强烈需求,只做为技术探索及方案储备来源的Demo环境存在,因此下面描述的部署方案可能不够严谨,见谅!

Harbor简介

上面已经提到Harbor是开源的容器镜像仓库实现,它对Docker官方提供的Registry做了企业化功能扩展与增强,主要的特点包括 :

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

具体的请参见其在GitHub上的文档:here,它的架构组成如下图:

Proxy:反射代理,将请求路由到相应功能模块,由Nginx实现;Registry:存储镜像并处理docker pull/push命令,与token服务交互控制访问权限,由Docker官方Register实现;UI:核心服务组件,Harbor的主要组成部分;Database:存储有关项目、用户、角色、复制策略与镜像元数据;Job Servers:最初版本中完成镜像复制任务,后面又增加了镜像安全漏洞描述任务;Log collector:这个就不用细说了吧,日志模块,以syslog服务形式收取其他模块日志内容,落地持久化。

部署方案

在我原有的Demo环境中,在两只虚拟机上各布置了一套Harbor,从其中一个Harbor向另一个Harbor做镜像复制,以防虚拟机意外损毁丢失镜像,正因为是个Demo环境,也就根本没有考虑太多其他高可用,只是利用Harbor默认的docker-compose配置脚本在每只虚拟机上启动全套的组件。
这里写图片描述
当初布置的版本中,并不包含镜像安全漏洞描述功能,这次升级主要是想体验下这个功能。当正视此功能时,才发现需要联接互联网获取安全漏洞元数据。也就是Clair需要联网,Clair也是个开源实现,Harbor集成进来实现安全漏洞描述功能:
这里写图片描述
而在布置Demo环境的这朵云上,默认是不开启互联网,整个环境中,只有一只虚拟机开启了连接互联网的权限,但,不是布置Harbor的两只虚拟机之一。为解决这个问题,考虑将Clair组件单独部署到那只能连接互联网的虚拟机上,在整个部署尝试中采用了两种方式:
1. Docker Swarm方式
Harbor 1 与 Clair 节点 组成docker Swarm集群,指定Clair应用及数据库部署在能连接外网的节点,指定Harbor原有组件部署在原有节点;
2. 容器端口宿主机暴露方式
Clair应用及数据库端口暴露成主机端口,Harbor 2的组件,通过暴露的端口连接Clair,需要Clair应用与数据库地址以Harbor指定的主机名引入容器/etc/hosts文件。
这里写图片描述

部署操作步骤

升级Harbor

升级主要过程参照于Harbor官方文档:migration_guide

  • 在原部署Harbor的节点上,拖取已经在私有仓库里准备好的Harbor升级镜像
work> docker pull oracle-1.udmp.git.com.cn/vmware/harbor-db-migrator:1.3

准备升级到哪一个版本,就准备那个版本的升级镜像,我准备升级到Harbor 1.3,就准备了harbor-db-migrator:1.3

  • 停止并备份Harbor

    work> cd harbor
    work> docker-compose down 
    work> cd ..
    
    work> mv harbor harbor_bak
  • 备份MySQL数据库数据

    work> docker run -ti --rm -e DB_USR=root -e DB_PWD=root123 -v /data/database:/var/lib/mysql -v /home/work/harbor_bak/db_backup:/harbor-migration/backup oracle-1.udmp.git.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值