最近在尝试跨云服务商做备份,除了应用之外的基础设施也需要再启动一套仓库。正巧赶上 Harbor 发布 2.0,于是就有了这篇文章。

准备工作

我们需要准备应用安装目录,然后从官网仓库获取最近发布的稳定版:https://github.com/goharbor/harbor

校验安装文件

用于生产或开发环境的工具,安全性还是需要一定保障的。最基础的方式就是比对校验文件和我们所下载的文件的校验值是否一致。

使用 MD5 做基础校验

先从官网获取对应版本的 md5sum 文件。

然后使用 md5sum -c md5sum 来查看文件内容是否正确,如果正确,会显示下面的内容。

使用 GnuPG 进一步 验证文件签名

相比较 md5 校验值,GnuPG 签名检查更值得信赖。还是需要先获取校验文件:

获取完毕后,执行 md5sum -c md5sum 来查看文件内容是否正确。

接着获取签名的公钥:

最后使用 gpg --verify 对安装文件进行校验即可。

准备安装

离线安装包里包含了基本我们所需要的内容,解压缩后的内容如下:

编辑配置文件

复制默认模版文件 harbor.yml.tmpl 并重命名为 harbor.yml,并按照自己需求更新该配置文件。

默认配置文件如下:

一般情况下,我们最少需要配置的内容如下:

  • hostname 需要配置为 127.0.0.1 之外的内容,以提供外部访问,本例中我配置为: docker.soulteary.com
  • https 的配置需要同时配置证书,生产环境中,如果使用 SLB 或者使用其他应用统一提供 SSL 接入,则可以删除。
  • harbor_admin_password 默认密码即可,但是初次使用登陆后台后需要修改密码。
  • data_volume 根据自己实际情况修改宿主机的文件储存地址。

执行安装

修改完配置之后,使用 bash install.sh 进行应用安装。

可以看到安装脚本流程为:检查基础环境,然后将所需要的容器镜像导入,接着初始化配置,最后启动应用。

当应用启动完毕,访问之前配置好的域名, harbor 就安装完毕了。

搭配 Traefik 使用

关于 Traefik 的实战应用,之前已经写过不少文章,让 Harbor 结合 Traefik 一起使用也很容易。

修改 Harbor 容器编排配置

在执行 install.sh 之后,harbor 默认生成的配置如下:

我们需要修改三处:

  1. 添加全局外部网络
  2. 为 harbor Web 服务添加网络
  3. 声明 Traefik 配置

指定全局网络和 Harbor Web 服务网络只需要多几行声明即可。

而 Traefik 配置,参考我们之前的文章,也不难写出:

需要注意的是,如果你在过程中修改了 harbor.yml 配置,需要参考“重新安装”小节进行数据清理。

配合SLB 使用

前文提过,生产环境如果使用 SLB 或者使用其他应用统一提供 SSL 接入,那么这里的 Traefik 配置则要进行调整。

一切就绪后,使用 docker-compose up -d 启动即可。

顺利启动后,使用域名访问 harbor。

Harbor 登陆界面

在登陆界面使用用户名 admin 和之前 harbor.yml 中配置的密码登陆即可。

Harbor 默认控制后台

重新安装

当修改 harbor.yml 后,我们需要执行 bash prepare,让配置能够得到更新。当然,历史存在的容器 container 也需要清理,除了使用 docker rm 进行清理外,还可以使用 docker system prune 进行清理。

最后

接下来对 Nexus 仓库中容器镜像迁移 Harbor ,以及容器镜像安全管理 ,欢迎一起讨论沟通。

–EOF