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
    # ...

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
      # ...
      1
      在这种情况下,保留两个标签。
    2. 要设置策略方法来删除标签,其创建日期早于提供的时间跨度(例如 5d ),请使用 creation_date 方法:

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

    1. 标记将推送到 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
    2. 输入以下命令将四个示例镜像推送到启用了 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
  4. 检查您将镜像推送到的注册表中是否有四个标签。
  5. 默认情况下,registry 级别的自动修剪程序每 24 小时运行一次。24 小时后,删除了两个最旧的镜像标签,如果您遵循这些指令,则保留 test3test4 标签。检查您的 Red Hat Quay 组织,以确保删除了两个最旧的标签。

16.3.3. 使用 Red Hat Quay v2 UI 为机构创建一个自动修剪策略

使用以下步骤为使用 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 垃圾回收

16.3.4. 使用 Red Hat Quay API 为命名空间创建一个自动修剪策略

您可以使用 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/

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

    $ 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"}

  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/"
    1
    tagPatternMatches 设置为 true 会导致修剪与给定正则表达式模式匹配的标签。在本例中,与 ^v* 匹配的标签会被修剪。

    输出示例

    {"uuid": "ebf7448b-93c3-4f14-bf2f-25aa6857c7b0"}

  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>"

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

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

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

    输出示例

    {"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}]}

  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

16.3.5. 使用 API 为当前用户创建一个命名空间自动修剪策略

您可以使用 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/

    输出示例

    {"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}

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

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

    或者,您可以包含 UUID:

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

    输出示例

    {"policies": [{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859", "method": "number_of_tags", "value": 10}]}

  3. 您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 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"}

16.3.6. 使用 Red Hat Quay v2 UI 为存储库创建自动修剪策略

使用以下步骤使用 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 垃圾回收

16.3.7. 使用 Red Hat Quay API 为存储库创建自动修剪策略

您可以使用 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/

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

    $ 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"}

  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/"
    1
    tagPatternMatches 设置为 false 会导致所有与给定正则表达式模式匹配的标签都会被修剪。在本例中,除 ^test 以外的所有 标签都会被修剪。

    输出示例

    {"uuid": "b53d8d3f-2e73-40e7-96ff-736d372cd5ef"}

  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>"

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

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

    $ 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}]}

  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

    输出示例

    {"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}

16.3.8. 在带有 API 的用户的存储库上创建自动修剪策略

您可以使用 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/

    输出示例

    {"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}

  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/"

    输出示例

    {"uuid": "b3797bcd-de72-4b71-9b1e-726dabc971be"}

  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>"

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

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

    $ 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

    输出示例

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

  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>

    输出示例

    {"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.