本文基于docker-compose进行容器编排

公众号:yunops

一、Harbor 说明

Habor 是在 Docker Registry 上进行了相应的企业级扩展特性,包括:管理用户界面,基于角色的访问控制 ,AD/LDAP 集成以及审计日志等,更适合实际环境使用 官方文档:https://github.com/goharbor/harbor/tree/master/docs


二、规划高可用方案:

  1. 双主复制:通常用来做镜像同步及大规模发布,仍然避免不了单点故障;
  2. 多 harbor 实例共享存储:使用 nas 共享存储数据,公用 redis 实现 session 共享,公用 postgsql(1.6 版本以上更换数据库存储为 pgsql)实现数据库共享;
  3. 部署在 k8s 中:我们当前集群没有可靠的分布式存储方案,存储故障恢复比较麻烦;

三、实施高可用方案(此处使用第二种方案 -  多 harbor 实例共享存储):

最新版 harbor 着重推荐 docker 或 k8s 容器化部署,官方没有提供具体的高可用实施,网上也资料全是 1.6 以下版本的方案(harbor 在 1.6 版本有过重大升级:数据库由 MySQL 更换为 pgSQL,配置文件由 harbor.cfg 升级为 harbor.yml,相关目录同步变更),这里摸索进行。

架构图为:

harbor4.png

实施流程如下:

  1. 下载离线安装包:wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.1.tgz
  2. 提前部署好 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 实例中都执行操作  ===========
  3. 安装 docker-ce、docker-compose(此处不作详述)
  4. 解压安装包:tar -zxf harbor-offline-installer-v1.8.1.tgz
  5. 进入 harbor 目录,修改配置文件 harbor.yml:主要设置  hostname、相关 password、external_database、external_redis 等几处信息;
    1. 如果要启用 https,还需要修改 https 相关配置并指定证书配置,修改完 harbor.yml 后执行:./prepare  为 Harbor 生成配置文件;
    2. 如果要在已经运行的 Harbor 中启用 https,需要:修改 harbor.yml 、执行  ./prepare  为 Harbor 生成配置文件,并重启 harbor
  6. 执行安装:./install.sh
  7. 状态维护
    • 停止:docker-compose down -v
    • 启动:docker-compose up -d
  8. 安装完成后设置域名解析即可通过域名访问 Harbor 的控制台页面