【K8S】一个Harbor镜像备份方案,老板差点让我走

发布时间:2022-06-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【K8S】一个Harbor镜像备份方案,老板差点让我走脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

在一个秋高气爽的夜晚,我着5毛一包的辣条,看着奥特曼打小怪兽正起劲,突然老板发来一条微信F1a;

【K8S】一个Harbor镜像备份方案,老板差点让我走

         突然觉得手里的辣条不香了,这王总真小心眼,不就上次跟你女儿去看了一场一场电影吗?咋还这么针对我呢?

       但还是得写方案,倒也不是怕丢饭碗,不然以后就很少有机会去看影了。

        之前没接触过Harbor这个东西,然后感觉百度了解下,再到圈子里看有人搞过没有,也没人搞过镜像备份这个东西。

     没颁发,还是得自己搞。

先分析下需求

         只需要备份Harbor上的镜像,Harbor中存在很多不同的公有和私有项目,每个项目下又有很多镜像,每个镜像有不同版本的标签,考虑服务器成本,不能再搭一台Harbor来备份了,主备模式的备份方案无法使用;

 方案设计思路

       1、编写一个shell脚本:

           1)获取Harbor中所有的镜像;

           2)通过docker下载获取到的镜像列表;    

           3)将下载到本地的镜像打成tar包,以便恢复;

           4)删除下载到本地的镜像,减少磁盘空间的占用;

       2、在备份主机安装docker,配置文件中指定Harbor的地址;

       3、执行备份的shell脚本进行备份;

       4、定期备份的设定,观察镜像上传频率,只需要每周备份一次即可;

该方案仅占用备份主机的磁盘空间,通过Harbor的管理界面看到需要备份镜像总大小为2T,

该方案的难点再于如何获取镜像的列表,查看官方文档,可以通过调用API接口的方式来获取镜像列表。

编写shell脚本

说明:本处Harbor的版本为1.8.0,其他的版本修改API调用即可,

# vim Harbor-imagebackup.sh
#!/bin/bash
Harbor_Address=192.168.2.250:443       #Harbor主机地址
Harbor_User=admin                      #登录Harbor的用户
Harbor_passwd=Harbor12345              #登录Harbor的用户密码
Images_File=harbor-images-`date '+%Y-%m-%d'`.txt                        #镜像清单文件
Tar_File=/backup/Harbor-backup/                                         #镜像tar包存放路径

###【】调用API接口获取Harbor中所有仓库的所有镜像及镜像的所有标签(tag):
#获取Harbor中所有的项目(含私有项目)
PRoject_List=`curl -u $Harbor_User:$Harbor_Passwd -X GET http://$Harbor_Address/api/projects | grep name | awk '/"name": /' | awk -F '"' '{print $4}'`
#获取项目下所有的镜像名称与标签:
for Project in $Project_List;do
    Image_names=`curl -u $Harbor_User:$Harbor_Passwd -X GET http://$Harbor_Address/api/seArch?q=$Project | grep "reposITory_name" | awk -F """ '{print $4}'`
    for Image in $Image_Names;do
        Image_Tags=`curl -u $Harbor_User:Harbor_Passwd -X GET http://$Harbor_Address/api/repositories/$Image/tags | awk '/"name": /' | awk -F '"' '{print $4}'`
        for Tag in $Image_Tags;do
            echo "$Harbor_Address/$Image:$Tag" | grep -v Base | grep -v Image >> $Images_File
        done
    done
done

###使用docker从镜像文件中下载镜像——将下载的镜像进行打包保存——删除下载到本地的镜像——将封装好的镜像包移动到备份目录
Image_tags=$(cat $Images_File)
for image_tag in $Image_tags;do
    image_Name=$(echo $image_tag | awk -F/ '{print $3}' |  awk -F: '{print $1}')
    image_Lable=$(echo $image_tag | awk -F/ '{print $3}' |  awk -F: '{print $2}')
    docker pull $image_tag
    docker save $image_tag  -o $image_Name-$image_Lable.tar
    docker rmi  $image_tag
    mv $image_Name-$image_Lable.tar  $Tar_File
done

Harbor-imagebackup.sh-kubernetes文档类资-CSDN下载备份Harbor(1.8.0版本)镜像仓库所有的镜像(含私有和公有仓库)的shell脚本,在生产环境更多下载资源、学习资料请访问CSDN下载频道.【K8S】一个Harbor镜像备份方案,老板差点让我走https://download.csdn.net/download/QQ_49496397/40738207在备份主机安装docker及修改配置文件,执行脚本,定时任务就不再赘述了,

脚本宝典总结

以上是脚本宝典为你收集整理的【K8S】一个Harbor镜像备份方案,老板差点让我走全部内容,希望文章能够帮你解决【K8S】一个Harbor镜像备份方案,老板差点让我走所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。