本文基于docker-compose进行容器编排
一、Harbor 说明
Habor 是在 Docker Registry 上进行了相应的企业级扩展特性,包括:管理用户界面,基于角色的访问控制 ,AD/LDAP 集成以及审计日志等,更适合实际环境使用 官方文档:https://github.com/goharbor/harbor/tree/master/docs
二、规划高可用方案:
- 双主复制:通常用来做镜像同步及大规模发布,仍然避免不了单点故障;
- 多 harbor 实例共享存储:使用 nas 共享存储数据,公用 redis 实现 session 共享,公用 postgsql(1.6 版本以上更换数据库存储为 pgsql)实现数据库共享;
- 部署在 k8s 中:我们当前集群没有可靠的分布式存储方案,存储故障恢复比较麻烦;
三、实施高可用方案(此处使用第二种方案 - 多 harbor 实例共享存储):
最新版 harbor 着重推荐 docker 或 k8s 容器化部署,官方没有提供具体的高可用实施,网上也资料全是 1.6 以下版本的方案(harbor 在 1.6 版本有过重大升级:数据库由 MySQL 更换为 pgSQL,配置文件由 harbor.cfg 升级为 harbor.yml,相关目录同步变更),这里摸索进行。
架构图为:
实施流程如下:
- 下载离线安装包:
wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.1.tgz
- 提前部署好 redis、pgsql、挂载好 nas(挂载到宿主机的/data 目录)
- redis 设置好密码:
xxx
- pgsql 创建专用用户 harbor:
create user harbor with password 'xxx';
- pgsql 创建数据库:harbor_core、harbor_clair、harbor_notary_server、harbor_notary_signer
(示例:
create database harbor_core owner harbor;
随后 harbor 安装时会自动初始化表) ============== 以下操作需要在 2+个 harbor 实例中都执行操作 ===========
- redis 设置好密码:
- 安装 docker-ce、docker-compose(此处不作详述)
- 解压安装包:
tar -zxf harbor-offline-installer-v1.8.1.tgz
- 进入 harbor 目录,修改配置文件 harbor.yml:主要设置 hostname、相关 password、external_database、external_redis 等几处信息;
- 如果要启用 https,还需要修改 https 相关配置并指定证书配置,修改完 harbor.yml 后执行:
./prepare
为 Harbor 生成配置文件; - 如果要在已经运行的 Harbor 中启用 https,需要:修改 harbor.yml 、执行
./prepare
为 Harbor 生成配置文件,并重启 harbor
- 如果要启用 https,还需要修改 https 相关配置并指定证书配置,修改完 harbor.yml 后执行:
- 执行安装:
./install.sh
- 状态维护
- 停止:
docker-compose down -v
- 启动:
docker-compose up -d
- 停止:
- 安装完成后设置域名解析即可通过域名访问 Harbor 的控制台页面