harbor 仓库迁移升级
版本 v1.8.0 v2.3.5
harbor仓库安装
环境准备:安装docker详见:docker 的介绍和部署,并下载docker-compose详见:docker 三剑客compose。
现有支持的安装harbor仓库的方式有两种,一种是离线安装,一种是在线安装。
wget https://github.com/goharbor/harbor/releases/download/v2.3.5/harbor-offline-installer-v2.3.5.tgz
## 离线安装详见:docker仓库
wget https://github.com/goharbor/harbor/releases/download/v2.3.5/harbor-online-installer-v2.3.5.tgz
#在线安装
此次由于网络是良好的,直接选择在线安装:
先将下载好的在线安装包解压至/usr/local/harbor
下;
将提供的模板 harbor.yml.tmpl 复制为 harbor.yml ,并根据需求进行修改;
5 hostname: reg.mydomain.com #设定自己的域名,此处先不要和旧仓库同名,不然在后续从旧仓库进行数据同步时连接会有报错
8 http: #选择是否开启80端口
9 #port for http, default is 80. If https enabled, this port will redirect to https port
10 port: 80
12 #https related config
13 https: #选择是否开启443端口,如果开启443端口,需要配置nginx认证文件和key;
15 port: 443
16 #The path of cert and key files for nginx
17 certificate: /your/certificate/path
18 private_key: /your/private/key/path
34 harbor_admin_password: Harbor12345 #设定harbor仓库登录的密码
47 data_volume: /data #设定仓库数据挂载目录
- 初始化准备,在当前目录下执行命令 ./prepare 来使修改的文件生效;并生成 docker-compose.yml文件。Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。
- 开始安装,在当前目录执行命令 ./install.sh --help 来查看安装可以选择的插件;其中包括 --with-notary (公正服务)、–with-trivy (漏洞扫描器)、–with-chartmuseum (图表支持) ,根据需要选择需要的插件来进行安装。
- 检测,等所有镜像下载完成之后,在当前目录执行命令 docker-compose ps 查看所有容器的状态,当都起来之后,便可根据自己设定的域名或IP:端口进行访问。然后本地进行上传和下载镜像的测试。当遇到登录问题是,需要在在docker 中加入非安全仓库的信息,然后重启docker服务。
数据传输
在仓库管理处,新建目标。在新建目标时可能会报错,如果是域名的问题,需要进入 harbor-core 和 harbor-jobservice 中添加本地解析;报错日志可以在harbor.yaml文件中指定的日志目录下的core.log中查看具体报错原因。
同步数据,选择新仓库拉旧仓库的镜像,此处要选择刚才添加的目标。
仓库切换
- 在数据传输完之后,需要将harbor.yaml文件中的域名给改为和旧仓库一致;然后重新初始化,初始化完成之后在对应的目录用命令 docker-compose up -d 来启动服务;
- 查看当前镜像仓库是否和同步之前的一致;在本机先进行上传和下载镜像的测试;然后在所有的k8s节点测试;
修改所有k8s节点的hosts本地解析,将其执向转发的nginx来进行管理。
后续发现还是会有一定的流量会到旧的仓库去拉镜像,随后在旧仓库的服务器上关闭旧仓库,搭建了haproxy的代理,将所有请求旧仓库的流量转发到新的仓库。并在旧仓库上进行抓包,确定遗漏的没有改到解析的服务器,并进行更改,当抓包几日没有新的请求时,可以关闭代理,此次迁移完整结束。
抓包:tcpdump -nn -i any -s 0 tcp port 443 and dst host 旧仓库IP and ! host 新仓库IP