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里面就能下载
下载地址:
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 network ls
docker network inspect harbor_harbor
docker network disconnect -f harbor_harbor harbor-core
执行到第二步傻眼了,我这根本就没关联上容器啊
百思不得其解,docker network rm 手动删除也报同样的错
后来抱着死马当活马医的想法,重启一下docker试试,最后解决了
systemctl restart docker
所以,重启yyds