Harbor与Nexus一样可用用于构建企业级的镜像私库,但是与Nexus不同的是Harbor的策略是完全聚焦于镜像私库,对于Maven/Npm等私库的管理未做任何涉及。因为Harbor完全是在Registry上的封装,目前比Registry功能主要的强化在于:
- 提供UI界面
- 提供基于角色管理的用户权限
- 提供用户操作记录审计确认
- 提供镜像
- 提供对Helm Chart等的支持
概要信息
项目 | 说明 |
---|---|
官网 | https://goharbor.io/ |
开源/闭源 | 开源 |
License类别 | Apache License 2.0 |
代码管理地址 | https://github.com/goharbor/harbor |
开发语言 | go typescript |
当前稳定版本 | 1.5.2 |
更新频度 | 平均每月2次 |
注:开发语言可以看到是go和typescript,后端主要是使用beego的框架进行的go语言开发,而前端则是利用angular的cli框架进行的开发。
之前版本的Harbor
在2016年我曾经对Harbor的早期版本的使用方式做过记录,有兴趣的看一下。
版本 | 说明 |
---|---|
0.4.1 | https://blog.csdn.net/liumiaocn/article/details/52862408 |
0.3.0 | https://blog.csdn.net/liumiaocn/article/details/52244749 |
特点
优势 | 详细说明 |
---|---|
效率 | 搭建组织内部的私有容器Registry服务,可显著降低访问公共Registry服务的网络需求。这个基本上所有的镜像私库都能做到这一点。 |
访问控制 | 提供基于角色的访问控制,可集成企业目前拥有的用户管理系统(如:AD/LDAP)。 |
审计 | 所有访问Registry服务的操作均被记录,便于日后审计。这个是个不错的特性。 |
管理界面 | 具有友好易用图形管理界面,使得操作更加容易 |
镜像复制 | 在实例之间复制镜像。 |
国际化 | 支持多种语言的实时切换 |
镜像安全扫描 | 这个的确是一个很好的特性,安全是容器云需要考虑的重要因素之一,而镜像仓库由于它对与镜像近水楼台的得天独厚的优势,harbor集成了clair的镜像扫描功能为其功能增色不少 |
其他特性
目前1.6.0-rc1中可以看到已经增加了对CNCF的Helm chart的支持,等版本稳定之后我们将再继续跟进和确认。
安装方式
harbor提供二进制安装包和源码编译两种方式,二进制安装包又分离线安装包和在线安装包两种。离线安装包把所有的需要用到的镜像都docker save到了一个tar文件中,在安装的时候在harbor的自动化脚本中使用docker load一次性的load进来。
安装
依赖事项
类型 | 依赖 | 说明 |
---|---|---|
硬件资源 | CPU | 最小2CPU,推荐4CPU |
硬件资源 | 内存 | 最小4G,推荐8G |
硬件资源 | 硬盘 | 最小40G,推荐160G |
软件资源 | python | 2.7以及以上 |
软件资源 | docker | 1.10以上 |
软件资源 | docker-compose | 1.6.0以上 |
软件资源 | openssl | 建议最新版本 |
网络端口 | 80 | http方式下的UI和API访问 |
网络端口 | 443 | https方式下的UI和API访问 |
网络端口 | 4443 | Notary方式时需要 |
安装步骤
Harbor提供了一键安装脚本install.sh基本上,下载安装包后就只是需要三步
步骤 | 说明 |
---|---|
步骤1 | 解压安装包:tar xvpf harbor-offline-installer-v1.5.2.tgz |
步骤2 | 设定harbor.cfg: cd harbor; vi harbor.cfg |
步骤3 | 以前安装并启动harbor:sh install.sh |
设定harbor.cfg
最简单的设定方式是设定一下hostname即可,但是整个harbor.cfg是用户直接接触到的唯一接口,harbor直接开放出来的设定均在此设定文件可进行设定:
required设定
此种类型参数特点是需要在设定文件中设定。生效的方式在修改后需要重新执行install.sh进行Harbor的重新安装。
设定项 | 说明 | 缺省值 | 备注 |
---|---|---|---|
hostname | IP或者可以转化为IP的FQDN | reg.mydomain.com | 必须设定, 安装时会确认使用者是否修改了reg.mydomain.com |
ui_url_protocol | http/https | http | 安装时使用Notary,此处必须使用https |
db_password | Harbor使用Mysql(Mariadb)进行数据存储,此项设定为root用户的密码,在使用db_auth的方式也会使用 | root123 | 生产环境建议修改 |
max_job_workers | 复制服务是可并行的worker数目 | 3 | 建议根据CPU等资源的能力进行设定 |
customize_crt | token设定 | on | 设定为on时,python的prepare脚本在安装时会创建root的证书作为私库的token。如果需要使用外部提供的token时可设定为off |
ssl_cert | SSL证书路径 | /data/cert/server.crt |