harbor删除保留策略遇到的问题
harbor版本:v2.10
所做操作
在harbor api控制台做了如下操作,本意为针对项目id为66的项目配置镜像删除策略为保留最近拉取的3个

实际 curl 命令如下
curl -X 'PUT' \
'https://<url>/api/v2.0/retentions/1' \
-H 'accept: application/json' \
-H 'authorization: Basic xxx' \
-H 'Content-Type: application/json' \
-H 'X-Harbor-CSRF-Token: xxx' \
-d '{
"id": 0,
"algorithm": "or",
"rules": [
{
"id": 0,
"priority": 1,
"disabled": false,
"action": "retain",
"tag_selectors": [
{
"kind": "latestPulled",
"decoration": "pulled",
"pattern": "**",
"extras": "{\"count\": \"3\"}"
}
],
"scope_selectors": {
"repository": [
{
"kind": "doublestar",
"pattern": "**"
}
]
}
}
],
"trigger": {
"kind": "Schedule",
"settings": {
"cron": "0 0 0 * * *"
},
"references": {}
},
"scope": {
"level": "project",
"ref": 66
}
}'
返回如下

执行完成后,在harbor控制台查看,发现一直在转圈,误以为是有问题,实际上是因为项目数量很多,有900多个

误操作
误以为配置有问题,想要删除,执行了如下操作

实际curl命令如下
curl -X 'DELETE' \
'https://<url>/api/v2.0/retentions/1' \
-H 'accept: application/json' \
-H 'authorization: Basic xxx' \
-H 'X-Harbor-CSRF-Token: xxx'
返回如下

报错
执行完删除后在项目的 策略 选项卡中就报错 internal server error

查看 harbor-core 容器日志报错如下
$ docker logs -f harbor-core
......
2024-12-04T08:04:56Z [ERROR] [/lib/http/error.go:57]: {"errors":[{"code":"UNKNOWN","message":"unknown: no such Retention policy with id 1"}]}
2024-12-04T08:04:57Z [ERROR] [/lib/http/error.go:57]: {"errors":[{"code":"UNKNOWN","message":"unknown: no such Retention policy with id 1"}]}
2024-12-04T08:04:57Z [ERROR] [/lib/http/error.go:57]: {"errors":[{"code":"UNKNOWN","message":"unknown: no such Retention policy with id 1"}]}
......