harbor离线安装2.9.0-arm64架构服务制作和升级部署

我正在参加「金石计划」

写在前面

harbor官网地址:github.com/goharbor/ha...

对于arm64架构的harbor服务,官方一直没有提供相关的支持!!!让人头大

最近有些漏洞被扫描出来了,漏洞说明如下:

Harbor未授权访问漏洞 (CVE-2022-46463)【原理扫描】

Harbor 是一个开源的 Docker Registry 管理项目,用于托管容器镜像。 Harbor 受影响版本中镜像仓库存在访问控制缺陷,攻击者可通过页面搜索镜像名称,绕过登陆验证逻辑,直接查看结果中未授权的私有镜像仓库并获取仓库信息(Pull、Push 的时间和 commit 信息,以及镜像存在的漏洞信息等)。

解决建议:

升级 github.com/goharbor/harbor 到 2.6.0 或更高版本

给出的建议是更新harbor到最新版本,但是全网能找到的harbor-arm64架构的离线安装版本,大部分都是2.4.0版本的:例如这个:harbor-v2.4.0离线安装(arm架构)

官方给出的建议是,可以自己编译一个arm64架构的harbor服务: github.com/goharbor/ha...

好家伙,看起来有点麻烦,而且我们公司的服务器一般都是内网环境,没法联网的!!!

离线编译,好像更难了!!!

这里找到了一个不错的思路:找到harbor所需的所有镜像的arm64版本,然后替换离线安装包里面的镜像

好家伙,这个想法,确实不错,那就开干!!!

参考文档可以看这里:www.jianshu.com/p/9925ea2fd...

harbor2.9.0-arm64版本制作

  1. 先拉arm64架构的harbor相关镜像
sh 复制代码
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-registryctl:v2.9.0 
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/nginx-photon:v2.9.0 
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/registry-photon:v2.9.0
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/prepare:v2.9.0    
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-portal:v2.9.0    
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-log:v2.9.0
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-exporter:v2.9.0
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/redis-photon:v2.9.0
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/trivy-adapter-photon:v2.9.0 
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-core:v2.9.0 
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-db:v2.9.0  
docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-jobservice:v2.9.0 
  1. 将相关镜像修改名称
sh 复制代码
docker tag ghcr.io/octohelm/harbor/harbor-registryctl:v2.9.0 goharbor/harbor-registryctl:v2.9.0
docker tag ghcr.io/octohelm/harbor/nginx-photon:v2.9.0 goharbor/nginx-photon:v2.9.0
docker tag ghcr.io/octohelm/harbor/registry-photon:v2.9.0 goharbor/registry-photon:v2.9.0
docker tag ghcr.io/octohelm/harbor/prepare:v2.9.0 goharbor/prepare:v2.9.0     
docker tag ghcr.io/octohelm/harbor/harbor-portal:v2.9.0 goharbor/harbor-portal:v2.9.0    
docker tag ghcr.io/octohelm/harbor/harbor-log:v2.9.0 goharbor/harbor-log:v2.9.0
docker tag ghcr.io/octohelm/harbor/harbor-exporter:v2.9.0 goharbor/harbor-exporter:v2.9.0
docker tag ghcr.io/octohelm/harbor/redis-photon:v2.9.0 goharbor/redis-photon:v2.9.0
docker tag ghcr.io/octohelm/harbor/trivy-adapter-photon:v2.9.0 goharbor/trivy-adapter-photon:v2.9.0
docker tag ghcr.io/octohelm/harbor/harbor-core:v2.9.0 goharbor/harbor-core:v2.9.0
docker tag ghcr.io/octohelm/harbor/harbor-db:v2.9.0 goharbor/harbor-db:v2.9.0
docker tag ghcr.io/octohelm/harbor/harbor-jobservice:v2.9.0 goharbor/harbor-jobservice:v2.9.0
  1. 将harbor相关镜像导出为tar包
