16.3. 使用 Red Hat Quay UI 管理自动修剪策略


除 registry 范围自动修剪策略外,所有自动修剪策略都使用 Red Hat Quay v2 UI 或使用 API 创建。这可在配置了 Red Hat Quay config.yaml 文件后完成,以启用 auto-pruning 功能和 v2 UI。

注意

使用 Red Hat Quay 传统 UI 时,此功能不可用。

16.3.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
    # ...
    Copy to Clipboard Toggle word wrap

16.3.2. 创建 registry 范围自动运行策略

可以在新的和现有组织中配置 registry 范围自动运行策略。此功能通过强制执行 registry 范围规则来节省 Red Hat Quay 管理员时间、工作量和存储。

Red Hat Quay 管理员必须通过包含 DEFAULT_NAMESPACE_AUTOPRUNE_POLICY 配置字段以及 number_of_tagscreation_date 方法来更新 config.yaml 文件来启用此功能。目前,无法使用 v2 UI 或 API 启用此功能。

使用以下步骤为您的 Red Hat Quay registry 创建自动修剪策略。

先决条件

  • 您已启用了 FEATURE_AUTO_PRUNE 功能。

流程

  1. 更新 config.yaml 文件,以添加 DEFAULT_NAMESPACE_AUTOPRUNE_POLICY 配置字段:

    1. 要设置策略方法,在其创建日期中删除最旧的标签,直到离开提供的标签数量前,请使用 number_of_tags 方法:

      # ...
      DEFAULT_NAMESPACE_AUTOPRUNE_POLICY:
        method: number_of_tags
        value: 2 
      1
      
      # ...
      Copy to Clipboard Toggle word wrap
      1
      在这种情况下,保留两个标签。
    2. 要设置策略方法来删除标签,其创建日期早于提供的时间跨度(例如 5d ),请使用 creation_date 方法:

      DEFAULT_NAMESPACE_AUTOPRUNE_POLICY:
        method: creation_date
        value: 5d
      Copy to Clipboard Toggle word wrap
  2. 重启 Red Hat Quay 部署。
  3. 可选。如果您需要标记并推送镜像来测试此功能:

    1. 标记将推送到 Red Hat Quay registry 的四个示例镜像。例如:

      $ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test
      Copy to Clipboard Toggle word wrap
      $ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test2
      Copy to Clipboard Toggle word wrap
      $ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test3
      Copy to Clipboard Toggle word wrap
      $ podman tag docker.io/library/busybox <quay-server.example.com>/<quayadmin>/busybox:test4
      Copy to Clipboard Toggle word wrap
    2. 输入以下命令将四个示例镜像推送到启用了 auto-pruning 的 registry 中:

      $ podman push <quay-server.example.com>/quayadmin/busybox:test
      Copy to Clipboard Toggle word wrap
      $ podman push <quay-server.example.com>/<quayadmin>/busybox:test2
      Copy to Clipboard Toggle word wrap
      $ podman push <quay-server.example.com>/<quayadmin>/busybox:test3
      Copy to Clipboard Toggle word wrap
      $ podman push <quay-server.example.com>/<quayadmin>/busybox:test4
      Copy to Clipboard Toggle word wrap
  4. 检查您将镜像推送到的注册表中是否有四个标签。
  5. 默认情况下,registry 级别的自动修剪程序每 24 小时运行一次。24 小时后,删除了两个最旧的镜像标签,如果您遵循这些指令,则保留 test3test4 标签。检查您的 Red Hat Quay 组织,以确保删除了两个最旧的标签。

使用以下步骤为使用 Red Hat Quay v2 UI 的机构创建自动修剪策略。

先决条件

  • 您已启用了 FEATURE_AUTO_PRUNE 功能。
  • 您的组织有已推送到的镜像标签。

