脚本宝典收集整理的这篇文章主要介绍了【K8S】一个Harbor镜像备份方案,老板差点让我走,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在一个秋高气爽的夜晚,我吃着5毛一包的辣条,看着奥特曼打小怪兽正起劲,突然老板发来一条微信F1a;
突然觉得手里的辣条不香了,这王总真小心眼,不就上次跟你女儿去看了一场一场电影吗?咋还这么针对我呢?
但还是得写方案,倒也不是怕丢饭碗,不然以后就很少有机会去看电影了。
之前没接触过Harbor这个东西,然后感觉百度了解下,再到圈子里看有人搞过没有,也没人搞过镜像备份这个东西。
没颁发,还是得自己搞。
只需要备份Harbor上的镜像,Harbor中存在很多不同的公有和私有项目,每个项目下又有很多镜像,每个镜像有不同版本的标签,考虑服务器成本,不能再搭一台Harbor来备份了,主备模式的备份方案无法使用;
1、编写一个shell脚本:
1)获取Harbor中所有的镜像;
2)通过docker下载获取到的镜像列表;
3)将下载到本地的镜像打成tar包,以便恢复;
4)删除下载到本地的镜像,减少磁盘空间的占用;
2、在备份主机安装docker,配置文件中指定Harbor的地址;
3、执行备份的shell脚本进行备份;
4、定期备份的设定,观察镜像上传频率,只需要每周备份一次即可;
该方案仅占用备份主机的磁盘空间,通过Harbor的管理界面看到需要备份镜像总大小为2T,
该方案的难点再于如何获取镜像的列表,查看官方文档,可以通过调用API接口的方式来获取镜像列表。
说明:本处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下载频道.https://download.csdn.net/download/QQ_49496397/40738207在备份主机安装docker及修改配置文件,执行脚本,定时任务就不再赘述了,
以上是脚本宝典为你收集整理的【K8S】一个Harbor镜像备份方案,老板差点让我走全部内容,希望文章能够帮你解决【K8S】一个Harbor镜像备份方案,老板差点让我走所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。