sh 复制代码
docker save -o goharbor-harbor-registryctl-v2.9.0.tar goharbor/harbor-registryctl:v2.9.0
docker save -o goharbor-nginx-photon-v2.9.0.tar goharbor/nginx-photon:v2.9.0
docker save -o goharbor-registry-photon-v2.9.0.tar goharbor/registry-photon:v2.9.0
docker save -o goharbor-prepare-v2.9.0.tar goharbor/prepare:v2.9.0
docker save -o goharbor-harbor-portal-v2.9.0.tar goharbor/harbor-portal:v2.9.0
docker save -o goharbor-harbor-log-v2.9.0.tar goharbor/harbor-log:v2.9.0
docker save -o goharbor-harbor-exporter-v2.9.0.tar goharbor/harbor-exporter:v2.9.0
docker save -o goharbor-redis-photon-v2.9.0.tar goharbor/redis-photon:v2.9.0
docker save -o goharbor-trivy-adapter-photon-v2.9.0.tar goharbor/trivy-adapter-photon:v2.9.0
docker save -o goharbor-harbor-core-v2.9.0.tar goharbor/harbor-core:v2.9.0
docker save -o goharbor-harbor-db-v2.9.0.tar goharbor/harbor-db:v2.9.0
docker save -o goharbor-harbor-jobservice-v2.9.0.tar goharbor/harbor-jobservice:v2.9.0

4.将harbor相关的tar包全部合并成一个gz包

sh 复制代码
tar -czvf harbor.v2.9.0-arm64.tar.gz *.tar

5.下载官网离线安装包x86,主要是未了拿里面的配置文件,将里面的harbor.v2.9.0.tar.gz,替换我们上面制作好的harbor.v2.9.0-arm64.tar.gz镜像包即可。harbor-offline-installer-v2.9.0下载地址

6.将install.sh文件,50行,改成下面:

sh 复制代码
#docker load -i ./harbor*.tar.gz
rm -rf images && mkdir images
tar -zxvf ./harbor*.tar.gz -C ./images
ls images/*.tar | xargs -n 1 docker load -i
docker images|grep goharbor
  1. 替换好后重新打包全部合并成一个gz包
sh 复制代码
tar -czvf harbor-offline-installer-v2.9.0-arm64.tar.gz harbor

harbor2.9.0-arm64升级部署

在部署的时候发现,redis服务启动失败,报错信息如下:

没记错的话,类似是下面这个错误信息:

sh 复制代码
<jemalloc>: Unsupported system page size
Out of memory allocating bitmask: Cannot allocate memory

问题不大,既然这个redis无法使用,我们用回2.4.0的redis就好了!!!

这里用2.4.0的redis其实没啥大的影响,因为harbor的核心服务已经是2.9.0了!!!

sh 复制代码
#将2.4.0的redis改一个tag名称,改成2.9.0的
docker tag goharbor/redis-photon:v2.4.0 goharbor/redis-photon:v2.9.0

然后重新打包即可!!!

从2.4.0的harbor升级到2.9.0的harbor,好像改动比较大,所以这里我就直接覆盖升级了。

先将2.4.0相关的服务停了,然后将相关的挂载清了,然后再安装2.9.0,就基本没啥大问题了!!!

sh 复制代码
#清空历史挂载文件:
rm -rf /var/log/harbor/
rm -rf /data/database
rm -rf /data/job_logs
rm -rf /data/redis
rm -rf /data/registry    #harbor镜像存放路径
rm -rf /data/ca_download/

harbor的安装,可以参考这里:安装harbor作为docker镜像仓库,这里就不再过多描述了。

最后安装成功!!!

这里提供已经制作好的harbor-2.9.0-arm64安装包: harbor-v2.9.0离线安装(arm架构)


好了,以上就是我个人的实操了。可能有些不对,大家伙,轻点喷!!!

个人理解,可能也不够全面,班门弄斧了。

好了,今天就先到这里了!!!^_^

如果觉得有收获的,帮忙点赞、评论、收藏一下,再走呗!!!

相关推荐
容器魔方1 小时前
中选名单出炉|18位学生入选开源之夏KubeEdge课题,欢迎加入!
云原生·容器·云计算
蓝倾1 小时前
如何使用Python通过API接口批量抓取小红书笔记评论?
前端·后端·api
aloha_1 小时前
Flowable 引擎在启动时没办法找到AsyncListenableTaskExecutor类型的 bean
后端
保持学习ing1 小时前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
超级小忍2 小时前
服务端向客户端主动推送数据的几种方法(Spring Boot 环境)
java·spring boot·后端
字节跳跃者2 小时前
为什么Java已经不推荐使用Stack了?
javascript·后端
字节跳跃者2 小时前
深入剖析HashMap:理解Hash、底层实现与扩容机制
javascript·后端
程序无bug2 小时前
Spring IoC注解式开发无敌详细(细节丰富)
java·后端
程序无bug2 小时前
Spring 对于事务上的应用的详细说明
java·后端
食亨技术团队2 小时前
被忽略的 SAAS 生命线:操作日志有多重要
java·后端