流程

  1. 在 Red Hat Quay v2 UI 上,单击导航窗格中的 Organizations
  2. 选择要将 auto-pruning 功能应用到的机构名称,如 test_organization
  3. 单击 Settings
  4. 单击 Auto-Prune Policies。例如:

    Auto-Prune Policies page

  5. 单击下拉菜单并选择所需的策略,例如 按标签数
  6. 选择要保留的标签数。默认情况下,这是在 20 个标签设置的。在本例中,要保留的标签数量设置为 3
  7. 可选。随着 正则表达式 的引入,您可以提供以下选项来微调自动运行策略:

    • 匹配 :在选择此选项时,自动修剪与给定 正则表达式 模式匹配的所有标签。
    • 不匹配 :在选择这个选项时,自动修剪与 regex 模式 不匹配 的所有标签。

      如果没有选择选项,则自动修剪程序默认为修剪所有镜像标签。

      在本例中,单击 Tag pattern 框,再选择 match。在 regex 框中,输入与匹配的标签匹配的模式。例如,要自动修剪所有测试标签,请输入 ^ test quota

  8. 可选。您可以通过点 Add Policy 并输入所需信息来创建第二个自动修剪策略。
  9. 点击 Save。此时会出现您的自动修剪策略更新的通知。

    使用这个示例,机构被配置为保留三个名为 ^test bang 的最新标签。

验证

  • 导航到组织存储库的 Tags 页面。几分钟后,自动修剪 worker 会删除在确定的标准中不再适合的标签。在本例中,它会删除 busybox:test 标签,并保留 busybox:test2,busybox:test3, 和 busybox:test4 标签。

    在标签被自动修剪后,它们进入 Red Hat Quay 时间机器,或者删除标签在收集垃圾回收前可以访问的时间。镜像标签的过期时间取决于您的机构的设置。如需更多信息,请参阅 Red Hat Quay 垃圾回收

您可以使用 Red Hat Quay API 端点来管理命名空间自动运行策略。

先决条件

  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false
  • 您已创建了 OAuth 访问令牌。
  • 已登陆到 Red Hat Quay。

流程

  1. 输入以下 POST /api/v1/organization/{orgname}/autoprunepolicy/ 命令,创建一个新策略来限制机构中允许的标签数:

    $ 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/
    Copy to Clipboard Toggle word wrap

    另外,您可以在创建日期后将标签设置为在指定时间过期:

    $ 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/
    Copy to Clipboard Toggle word wrap

    输出示例

    {"uuid": "73d64f05-d587-42d9-af6d-e726a4a80d6e"}
    Copy to Clipboard Toggle word wrap

  2. 可选。您可以将额外策略添加到机构中,并传递 tagPatterntagPatternMatches 字段,以仅修剪与给定 regex 模式匹配的标签。例如:

    $ curl -X POST \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Content-Type: application/json" \
      -d '{
        "method": "creation_date",
        "value": "7d",
        "tagPattern": "^v*",
        "tagPatternMatches": <true> 
    1
    
      }' \
      "https://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/"
    Copy to Clipboard Toggle word wrap
    1
    tagPatternMatches 设置为 true 会导致修剪与给定正则表达式模式匹配的标签。在本例中,与 ^v* 匹配的标签会被修剪。

    输出示例

    {"uuid": "ebf7448b-93c3-4f14-bf2f-25aa6857c7b0"}
    Copy to Clipboard Toggle word wrap

  3. 您可以使用 PUT /api/v1/organization/{orgname}/autoprunepolicy/{policy_uuid} 命令更新机构的自动修剪策略。例如:

    $ curl -X PUT   -H "Authorization: Bearer <bearer_token>"   -H "Content-Type: application/json"   -d '{
        "method": "creation_date",
        "value": "4d",
        "tagPattern": "^v*",
        "tagPatternMatches": true
      }'   "<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/<uuid>"
    Copy to Clipboard Toggle word wrap

    此命令不返回输出。继续下一步。

  4. 输入以下命令检查自动修剪策略:

    $ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
    Copy to Clipboard Toggle word wrap

    输出示例

    {"policies": [{"uuid": "ebf7448b-93c3-4f14-bf2f-25aa6857c7b0", "method": "creation_date", "value": "4d", "tagPattern": "^v*", "tagPatternMatches": true}, {"uuid": "da4d0ad7-3c2d-4be8-af63-9c51f9a501bc", "method": "number_of_tags", "value": 10, "tagPattern": null, "tagPatternMatches": true}, {"uuid": "17b9fd96-1537-4462-a830-7f53b43f94c2", "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": true}]}
    Copy to Clipboard Toggle word wrap

  5. 您可以输入以下命令来删除您的机构的自动修剪策略。请注意,删除策略需要 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
    Copy to Clipboard Toggle word wrap

