6.12. 使用 Red Hat Quay API 管理自动修剪策略


可以使用 Red Hat Quay API 为机构、存储库和用户创建、检索、更改和删除自动修剪策略。

流程

  1. 输入以下命令使用 POST /api/v1/repository 端点创建存储库:

    $ curl -X POST \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Content-Type: application/json" \
      -d '{
        "repository": "<new_repository_name>",
        "visibility": "<private>",
        "description": "<This is a description of the new repository>."
      }' \
      "https://quay-server.example.com/api/v1/repository"

    输出示例

    {"namespace": "quayadmin", "name": "<new_repository_name>", "kind": "image"}

  2. 您可以使用 GET /api/v1/repository 端点列出存储库。例如:

    $ curl -X GET \
      -H "Authorization: Bearer <ACCESS_TOKEN>" \
      "https://quay-server.example.com/api/v1/repository?public=true&starred=false&namespace=<NAMESPACE>"

    输出示例

    {"repositories": [{"namespace": "quayadmin", "name": "busybox", "description": null, "is_public": false, "kind": "image", "state": "MIRROR", "is_starred": false, "quota_report": {"quota_bytes": 2280675, "configured_quota": 2199023255552}}]}

  3. 通过 POST /api/v1/repository/{repository}/changevisibility 端点,可以将可见性从公共改为私有:

    $ curl -X POST \
      -H "Authorization: Bearer <ACCESS_TOKEN>" \
      -H "Content-Type: application/json" \
      -d '{
            "visibility": "private"
          }' \
      "https://quay-server.example.com/api/v1/repository/<NAMESPACE>/<REPO_NAME>/changevisibility"

    输出示例

    {"success": true}

  4. 您可以检查 Red Hat Quay UI,或者您可以输入以下 GET /api/v1/repository/{repository} 命令来返回有关存储库的详情:

    $ curl -X GET -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"

    输出示例

    {"detail": "Not Found", "error_message": "Not Found", "error_type": "not_found", "title": "not_found", "type": "http://quay-server.example.com/api/v1/error/not_found", "status": 404}
  5. 存储库描述可以使用 PUT /api/v1/repository/{repository} 端点更新:

    $ curl -X PUT \
      -H "Authorization: Bearer <bearer_token>" \
      -H "Content-Type: application/json" \
      -d '{
            "description": "This is an updated description for the repository."
          }' \
      "https://quay-server.example.com/api/v1/repository/<NAMESPACE>/<REPOSITORY>"

    输出示例

    {"success": true}

  6. 输入以下命令使用 DELETE /api/v1/repository/{repository} 端点删除存储库:

    $ curl -X DELETE   -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"

    此命令不会在 CLI 中返回输出。

6.12.1. 使用 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

6.12.2. 使用 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"}

6.12.3. 使用 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"}

6.12.4. 在带有 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.