15.2. 使用 Red Hat Quay UI 管理自动修剪策略
除 registry 范围自动修剪策略外,所有自动修剪策略都使用 Red Hat Quay v2 UI 创建。这可在配置了 Red Hat Quay config.yaml
文件后完成,以启用 auto-pruning 功能和 v2 UI。
使用 Red Hat Quay 传统 UI 时,此功能不可用。
15.2.1. 配置 Red Hat Quay auto-pruning 功能
使用以下步骤配置 Red Hat Quay config.yaml
文件来启用 auto-pruning 功能。
先决条件
-
您已在
config.yaml
文件中将FEATURE_UI_V2
设置为true
。
流程
在 Red Hat Quay
config.yaml
文件中,添加和设置FEATURE_AUTO_PRUNE
环境变量为True
。例如:# ... FEATURE_AUTO_PRUNE: true # ...
15.2.2. 创建 registry 范围自动运行策略
可以在新的和现有组织中配置 registry 范围自动运行策略。此功能通过强制执行 registry 范围规则来节省 Red Hat Quay 管理员时间、工作量和存储。
Red Hat Quay 管理员必须通过包含 DEFAULT_NAMESPACE_AUTOPRUNE_POLICY
配置字段以及 number_of_tags
或 creation_date
方法来更新 config.yaml
文件来启用此功能。目前,无法使用 v2 UI 或 API 启用此功能。
使用以下步骤为您的 Red Hat Quay registry 创建自动修剪策略。
先决条件
-
您已启用了
FEATURE_AUTO_PRUNE
功能。
流程
更新
config.yaml
文件,以添加DEFAULT_NAMESPACE_AUTOPRUNE_POLICY
配置字段:要设置策略方法,在其创建日期中删除最旧的标签,直到离开提供的标签数量前,请使用
number_of_tags
方法:# ... DEFAULT_NAMESPACE_AUTOPRUNE_POLICY: method: number_of_tags value: 2 1 # ...
- 1
- 在这种情况下,保留两个标签。
要设置策略方法来删除标签,其创建日期早于提供的时间跨度(例如
5d
),请使用creation_date
方法:DEFAULT_NAMESPACE_AUTOPRUNE_POLICY: method: creation_date value: 5d
- 重启 Red Hat Quay 部署。
可选。如果您需要标记并推送镜像来测试此功能:
标记将推送到 Red Hat Quay registry 的四个示例镜像。例如:
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test2
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test3
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test4
输入以下命令将四个示例镜像推送到启用了 auto-pruning 的 registry 中:
$ podman push <quay-server.example.com>/quayadmin/busybox:test
$ podman push <quay-server.example.com>/<quayadmin>/busybox:test2
$ podman push <quay-server.example.com>/<quayadmin>/busybox:test3
$ podman push <quay-server.example.com>/<quayadmin>/busybox:test4
- 检查您将镜像推送到的注册表中是否有四个标签。
-
默认情况下,registry 级别的自动修剪程序每 24 小时运行一次。24 小时后,删除了两个最旧的镜像标签,如果您遵循这些指令,则保留
test3
和test4
标签。检查您的 Red Hat Quay 组织,以确保删除了两个最旧的标签。
15.2.3. 使用 Red Hat Quay v2 UI 为机构创建一个自动修剪策略
使用以下步骤为使用 Red Hat Quay v2 UI 的机构创建自动修剪策略。
先决条件
-
您已启用了
FEATURE_AUTO_PRUNE
功能。
流程
标记四个示例镜像,如
busybox
,这将推送到启用了 auto-pruning 的存储库。例如:$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test2
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test3
$ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test4
输入以下命令将四个示例镜像(如
busybox
)推送到启用了 auto-pruning 的存储库:$ podman push <quay-server.example.com>/quayadmin/busybox:test
$ podman push <quay-server.example.com>/<quayadmin>/busybox:test2
$ podman push <quay-server.example.com>/<quayadmin>/busybox:test3
$ podman push <quay-server.example.com>/<quayadmin>/busybox:test4
- 检查您的存储库中是否有四个标签。
- 在 Red Hat Quay v2 UI 上,单击导航窗格中的 Organizations。
-
选择要将 auto-pruning 功能应用到的机构名称,如
test_organization
。 - 单击 Settings。
单击 Auto-Prune Policies。例如:
- 单击下拉菜单并选择所需的策略,例如 按标签数。
- 选择要保留的标签数。默认情况下,这是在 20 个标签设置的。在本例中,要保留的标签数量设置为 3。
- 点击 Save。此时会出现您的自动修剪策略更新的通知。
验证
导航到组织存储库的 Tags 页面。使用本示例时,标签会从标签最旧的创建日期开始删除。几分钟后,自动修剪 worker 会删除在确定的标准中不再适合的标签。在本例中,它会删除
busybox:test
标签,并保留busybox:test2
,busybox:test3
, 和busybox:test4
标签。在标签被自动修剪后,它们进入 Red Hat Quay 时间机器,或者删除标签在收集垃圾回收前可以访问的时间。镜像标签的过期时间取决于您的机构的设置。如需更多信息,请参阅 Red Hat Quay 垃圾回收。
15.2.4. 使用 Red Hat Quay API 为命名空间创建一个自动修剪策略
您可以使用 Red Hat Quay API 端点来管理命名空间自动运行策略。
先决条件
-
您已在
config.yaml
文件中设置了BROWSER_API_CALLS_XHR_ONLY: false
。 - 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
流程
输入以下
POST
命令会创建一个新策略,该策略限制了机构中允许的标签数:$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags", "value": 10}' http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
另外,您可以在创建日期后将标签设置为在指定时间过期:
$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{ "method": "creation_date", "value": "7d"}' http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
输出示例
{"uuid": "73d64f05-d587-42d9-af6d-e726a4a80d6e"}
尝试创建多个策略会返回以下错误:
{"detail": "Policy for this namespace already exists, delete existing to create new policy", "error_message": "Policy for this namespace already exists, delete existing to create new policy", "error_type": "invalid_request", "title": "invalid_request", "type": "http://<quay-server.example.com>/api/v1/error/invalid_request", "status": 400}
输入以下命令检查自动修剪策略:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
输出示例
{"policies": [{"uuid": "73d64f05-d587-42d9-af6d-e726a4a80d6e", "method": "creation_date", "value": "7d"}]}
您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/73d64f05-d587-42d9-af6d-e726a4a80d6e
15.2.5. 使用 API 为当前用户创建一个命名空间自动修剪策略
您可以使用 Red Hat Quay API 端点来管理您的帐户自动运行策略。
以下命令中使用 /user/
代表当前登录到 Red Hat Quay 的用户。
先决条件
-
您已在
config.yaml
文件中设置了BROWSER_API_CALLS_XHR_ONLY: false
。 - 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
流程
输入以下
POST
命令创建一个新策略,该策略限制了当前用户的标签数:$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags", "value": 10}' http://<quay-server.example.com>/api/v1/<user>/autoprunepolicy/
输出示例
{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
输入以下命令检查自动修剪策略:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/<user>/autoprunepolicy/8c03f995-ca6f-4928-b98d-d75ed8c14859
或者,您可以包含 UUID:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/<user>/autoprunepolicy/
输出示例
{"policies": [{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859", "method": "number_of_tags", "value": 10}]}
您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/<user>/autoprunepolicy/8c03f995-ca6f-4928-b98d-d75ed8c14859
输出示例
{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
15.2.6. 使用 Red Hat Quay v2 UI 为存储库创建自动修剪策略
使用以下步骤使用 Red Hat Quay v2 UI 为存储库创建自动修剪策略。
先决条件
-
您已启用了
FEATURE_AUTO_PRUNE
功能。
流程
标记四个示例镜像,如
busybox
,这将推送到启用了 auto-pruning 的存储库。例如:$ podman tag docker.io/library/busybox <quay-server.example.com>/<organization_name>/<repository_name>:test
$ podman tag docker.io/library/busybox <quay-server.example.com>/<organization_name>/<repository_name>:test2
$ podman tag docker.io/library/busybox <quay-server.example.com>/<organization_name>/<repository_name>:test3
$ podman tag docker.io/library/busybox <quay-server.example.com>/<organization_name>/<repository_name>:test4
输入以下命令将四个示例镜像(如
busybox
)推送到启用了 auto-pruning 的存储库:$ podman push <quay-server.example.com>/<organization_name>/<repository_name>:test
$ podman push <quay-server.example.com>/<organization_name>/<repository_name>:test2
$ podman push <quay-server.example.com>/<organization_name>/<repository_name>:test3
$ podman push <quay-server.example.com>/<organization_name>/<repository_name>:test4
- 检查您的存储库中是否有四个标签。
- 在 Red Hat Quay v2 UI 上,单击导航窗格中的 Repository。
-
选择您要将 auto-pruning 功能应用到的机构名称,例如 <
organization_name>/<repository_name
>。 - 单击 Settings。
- 单击 Repository Auto-Prune Policies。
- 单击下拉菜单并选择所需的策略,例如 按标签数。
- 选择要保留的标签数。默认情况下,这是在 20 个标签设置的。在本例中,要保留的标签数量设置为 3。
- 点击 Save。此时会出现您的自动修剪策略更新的通知。
验证
导航到组织存储库的 Tags 页面。使用本示例时,标签会从标签最旧的创建日期开始删除。几分钟后,自动修剪 worker 会删除在确定的标准中不再适合的标签。在本例中,它会删除
busybox:test
标签,并保留busybox:test2
,busybox:test3
, 和busybox:test4
标签。在标签被自动修剪后,它们进入 Red Hat Quay 时间机器,或者删除标签在收集垃圾回收前可以访问的时间。镜像标签的过期时间取决于您的机构的设置。如需更多信息,请参阅 Red Hat Quay 垃圾回收。
15.2.7. 使用 Red Hat Quay API 为存储库创建自动修剪策略
您可以使用 Red Hat Quay API 端点来管理存储库自动运行策略。
先决条件
-
您已在
config.yaml
文件中设置了BROWSER_API_CALLS_XHR_ONLY: false
。 - 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
流程
输入以下
POST
命令会创建一个新策略,该策略限制了机构中允许的标签数:$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags","value": 2}' http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
另外,您可以在创建日期后将标签设置为在指定时间过期:
$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "creation_date", "value": "7d"}' http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
输出示例
{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
尝试创建多个策略会返回以下错误:
{"detail": "Policy for this namespace already exists, delete existing to create new policy", "error_message": "Policy for this namespace already exists, delete existing to create new policy", "error_type": "invalid_request", "title": "invalid_request", "type": "http://quay-server.example.com/api/v1/error/invalid_request", "status": 400}
输入以下命令检查自动修剪策略:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
或者,您可以包含 UUID:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7
输出示例
{"policies": [{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7", "method": "number_of_tags", "value": 10}]}
您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7
输出示例
{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
15.2.8. 在带有 API 的用户的存储库上创建自动修剪策略
您可以使用 Red Hat Quay API 端点为不属于您的用户帐户管理存储库上的自动运行策略,只要存储库上具有 admin
权限。
先决条件
-
您已在
config.yaml
文件中设置了BROWSER_API_CALLS_XHR_ONLY: false
。 - 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
-
在您要为其创建策略的存储库上具有
admin
权限。
流程
输入以下
POST
命令创建一个新策略,该策略限制了当前用户的标签数:$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags","value": 2}' http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
输出示例
{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}
输入以下命令检查自动修剪策略:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
或者,您可以包含 UUID:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/7726f79c-cbc7-490e-98dd-becdc6fefce7
输出示例
{"policies": [{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7", "method": "number_of_tags", "value": 2}]}
您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/7726f79c-cbc7-490e-98dd-becdc6fefce7
输出示例
{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}