Harbor(https://goharbor.io)是一个企业级的容器镜像仓库管理系统,用于为企业级用户建立私有的容器镜像库,一方面可以对内部安装的网络传输加速,另一方面提供自己特有的版本更好地保证可用性和安全性。Harbor原来由VMWare China开发,全部开源。
1、Harbor的重要变化
Harbor最近发布了1.6版本,将会带来一些非常重要的变化。
该版本开始支持Helm Chart的管理,不过这个用Github本来就可以做的很好,只不过这里采用了图形界面,还是非常方便普通的使用者,尤其是中小企业的准专业人员。
Har未来将会移交到CNCF管理,成为云原生基础设施的一部分。目前已经接收CNCF的一些赞助资源,并且项目架构和代码都已经开始了调整。这将是云原生社区的一个重大利好,补充了云原生架构中除了Kubernetes容器编排管理外的重要部分。
- Harbor项目官方网站,https://goharbor.io 。
- 最新的Harbor项目地址,https://github.com/goharbor/ 。
- 参数设置,https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
2、Kubernetes中部署Harbor
在Harbor 1.6版本中,Helm Chart项目已经改变,移到了 https://github.com/goharbor/harbor-helm 子项目中。目前,开发调整还比较频繁,可能出现使用上的问题,需要关注项目发展、及时更新代码。出现的问题可以去提交issue,帮助项目完善。
- 预先拉取容器镜像:
# 界面服务
docker pull goharbor/harbor-ui:dev
docker pull goharbor/harbor-adminserver:dev
docker pull goharbor/harbor-portal:dev
docker pull goharbor/harbor-jobservice:dev
# 授权管理
docker pull goharbor/clair-photon:dev
docker pull goharbor/notary-server-photon:dev
docker pull goharbor/notary-signer-photon:dev
# 镜像服务
docker pull goharbor/registry-photon:dev
docker pull goharbor/harbor-registryctl:dev
docker pull goharbor/chartmuseum-photon:dev
# 镜像存储
docker pull goharbor/harbor-db:dev
docker pull docker.io/bitnami/redis:4.0.9
- 部署步骤如下:
# 复制部署代码。
git clone https://github.com/goharbor/harbor-helm
# 选择版本。
cd harbor-helm
git checkout master
# 可以进去修改values.yaml文件里面的参数。
# 参数参考:https://github.com/goharbor/harbor-helm
helm dependency update
# 安装到harbor命名空间下面。
helm install --namespace harbor --name harbor .
# !如果错误或者是不需要了,进行删除。
# helm delete --purge harbor
原来的一些部署方法可能不再适用,仅供参考:
- Kubernetes镜像仓库-Harbor的Helm部署
- 在Kubernetes集群上部署高可用Harbor镜像仓库
- Ubuntu安装私有Docker Hub服务Harbor
- 配置Harbor私有Docker镜像服务使用HTTPS
- Harbor的Docker镜像存储路径修改
- 添加CA根证书到操作系统获得信任
Harbor 1.6 已经支持helm 私服仓库了,还是比较方便的。
我采用上面的方法部署,遇到一些小坑。
- 采用Rook部署,后来StorageClass rook-ceph-block创建pvc可以成功,但是挂载时失败。这个可能是Ceph的原因。
- 采用NFS部署,全部成功(修改chart/chartmuseum里的local"为local后)。但是,登陆时页面显示有错误。使用admin/Harbor12345登陆反馈无效的用户名和密码。注册新用户无法激活确认按钮。
- 估计这些都是项目调整中的问题,等过段时间将会迎来一个全新的Harbor,目前保持耐心。
3、常规的直接部署
如果上面的方法部署不成功,又着急使用的话,Harbor也支持常规部署,已经有了长时间的考验。
该方式将Harbor安装在Docker环境下,不使用Kubernetes进行管理。
A、安装
- 下载在线安装包。
https_proxy=192.168.199.99:9999 wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-online-installer-v1.6.0.tgz
- 配置harbor部署参数。
harbor.cfg 文件
- 目前主要配置hostname,使用自己服务器的ip即可。
- 更多的参数设置,参见 https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
- 生成docker-compose file。
sudo ./install.sh --with-clair --with-chartmuseum
B、使用
- 登陆
- 使用浏览器打开相应的IP地址。
- 默认密码 admin/Harbor12345。