14.2. 使用 Red Hat Quay UI 管理命名空间自动运行策略

命名空间自动运行策略使用 Red Hat Quay UI v2 创建。这可以在配置 Red Hat Quay config.yaml 文件后完成,以启用自动运行功能和 v2 UI。

注意

使用 Red Hat Quay 传统 UI 时无法使用此功能。

14.2.1. 配置 Red Hat Quay 命名空间自动运行功能

使用以下步骤配置 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
    # ...

14.2.2. 使用 Red Hat Quay v2 UI 创建自动修剪策略

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

先决条件

  • 您已启用了 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 UI v2 上,单击导航窗格中的 Organizations
  5. 选择您要将 auto-pruning 功能应用到的机构名称,如 test_organization
  6. 单击 Settings
  7. 单击 Auto-Prune Policies。例如:

    Auto-Prune Policies page

  8. 单击下拉菜单并选择所需的策略,例如,按标签数
  9. 选择要保留所需的标签数量。默认情况下,这在 20 个标签中设置。在本例中,要保留的标签数量设置为 3

点击 Save。收到以下警报: Successfully updated auto-prune 策略

验证

  • 导航到存储库的 Tags 页面。几分钟后,auto-pruner worker 会删除不再在所建立的标准中适合的标签。在本例中,它会删除 busybox:test 标签,并保留 busybox:test2busybox:test3busybox:test4 标签。

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

14.2.3. 使用 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/<quayadmin>/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/<quayadmin>/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/<quayadmin>/autoprunepolicy/

    输出示例

    {"policies": [{"uuid": "73d64f05-d587-42d9-af6d-e726a4a80d6e", "method": "creation_date", "value": "7d"}]}

  3. 您可以输入以下命令来删除自动修剪策略:

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

14.2.4. 使用 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/8c03f995-ca6f-4928-b98d-d75ed8c14859
    {"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859", "method": "number_of_tags", "value": 10}

    输出示例

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