背景

在持续集成和持续部署的流程中,频繁的构建和部署会生成大量的镜像版本。这些历史镜像如果不及时清理,会占用大量的存储空间,导致 Harbor 仓库膨胀,影响系统性能。
目前 公司的Harbor存储已经占用1T,好多的repo的镜像tag达到上百多,没有清理十分占用空间。
目前研究了下,可采取两种方案进行清理。(各自有各的优势)
1、采用Harbor自带的清理策略
2、写脚本,可以自定义控制清理,比较方便。

目的

  • 释放存储空间:清理不再使用的镜像,释放被占用的磁盘空间。
  • 提高系统性能:减少无用数据,提高 Harbor 的响应速度和稳定性。
  • 简化管理:通过自动化策略,减少手动清理的工作量,提高管理效率。

方案一 Harbor 镜像自动清理策略

Harbor 提供了基于项目的镜像保留策略(Retention Policy),允许用户根据特定的规则自动保留或删除镜像。该策略支持以下配置:(需要每个仓库分别配置)

  • 匹配规则:通过通配符匹配特定的仓库或镜像。
  • 保留策略:设置保留最近推送或拉取的镜像数量或时间范围。
  • 标签过滤:根据镜像的标签(Tag)进行筛选,如保留特定前缀的标签。
  • 删除未打标签的镜像:选择是否删除未打标签的镜像(Untagged Artifacts)。

Harbor2.0仓库镜像清理策略_android

1、使用管理员账号登录 Harbor 的 Web 控制台。

2、在左侧导航栏选择“项目”,点击需要配置清理策略的项目名称。

3、配置保留策略

在项目页面,选择“策略”选项卡,点击“添加规则”按钮,进行以下配置:

  • 规则名称:为策略命名,便于识别。
  • 匹配仓库:使用通配符(如 **)匹配需要应用策略的仓库。
  • 保留策略:选择保留最近推送或拉取的镜像数量或时间范围。
  • 标签过滤:设置标签匹配规则,如保留以 release- 开头的标签。
  • 删除未打标签的镜像:根据需要选择是否删除未打标签的镜像。

4、设置定时任务
在策略页面,点击“编辑”按钮,配置策略的执行时间。Harbor 使用 UTC 时间,需注意与本地时间的差异。例如,设置每周六凌晨 0 点执行:

0 0 0 ? * SAT
  • 1.

这表示每周六 UTC 时间 0 点执行,若在中国时区,实际执行时间为周六上午 8 点。

5、手动执行策略(可选)

在策略页面,点击“立即执行”按钮,可以手动触发策略,立即清理符合条件的镜像。