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_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 组织,以确保删除了两个最旧的标签。

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

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

先决条件

  • 您已启用了 FEATURE_AUTO_PRUNE 功能。

流程

  1. 标记四个示例镜像,如 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
  2. 输入以下命令将四个示例镜像(如 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
  3. 检查您的存储库中是否有四个标签。
  4. 在 Red Hat Quay v2 UI 上,单击导航窗格中的 Organizations
  5. 选择要将 auto-pruning 功能应用到的机构名称,如 test_organization
  6. 单击 Settings
  7. 单击 Auto-Prune Policies。例如:

    Auto-Prune Policies page

  8. 单击下拉菜单并选择所需的策略,例如 按标签数
  9. 选择要保留的标签数。默认情况下,这是在 20 个标签设置的。在本例中,要保留的标签数量设置为 3
  10. 点击 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。

流程

  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/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}
  2. 输入以下命令检查自动修剪策略:

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

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

流程

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

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

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

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

先决条件

  • 您已启用了 FEATURE_AUTO_PRUNE 功能。

流程

  1. 标记四个示例镜像,如 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
  2. 输入以下命令将四个示例镜像(如 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
  3. 检查您的存储库中是否有四个标签。
  4. 在 Red Hat Quay v2 UI 上,单击导航窗格中的 Repository
  5. 选择您要将 auto-pruning 功能应用到的机构名称,例如 < organization_name>/<repository_name >。
  6. 单击 Settings
  7. 单击 Repository Auto-Prune Policies
  8. 单击下拉菜单并选择所需的策略,例如 按标签数
  9. 选择要保留的标签数。默认情况下,这是在 20 个标签设置的。在本例中,要保留的标签数量设置为 3
  10. 点击 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。

流程

  1. 输入以下 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}
  2. 输入以下命令检查自动修剪策略:

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

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

流程

  1. 输入以下 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"}

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

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

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.