背景

客户通过Jenkins流水线构建镜像上传harbor部署到kubernetes,经过不断的CI/CD,harbor占用空间不断增大,但旧的镜像其实是可以删除掉,保留最新的几个版本供回滚就可以,因此需要制定删除策略,目前情况如下

  • 保留每个镜像最新3个版本即可
  • 用户通过tag区分环境,比如 definesys/hr:dev.20210601,definesys/hr:uat.20210601,这样就导致如果保留最新3个镜像,有可能都保留了dev.xxx,其他环境的都被删除,因此也要考虑按照环境做分组,只保留每个分组内的最新3个版本即可

harbor本身并没有提供类似的功能,但是harbor有完善的restapi,因此可以自己写工具去实现以上需求。

方案

  • java开发清理程序,打包为jar包,通过Main运行
  • 通过jenkins打包应用并执行清理动作

之所以选择jenkins运行jar包,是因为jenkins可以提供配置参数界面,可以将清理程序的一些配置项通过jenkins传入,省的再去开发界面,而且jenkins有定时调度的功能,可以实现定时清理的功能。

Read the rest of this entry

,

介绍

harbor支持docker compose和helm两种方式进行安装,一般情况下如果是kubernetes运行环境推荐用helm进行安装,如果是纯docker环境建议用docker compose进行安装,本次安装使用helm进行安装,安装版本为v2.2.1

创建命名空间

harbor包含服务较多,建议单独创建命名空间进行安装,便于后续的管理

apiVersion: v1
kind: Namespace
metadata:
  name: harbor
  labels:
    name: harbor

另存为harbor-namespace.yaml文件,并执行kubectl apply -f harbor-namespace.yaml命令进行创建

创建共享目录

目录必须创建在共享存储的介质上面,比如NFS等

mkdir -p /u02/appdata/harbor/registry
mkdir -p /u02/appdata/harbor/chartmuseum
mkdir -p /u02/appdata/harbor/jobservice
mkdir -p /u02/appdata/harbor/database
mkdir -p /u02/appdata/harbor/redis
mkdir -p /u02/appdata/harbor/trivy
chmod 777 /u02/appdata/harbor/registry
chmod 777 /u02/appdata/harbor/chartmuseum
chmod 777 /u02/appdata/harbor/jobservice
chmod 777 /u02/appdata/harbor/database
chmod 777 /u02/appdata/harbor/redis
chmod 777 /u02/appdata/harbor/trivy

Read the rest of this entry

, ,