您可以使用 Red Hat Quay API 端点来管理您的帐户自动运行策略。

注意

以下命令中使用 /user/ 代表当前登录到 Red Hat Quay 的用户。

先决条件

  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false
  • 您已创建了 OAuth 访问令牌。
  • 已登陆到 Red Hat Quay。

流程

  1. 输入以下 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/
    Copy to Clipboard Toggle word wrap

    输出示例

    {"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
    Copy to Clipboard Toggle word wrap

  2. 输入以下命令检查自动修剪策略:

    $ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/
    Copy to Clipboard Toggle word wrap

    或者,您可以包含 UUID:

    $ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/8c03f995-ca6f-4928-b98d-d75ed8c14859
    Copy to Clipboard Toggle word wrap

    输出示例

    {"policies": [{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859", "method": "number_of_tags", "value": 10}]}
    Copy to Clipboard Toggle word wrap

  3. 您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。

    $ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/8c03f995-ca6f-4928-b98d-d75ed8c14859
    Copy to Clipboard Toggle word wrap

    输出示例

    {"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
    Copy to Clipboard Toggle word wrap

使用以下步骤使用 Red Hat Quay v2 UI 为存储库创建自动修剪策略。

先决条件

  • 您已启用了 FEATURE_AUTO_PRUNE 功能。
  • 您已将镜像标签推送到您的存储库。

流程

  1. 在 Red Hat Quay v2 UI 上,单击导航窗格中的 Repository
  2. 选择您要将 auto-pruning 功能应用到的机构名称,例如 < organization_name>/<repository_name >。
  3. 单击 Settings
  4. 单击 Repository Auto-Prune Policies
  5. 单击下拉菜单并选择所需的策略,例如: 标签 的 By age
  6. 设置时间,如 5 和间隔,例如 分钟 以删除超过指定时间段的标签。在本例中,超过 5 分钟的标签标记为删除。
  7. 可选。随着 正则表达式 的引入,您可以提供以下选项来微调自动运行策略:

    • 匹配 :在选择此选项时,自动修剪与给定 正则表达式 模式匹配的所有标签。
    • 不匹配 :在选择这个选项时,自动修剪与 regex 模式 不匹配 的所有标签。

      如果没有选择选项,则自动修剪程序默认为修剪所有镜像标签。

      在本例中,单击 Tag pattern 框,再选择 Does not match。在 regex 框中,输入与匹配的标签匹配的模式。例如,要自动修剪与 test 标签 不匹配 的所有标签,请输入 ^testbang

  8. 可选。您可以通过点 Add Policy 并输入所需信息来创建第二个自动修剪策略。
  9. 点击 Save。此时会出现您的自动修剪策略更新的通知。

验证

  • 导航到组织存储库的 Tags 页面。在本例中,当修剪器运行时,与 ^test regex regex 标签 不匹配的 5 分钟以上标签会自动修剪。

    在标签被自动修剪后,它们进入 Red Hat Quay 时间机器,或者删除标签在收集垃圾回收前可以访问的时间。镜像标签的过期时间取决于您的机构的设置。如需更多信息,请参阅 Red Hat Quay 垃圾回收

您可以使用 Red Hat Quay API 端点来管理存储库自动运行策略。

先决条件

  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false
  • 您已创建了 OAuth 访问令牌。
  • 已登陆到 Red Hat Quay。

流程

  1. 输入以下 POST /api/v1/repository/{repository}/autoprunepolicy/ 命令,创建一个新策略来限制机构中允许的标签数:

    $ 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/
    Copy to Clipboard Toggle word wrap

    另外,您可以在创建日期后将标签设置为在指定时间过期:

    $ 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/
    Copy to Clipboard Toggle word wrap

    输出示例

    {"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
    Copy to Clipboard Toggle word wrap

  2. 可选。您可以添加额外的策略,并在 tagPatterntagPatternMatches 字段中传递,以仅修剪与给定 regex 模式匹配的标签。例如:

    $ curl -X POST \
      -H "Authorization: Bearer <access_token>" \
      -H "Content-Type: application/json" \
      -d '{
        "method": "<creation_date>",
        "value": "<7d>",
        "tagPattern": "<^test.>*",
        "tagPatternMatches": <false> 
    1
    
      }' \
      "https://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/"
    Copy to Clipboard Toggle word wrap
    1
    tagPatternMatches 设置为 false 会导致所有与给定正则表达式模式匹配的标签都会被修剪。在本例中,除 ^test 以外的所有 标签都会被修剪。

    输出示例

    {"uuid": "b53d8d3f-2e73-40e7-96ff-736d372cd5ef"}
    Copy to Clipboard Toggle word wrap

  3. 您可以使用 PUT /api/v1/repository/{repository}/autoprunepolicy/{policy_uuid} 命令为存储库更新您的策略,并传递 UUID。例如:

    $ curl -X PUT \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Content-Type: application/json" \
      -d '{
        "method": "number_of_tags",
        "value": "5",
        "tagPattern": "^test.*",
        "tagPatternMatches": true
      }' \
      "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/autoprunepolicy/<uuid>"
    Copy to Clipboard Toggle word wrap

    此命令不返回输出。继续下一步,以检查您的自动修剪策略。

  4. 输入以下命令检查自动修剪策略:

    $ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
    Copy to Clipboard Toggle word wrap

    或者,您可以包含 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
    Copy to Clipboard Toggle word wrap

    输出示例

    {"policies": [{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7", "method": "number_of_tags", "value": 10}]}
    Copy to Clipboard Toggle word wrap

  5. 您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 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
    Copy to Clipboard Toggle word wrap

    输出示例

    {"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
    Copy to Clipboard Toggle word wrap

您可以使用 Red Hat Quay API 端点为不属于您的用户帐户管理存储库上的自动运行策略,只要存储库上具有 admin 权限。

先决条件

  • 您已在 config.yaml 文件中设置了 BROWSER_API_CALLS_XHR_ONLY: false
  • 您已创建了 OAuth 访问令牌。
  • 已登陆到 Red Hat Quay。
  • 在您要为其创建策略的存储库上具有 admin 权限。

流程

  1. 输入以下 POST /api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/ 命令,创建一个新策略来限制用户的标签数:

    $ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags","value": 2}' https://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
    Copy to Clipboard Toggle word wrap

    输出示例

    {"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}
    Copy to Clipboard Toggle word wrap

  2. 可选。您可以为当前用户添加额外的策略,并传递 tagPatterntagPatternMatches 字段,以仅修剪与给定 regex 模式匹配的标签。例如:

    $ curl -X POST \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Content-Type: application/json" \
      -d '{
        "method": "creation_date",
        "value": "7d",
        "tagPattern": "^v*",
        "tagPatternMatches": true
      }' \
      "http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/"
    Copy to Clipboard Toggle word wrap

    输出示例

    {"uuid": "b3797bcd-de72-4b71-9b1e-726dabc971be"}
    Copy to Clipboard Toggle word wrap

  3. 您可以使用 PUT /api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_uuid&gt; 命令为当前用户更新您的策略。例如:

    $ curl -X PUT   -H "Authorization: Bearer <bearer_token>"   -H "Content-Type: application/json"   -d '{
        "method": "creation_date",
        "value": "4d",
        "tagPattern": "^test.",
        "tagPatternMatches": true
      }'   "https://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_uuid>"
    Copy to Clipboard Toggle word wrap

    更新策略不会在 CLI 中返回输出。

  4. 输入以下命令检查自动修剪策略:

    $ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
    Copy to Clipboard Toggle word wrap

    或者,您可以包含 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
    Copy to Clipboard Toggle word wrap

    输出示例

    {"uuid": "81ee77ec-496a-4a0a-9241-eca49437d15b", "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": true}
    Copy to Clipboard Toggle word wrap

  5. 您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。

    $ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_uuid>
    Copy to Clipboard Toggle word wrap

    输出示例

    {"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat