6

Harbor版本升级(图文并茂)

 2 years ago
source link: https://blog.51cto.com/u_15331726/5261226
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Harbor版本升级(图文并茂)

推荐 原创

👨🏻‍🎓博主介绍:大家好!我是李大白,一名运维容器运维工程师,热爱分享知识🌟 

🌈擅长领域:云原生、数据库、自动化运维

🙏🏻如果本文章对小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏!

🤝如果在文章描述时如有错,恳请各位大佬指正,在此感谢!!!

🍂 落叶而知秋,博闻而强识!

📕  精品专栏:​ ​Harbor大白话(企业级)​

Harbor版本升级(图文并茂)_kubernetes


公司的Harbor还是几年前的版本,现在Harbor已经不维护之前的版本了,需要对harbor进行升级!

  • 旧的Harbor版本:1.8.6
  • 官方维护最低版本:1.10

通过查阅官方文档,V1.8.6版本可升级到v1.10版本,v1.10最高可到v1.10.10,但v1.10.10不支持迁移器。考虑到后期会继续升级到2.0版本,则可升级的版本为v1.10.7

Harbor版本升级(图文并茂)_运维_02

快速部署v1.8.6环境

本处使用离线安装的方式,详细操作见​ ​企业内网如何搭建安全的Harbor服务?(超详细)​

创建安装目录

[root@harbor01 ~]# mkdir /app/
[root@harbor01 ~]# cd /app/

下载安装包

wget https://github.com/goharbor/harbor/releases/download/v1.8.6/harbor-offline-installer-v1.8.6.tgz

解压安装包

[root@harbor01 app]# tar zxvf harbor-offline-installer-v1.8.6.tgz
harbor/harbor.v1.8.6.tar.gz # 镜像包
harbor/prepare
harbor/LICENSE
harbor/install.sh # 安装脚本
harbor/harbor.yml # 配置文件
[root@harbor01 app]# cd harbor/ #进入

修改配置文件

[root@harbor01 harbor]# vim harbor.yml
hostname: 192.168.2.250 #修改为主机IP
_version: 1.8.6 # 修改为当前版本号
#1.8.6版本默认不启用https,本处测试也不需要启用,仅需要修改上面两个地方!

将配置注入组件

该过程会将镜像包中的镜像导入主机

[root@harbor01 harbor]# ./prepare

Harbor版本升级(图文并茂)_运维_03

[root@harbor01 harbor]# ./install.sh
。。。

? ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at http://192.168.2.250.
For more details, please visit https://github.com/goharbor/harbor .

结果如图则安装成功!

Harbor版本升级(图文并茂)_云原生_04

查看服务状态

# docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
harbor-core "/harbor/start.sh" core running (healthy)
harbor-db "/entrypoint.sh post…" postgresql running (healthy) 5432/tcp
harbor-jobservice "/harbor/start.sh" jobservice running
harbor-log "/bin/sh -c /usr/loc…" log running (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal "nginx -g 'daemon of…" portal running (healthy) 80/tcp
nginx "nginx -g 'daemon of…" proxy running (healthy) 0.0.0.0:80->80/tcp
redis "docker-entrypoint.s…" redis running 6379/tcp
registry "/entrypoint.sh /etc…" registry running (healthy) 5000/tcp
registryctl "/harbor/start.sh" registryctl running (healthy)

Harbor版本升级(图文并茂)_云原生_05

服务正常!下面开始升级操作。

升级Harbor和迁移数据

停止Harbor

登录到 Harbor 主机,如果它仍在运行,请停止并删除现有的 Harbor 实例。

[root@harbor01 harbor]# cd /app/harbor/
[root@harbor01 harbor]# docker-compose down

Harbor版本升级(图文并茂)_docker_06

备份 Harbor 的当前文件,以便在必要时回滚到当前版本,防止升级失败。

[root@harbor01 harbor]# mkdir /harbor_backup/ # 创建备份目录
[root@harbor01 app]# cd /app/
[root@harbor01 app]# mv harbor /harbor_backup/
  • 备份数据库

默认情况下在目录中/data/database。你的harbor数据存放在哪就备份哪个数据。

[root@harbor01 app]# ls /data/
ca_download database job_logs psc redis registry secret
[root@harbor01 app]# cp -r /data/database /harbor_backup/

Harbor版本升级(图文并茂)_docker_07

下载升级的安装包

wget https://github.com/goharbor/harbor/releases/download/v1.10.7/harbor-offline-installer-v1.10.7.tgz

解压安装包到工作目录

# tar -zxvf harbor-offline-installer-v1.10.7.tgz -C /app/
# cd /app/harbor

导入新版镜像

[root@harbor01 harbor]# docker load -i harbor.v1.10.7.tar.gz
[root@harbor01 harbor]# docker images | grep 1.10.7

Harbor版本升级(图文并茂)_运维_08

修改配置文件

[root@harbor01 harbor]# vim harbor.yml
hostname: 192.168.2.250 # 修改为主机IP
#https: # 关闭https,本处测试,生产需要配置证书
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
_version: 1.10.7 # 修改为当前版本号
# 其它参数可根据自己的业务环境来配置(详细见主页文章的配置文件深度解析)

升级 Harbor 之前,请执行迁移,迁移工具作为 docker 镜像提供。您可以从 docker hub 拉取图像。

提供harbor-migrator迁移工具将旧版本的数据迁移到新版本,该工具在刚才“导入新版镜像”就将该工具的镜像导入了。

[root@harbor01 harbor]# docker images | grep migrator
goharbor/harbor-migrator v1.10.7 ea036a2a9e71 12 months ago 362MB
goharbor/harbor-migrator v1.8.6 6b29ddab6635 2 years ago 363MB

如果没有该镜像,可手动下载:

docker pull goharbor/harbor-migrator:1.10.7

升级harbor.yml文件

运行迁移工具的harbor-migrator:1.10.7镜像来升级harbor.yml文件

[root@harbor01 harbor]# docker run -it --rm -v ${harbor_yml}:/harbor-migration/harbor-cfg/harbor.yml goharbor/harbor-migrator:v1.10.7 --cfg up
WARNING: IPv4 forwarding is disabled. Networking will not work.
Please backup before upgrade,
Enter y to continue updating or n to abort: # 输入y继续更新

Harbor版本升级(图文并茂)_云原生_09

注意:

数据库的架构升级和数据迁移是在 Harbor 启动时由 core 执行的。如果迁移失败,请查看核心日志进行调试。

安装新的 Harbor 实例

在该./harbor目录中,运行./install.sh脚本以安装新的 Harbor 实例, 要使用 Notary、Clair 和 chartmuseum 等组件安装 Harbor,请参阅 运行安装程序脚本以获取更多信息。

[root@harbor01 harbor]# ./install.sh --with-clair --with-chartmuseum

Harbor版本升级(图文并茂)_docker_10

Harbor版本升级(图文并茂)_云原生_11

安装成功,然后需要检查各个组件的服务状态!

检查服务状态

[root@harbor01 harbor]# docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
chartmuseum "./docker-entrypoint…" chartmuseum running (healthy) 9999/tcp
clair "./docker-entrypoint…" clair running (healthy) 6060-6061/tcp
clair-adapter "/clair-adapter/clai…" clair-adapter running (healthy) 8080/tcp
harbor-core "/harbor/harbor_core" core running (healthy)
harbor-db "/docker-entrypoint.…" postgresql running (healthy) 5432/tcp
harbor-jobservice "/harbor/harbor_jobs…" jobservice running (healthy)
harbor-log "/bin/sh -c /usr/loc…" log running (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal "nginx -g 'daemon of…" portal running (healthy) 8080/tcp
nginx "nginx -g 'daemon of…" proxy running (healthy) 0.0.0.0:80->8080/tcp
redis "redis-server /etc/r…" redis running (healthy) 6379/tcp
registry "/home/harbor/entryp…" registry running (healthy) 5000/tcp
registryctl "/home/harbor/start.…" registryctl running (healthy)

Harbor版本升级(图文并茂)_kubernetes_12

各个组件的服务状态正常!

版本升级后如果异常,需要将版本回退到之前的版本操作:

停止Harbor

如果它仍在运行,请停止并删除当前的 Harbor 服务。

cd harbor
docker-compose down

删除当前的 Harbor 实例

$ cd ..
$ rm -rf harbor

恢复旧版本的 Harbor

$ mv /harbor_backup/harbor harbor

恢复数据库

要恢复数据库,请将备份目录中的数据文件复制到您的数据卷,默认情况下为/data/database,使用之前备份的数据来恢复数据。

$ cp /harbor_backup/database/ /data/database

重新启动 Harbor 服务

$ cd harbor
$ ./install.sh --with-clair --with-chartmuseum

登录Harbor UI

在浏览器登录harbor UI,查看UI界面是否有异常。

Harbor版本升级(图文并茂)_kubernetes_13

版本升级后的注意事项

版本升级后需要检查镜像是否丢失、用户使用是否正常。

  • 确认用户存在且可用(不需要 VIC 和 LDAP 模式)。
  • 确认用户具有正确的角色。
  • 确认标签存在且标签正确。(不需要 VIC)
  • 确认公证人签名正确。
  • 确认端点存在。
  • 确认复制规则存在并且运行良好。
  • 确认项目级别设置(公开、内容信任、扫描)与以前相同。
  • 确认系统级别设置(电子邮件令牌过期扫描)与以前相同。
  • 确认扫描结果与升级前相同。
  • 确认访问日志与升级前相同。
  • 确认存储库信息与以前相同。
  • 确认其他图像元数据(例如作者、大小)与以前相同。

脚本检测镜像数量是否减少

编写脚本

[root@Harbor_backup]# vim Harbor-image-list-100.sh
#!/bin/bash

#镜像清单文件,将获取到的镜像信息存到该文件中
File=harbor-images-`date '+%Y-%m-%d'`.txt

## 定义Harbor连接地址,这里需要改为你们自己的Harbor地址
Address=http://192.168.2.250:443

## 定义连接Harbor的用户名和密码(因为是获取全部的镜像,只有admin用户才有该权限)
Hamin=admin:Harbor12345

## 获取Harbor中有哪些项目(Project)
Project_List=$(curl -u "$Hamin" -X GET $Address/api/projects -H "Content-Type: application/json" | grep name | awk '/"name": /' | awk -F '"' '{print $4}')

for Project in $Project_List;do
# 循环获取每个项目下所有的镜像
Image_Names=$(curl -u "$Hamin" -X GET $Address/api/search?q=$Project -H "Content-Type: application/json" | grep "repository_name" | awk -F "\"" '{print $4}')
for Image in $Image_Names;do
# 循环获取每个镜像所有的标签(版本)
Image_Tags=$(curl -u "$Hamin" -X GET $Address/api/repositories/$Image/tags -H "Content-Type: application/json" | awk '/"name": /' | awk -F '"' '{print $4}')
for Tag in $Image_Tags;do
# 将获取到的镜像完整路径存档到镜像清单文件
echo "$Address/$Image:$Tag" | grep -v Base | grep -v Image | grep -v CentOS >> $File
done
done
done

在升级前执行脚本,在升级后再执行该脚本,检测两次的结果中,镜像是否有丢失。

Harbor版本升级(图文并茂)_运维_14

  • 4
  • 3收藏
  • 2评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK