harbor被扫出了漏洞,需要升级新版本

正好也想看看有没有新功能,借此机会升级下

其实harbor官网的相关文档非常详细了,跟着说明,基本都是无脑操作

官网地址:https://goharbor.io/docs/2.8.0/administration/upgrade/

根据文档介绍得知:harbor的升级策略是隔两个版本升级

从官网得知升级路线为: v1.10.x   -->  v2.4.0  -->   v2.6.0  --> v2.8.0

我的版本是v2.1.0 依次升级三个版本

我这里采用离线包的升级方式,离线包的下载地址为:https://github.com/goharbor/harbor/releases

找到对应的版本,在assets里面就能下载

harbor 设置密码 harbor 登录_harbor 设置密码

下载地址:

https://github.com/goharbor/harbor/releases/download/v2.4.0/harbor-offline-installer-v2.4.0.tgz      # harbor-V2.4.0
https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-offline-installer-v2.6.0.tgz      # harbor-V2.6.0  
https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-offline-installer-v2.8.0.tgz      # harbor-V2.8.0

 

升级步骤:

1.进入harbor安装目录,关闭harbor

这里的 down 不仅关闭,也删除了旧harbor容器

cd harbor
docker-compose down

2.备份harbor当前目录,便于回滚

cd ..
mkdir -p /my_backup_dir
mv harbor /my_backup_dir/harbor

3.备份数据库,默认情况下为 /data/database,是否为默认地址可以查看harbor.yml 配置文件

cp -r /data/database /my_backup_dir/

4.上传解压harbor离线安装包,并用docker load -i 加载

把harbor离线安装包上传到之前harbor安装目录的上层目录,之后解压

tar zxf <offline package>
docker image load -i harbor/harbor.[version].tar.gz

5.复制配置文件,并升级

这里要好好说明下,harbor所有配置全部在harbor.yml 里面配置,包括日志路径,登陆密码,连接地址,数据库密码,ssl配置,trivy安全扫描等

你想要了解的所有细节全在里面,这个文件要仔细看看

还有如果升级版本跨度过大,还是推荐用新配置文件,然后从旧配置文件中提取关键参数,逐个替换的方式,这样配置最全

当然如果升级失败,harbor升级是由harbor-core来负责,可以查看harbor-core的日志

从harbor.yml可以看出,日志路径为  /var/log/harbor/core.log

#进入harbor安装目录(解压后的目录)
cd /harbor
#复制模板文件
cp harbor.yml.tmpl  harbor.yml
#按备份完旧文件的参数逐个修改
cat /my_backup_dir/harbor/harbor.yml
vi harbor.yml
运行初始化命令
docker run -it --rm -v /:/hostfs goharbor/prepare:v2.4.0 migrate -i /harbor安装目录/harbor.yml

执行完这步后,会在 /harbor安装目录/common/config 生成配置文件 

 

6.在安装目录,执行安装命令

./install.sh

 

回滚步骤类似,可以参考官方文档:https://goharbor.io/docs/2.4.0/administration/upgrade/roll-back-upgrade/

 

至此升级了一个版本,后面按相同步骤依次升级到2.6和2.8即可

 

升级过程中遇到的问题:

当执行最后安装命令时报错

error while removing network: network harbor_harbor id 144d9ccaeacd8d0135c5a459b03a0668891ffee9a2a74ad0a88d7dda41844660 has active endpoints

harbor 设置密码 harbor 登录_docker_02

 

 

这个报错是说 harbor_harbor 网络仍然在活动,不能删除

本来找到一篇文章,感觉很合理,解除和他关联的容器不就不活动了嘛


docker network ls
docker network inspect harbor_harbor
docker network disconnect -f harbor_harbor harbor-core

执行到第二步傻眼了,我这根本就没关联上容器啊

harbor 设置密码 harbor 登录_docker_03

 

百思不得其解,docker network rm 手动删除也报同样的错

后来抱着死马当活马医的想法,重启一下docker试试,最后解决了

systemctl restart docker

 

所以,重启yyds