Red Hat Quay API 指南
前言 复制链接链接已复制到粘贴板!
Red Hat Quay 应用程序编程接口(API)提供了一个全面的 RESTful 接口,用于管理和自动化 Red Hat Quay 中的任务。此 API 围绕 OAuth 2.0 协议 而设计,支持安全、精细访问 Red Hat Quay 资源,并允许管理员和用户执行诸如创建存储库、管理镜像、设置权限等操作。
Red Hat Quay 遵循 Semantic Versioning (SemVer)原则,确保跨版本的可预测的 API 稳定性,例如:
- 主发行版本 :引入新功能。可能包括破坏对 API 兼容性的更改。例如,Red Hat Quay 2.0 的 API 与 Red Hat Quay 3.0 不同。
- 次发行版本 :以向后兼容的方式添加新功能。例如,3. y 版本为 版本 3. 发行版本添加了功能。
- 补丁版本 :提供 bug 修复和改进,同时保持与次要发行本(如 3.y.z )的向后兼容性。
以下指南更详细地描述了 Red Hat Quay API,并提供了有关以下主题的详情:
- OAuth 2 访问令牌以及如何比较传统的 API 令牌和 Red Hat Quay 机器人令牌
- 生成 OAuth 2 访问令牌
- 令牌管理的最佳实践
- OAuth 2 访问令牌功能
- 使用 Red Hat Quay API
- Red Hat Quay API 配置示例
本指南附带第二个指南 Red Hat Quay API 参考,它提供有关所有 api/v1
端点的信息,以及如何使用示例命令访问这些端点。
第 1 章 Red Hat Quay OAuth 2.0 令牌简介 复制链接链接已复制到粘贴板!
Red Hat Quay OAuth 2 令牌系统提供了一种安全、基于标准的方法来访问 Red Hat Quay 的 API 和其他相关资源。基于 OAuth 2 令牌的方法提供了一种安全方法,用于处理复杂环境的身份验证和授权。与更传统的 API 令牌相比,Red Hat Quay 的 OAuth 2 令牌系统包括以下改进:
- 基于标准的安全性,遵循 OAuth 2.0 协议。
- 通过删除存在 OAuth 2 令牌的应用程序来撤销访问。
- 细粒度访问控制,允许 Red Hat Quay 管理员为令牌分配特定权限。
- 委派访问,允许第三方应用程序和服务代表用户执行。
- 永不过时,这有助于确保 Red Hat Quay 保持与其他服务、平台和集成兼容。
Red Hat Quay 主要支持两种类型的令牌:OAuth 2 访问令牌和机器人帐户令牌。在保证时,也提供了第三个 令牌 类型(即 OCI 引用令牌)来列出存储库下清单的 OCI 引用器。
以下章节详细介绍了每种令牌类型以及如何生成每种令牌类型。
第 2 章 OAuth 2 访问令牌 复制链接链接已复制到粘贴板!
OAuth 2 访问令牌(包括 Red Hat Quay 的 "API 令牌")启用对 Red Hat Quay API 的用户身份验证访问,适用于需要用户身份验证的应用程序。这些令牌通过 OAuth 2 授权过程获得,其中 Red Hat Quay 管理员代表自己或其他用户生成令牌来访问 Red Hat Quay API 端点。OAuth 2 令牌根据为令牌定义的范围来授权对 API 端点的操作。
虽然 OAuth 2 令牌根据令牌定义的范围来授权对 API 端点的操作,但访问资源本身取决于 Red Hat Quay 基于角色的访问控制(RBAC)机制。可以在资源上创建操作,例如存储库,前者为您提供了针对该命名空间的正确角色(Admin 或 Creator)。即使 API 令牌被授予了 repo:admin
范围,也是如此。
OAuth 2 访问令牌只能通过 Red Hat Quay UI 创建;无法使用 CLI 创建 OAuth 2 访问令牌。在创建 OAuth 2 令牌时,可以为令牌拥有者选择以下选项:
- 管理组织.选择后,允许用户管理机构,包括创建机器人、创建团队、调整团队成员资格和更改计费设置。
- 管理存储库.选择后,提供对授予用户有权访问的所有存储库的管理员访问权限。
- 创建存储库。选择后,允许用户在授予用户创建存储库的任何命名空间中创建存储库。
- 查看所有可见的存储库。选择后,用户可以查看和拉取授予用户可见的所有存储库。
- 对任何可访问的存储库进行读/写。选择后,允许用户查看、推送和拉取到授予用户具有写入访问权限的所有存储库。
- 超级用户访问.选择后,为用户提供了管理安装的能力,包括管理用户、管理超级用户面板中的机构和其他功能。
- 选择了用户时,允许用户管理您的帐户,包括创建机器人并将其权限授予您的存储库。
- 读取用户信息.选择后,为用户提供读取用户信息(如用户名和电子邮件地址)的能力。
令牌经销商应注意,他们在代表用户生成令牌时授予其授权,并且在授予了管理机构、Super User Access 和 管理用户 等权限前,用户应具有绝对信任。此外,访问令牌仅在创建时显示;它们无法通过 CLI 列出,也无法在 Red Hat Quay UI 中找到。如果访问令牌丢失或忘记,则必须创建新令牌;无法恢复令牌。
OAuth 2 访问令牌在 API 调用的 Authorization
标头中作为 Bearer
令牌传递,因此,用于向定义的 API 端点提供身份验证和授权,如镜像标签、存储库、机构等。
该 API 位于 Red Hat Quay 主机的 /api/v1
端点中。例如: https://<quay-server.example.com>/api/v1
。它允许用户通过其浏览器连接到端点,通过启用 Swagger UI 来通过浏览器连接到 GET
、POST
、DELETE
和 PUT
Red Hat Quay 设置。API 可以被发出 API 调用的应用访问,并使用 OAuth 令牌,它将数据作为 JSON 发送和接收数据。
使用 Red Hat Quay 时,目前无法在 OAuth 2 访问令牌上轮转或设置过期时间,令牌生命周期为 10 年。当令牌被泄露时,可以通过删除创建令牌的应用程序来删除令牌。但是,这会删除在该特定应用程序内所做的所有令牌。
在实践中,Red Hat Quay 管理员可以在每次要为用户创建新 OAuth 令牌时,在组织的 Applications 页面中创建新的 OAuth 应用程序。这将确保单个应用不负责所有 OAuth 令牌。因此,如果用户的令牌被破坏,管理员将删除被入侵令牌的应用。这有助于避免对令牌可能属于同一应用的其他用户造成中断。
以下小节介绍了如何生成和重新分配 OAuth 2 访问令牌。
2.1. 创建 OAuth 2 访问令牌 复制链接链接已复制到粘贴板!
使用 Red Hat Quay 时,您必须创建一个 OAuth 2 访问令牌,然后才能访问机构的 API 端点。OAuth 2 访问令牌只能通过 Red Hat Quay UI 生成;CLI 无法用于生成 OAuth 2 访问令牌。
使用以下步骤创建 OAuth2 访问令牌。
先决条件
- 您已以管理员身份登录到 Red Hat Quay。
- 您已创建了 OAuth 2 应用。
流程
- 在主页上,选择一个机构。
- 在导航窗格中,选择 Applications。
- 单击应用程序的名称,如 Test application。
- 在导航窗格中,选择 Generate Token。
选中以下选项的复选框:
- 管理组织.选择后,允许用户管理机构,包括创建机器人、创建团队、调整团队成员资格和更改计费设置。
- 管理存储库.选择后,提供对授予用户有权访问的所有存储库的管理员访问权限。
- 创建存储库。选择后,允许用户在授予用户创建存储库的任何命名空间中创建存储库。
- 查看所有可见的存储库。选择后,用户可以查看和拉取授予用户可见的所有存储库。
- 对任何可访问的存储库进行读/写。选择后,允许用户查看、推送和拉取到授予用户具有写入访问权限的所有存储库。
- 超级用户访问.选择后,为用户提供了管理安装的能力,包括管理用户、管理超级用户面板中的机构和其他功能。
- 选择了用户时,允许用户管理您的帐户,包括创建机器人并将其权限授予您的存储库。
- 读取用户信息.选择后,为用户提供读取用户信息(如用户名和电子邮件地址)的能力。
- 单击 Generate Access Token。您将被重定向到新页面。
- 查看您允许的权限,然后点 授权应用程序。点 Authorize Application 确认您的决定。
您将被重定向到 Access Token 页面。复制并保存访问令牌。
重要这是复制并保存访问令牌的唯一机会。在离开此页面后,无法恢复它。
2.2. 重新分配 OAuth 访问令牌 复制链接链接已复制到粘贴板!
机构管理员可分配 OAuth API 令牌,供其他用户具有特定权限创建。这允许在没有机构管理权限创建 OAuth API 令牌的用户使用令牌时准确反映审计日志。
以下流程仅适用于当前的 Red Hat Quay UI。目前没有在 Red Hat Quay v2 UI 中实施。
先决条件
您以具有机构管理特权的用户身份登录,供您分配 OAuth API 令牌。
注意OAuth API 令牌用于身份验证,而不是授权。例如,您要分配 OAuth 令牌的用户必须具有
Admin
团队角色才能使用管理 API 端点。如需更多信息,请参阅管理对存储库的访问。
流程
可选。如果还没有更新,更新 Red Hat Quay
config.yaml
文件,使其包含FEATURE_ASSIGN_OAUTH_TOKEN: true
字段:# ... FEATURE_ASSIGN_OAUTH_TOKEN: true # ...
# ... FEATURE_ASSIGN_OAUTH_TOKEN: true # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选。重启 Red Hat Quay registry。
- 以机构管理员身份登录到您的 Red Hat Quay registry。
- 单击为您为其创建 OAuth 令牌的组织名称。
- 在导航窗格中,单击 Applications。
- 点正确的应用程序名称。
- 在导航窗格中,单击 Generate Token。
- 单击 Assign another user,并输入将要接管 OAuth 令牌的用户名称。
选中您希望新用户具有的所需权限框。例如,如果您只希望新用户能够创建存储库,请单击 Create Repositories。
重要权限控制由机构中的团队角色定义,无论这里选择的选项如何。例如,您要分配 OAuth 令牌的用户必须具有
Admin
团队角色才能使用管理 API 端点。仅选中 Super User Access 框并不实际授予用户这个权限。超级用户必须通过
config.yaml
文件配置,并且 此处必须选中该框。单击 Assign token。此时会出现一个弹出框,确认带有以下信息的授权,并显示批准的权限:
This will prompt user <username> to generate a token with the following permissions: repo:create
This will prompt user <username> to generate a token with the following permissions: repo:create
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在弹出窗口中,单击 Assign token。您会被重定向到显示以下信息的新页面:
Token assigned successfully
Token assigned successfully
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
- 在重新分配 OAuth 令牌后,分配的用户必须接受令牌来接收 bearer 令牌,该令牌需要使用 API 端点。请求分配的用户登录到 Red Hat Quay registry。
- 登录后,他们必须在 Users 和 Organizations 下单击其用户名。
- 在导航窗格中,他们必须单击 External Logins & Applications。
- 在 Authorized Applications 下,它们必须单击 授权应用程序 来确认应用程序。它们会被定向到一个新页面,其中必须单击 授权应用程序 进行确认。
- 它们会被重定向到显示其 bearer 令牌的新页面。它们必须保存此 bearer 令牌,因为它无法再次查看。
2.3. 删除 OAuth 2 访问令牌 复制链接链接已复制到粘贴板!
由于 OAuth 2 访问令牌是通过 OAuth 应用创建的,所以无法轮转或更新它们。如果令牌被破坏,或者您需要删除令牌,您必须通过 Red Hat Quay UI 删除其关联的应用程序。
删除应用程序会删除该特定应用程序中的所有令牌。请谨慎使用。
先决条件
- 您已创建了 OAuth 2 访问令牌。
流程
- 在 Red Hat Quay UI 上,单击托管应用的组织的名称。然后,在导航窗格中,单击 Applications。
- 单击应用名称,如 Test application。
- 在导航窗格中,单击 Delete Application。您将被重定向到新页面。点 Delete application 并确认您的决定。
第 3 章 机器人帐户令牌 复制链接链接已复制到粘贴板!
机器人帐户 令牌是 密码类型 凭证,用于通过普通的 Docker v2 端点访问 Red Hat Quay registry;它们被定义为 UI 上的 令牌,因为密码本身是加密的。
机器人帐户令牌是设计用于自动化和持续集成工作流的持久令牌。默认情况下,Red Hat Quay 的机器人帐户令牌不会过期,不需要用户交互,这使得机器人帐户成为非互动用例的理想选择。
机器人帐户令牌在创建机器人时自动生成,且特定于非用户;也就是说,它们连接到创建它们的用户和机构命名空间。例如,一个机器名为 project_tools+<robot_name> 的机器人
与 project_tools
命名空间关联。
机器人帐户令牌提供访问权限,而无需用户个人凭据。配置机器人帐户的方式(例如,READ
、WRITE
或 ADMIN
权限之一)最终定义机器人帐户可以执行的操作。
由于机器人帐户令牌具有持久性且不默认过期,因此它们非常适合自动工作流,要求在不进行手动续订的情况下对 Red Hat Quay 进行一致访问。尽管如此,但可以通过 UI 轻松生成机器人帐户令牌。也可以通过 CLI 使用正确的 API 端点来重新生成它们。为增强 Red Hat Quay 部署的安全性,管理员应定期刷新机器人帐户令牌。另外,有了 带有机器人帐户功能的无密钥身份验证,可以为外部 OIDC 令牌交换机器人令牌,并利用它们,以便它们仅有一小时,从而增强 registry 的安全性。
当命名空间被删除时,或者删除机器人帐户时,会在收集器调度运行时收集它们。
以下部分介绍了如何使用 API 为机构机器人和用户机器人生成机器人令牌。
3.1. 使用 Red Hat Quay UI 重新生成机器人令牌 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay UI 重新生成机器人令牌。
先决条件
- 已登陆到 Red Hat Quay。
流程
- 点机构的名称。
- 在导航窗格中,单击 Robot accounts。
- 单击机器人帐户的名称,例如 testorg3+test。
- 在弹出窗口中点 Regenerate token。
3.2. 使用 Red Hat Quay API 重新生成机器人令牌 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay API 重新生成机器人帐户令牌。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
输入以下命令,使用
POST /api/v1/organization/{orgname}/robots/{robot_shortname}/regenerate
端点为机构重新生成机器人令牌:curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<orgname>/robots/<robot_shortname>/regenerate"
$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<orgname>/robots/<robot_shortname>/regenerate"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "test-org+test", "created": "Fri, 10 May 2024 17:46:02 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}
{"name": "test-org+test", "created": "Fri, 10 May 2024 17:46:02 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令,使用
POST /api/v1/user/robots/{robot_shortname}/regenerate
端点为当前用户重新生成机器人令牌:curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>/regenerate"
$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>/regenerate"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "quayadmin+test", "created": "Fri, 10 May 2024 14:12:11 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}
{"name": "quayadmin+test", "created": "Fri, 10 May 2024 14:12:11 -0000", "last_accessed": null, "description": "", "token": "<example_secret>"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 OCI 引用器 OAuth 访问令牌 复制链接链接已复制到粘贴板!
在某些情况下,根据 Red Hat Quay 部署配置为使用的功能,您可能需要利用 OCI 引用器 OAuth 访问令牌。OCI 引用 OAuth 访问令牌用于列出存储库下清单的 OCI 引用器,并使用 curl
命令向 Red Hat Quay v2/auth
端点发出 GET
请求。
这些令牌通过基本的 HTTP 身份验证获取,其中用户提供了以 Base64 编码的用户名和密码,以便直接使用 v2/auth
API 端点进行身份验证。因此,它们基于用户的凭证,它们不会遵循与 OAuth 2 相同的详细的授权流,但仍然允许用户授权 API 请求。
OCI 引用器 OAuth 访问令牌 不提供基于范围的权限,也不会过期。它们只用于列出仓库下清单的 OCI 引用器。
其他资源
4.1. 创建 OCI 引用器 OAuth 访问令牌 复制链接链接已复制到粘贴板!
此 OCI 引用 OAuth 访问令牌用于列出存储库下清单的 OCI 引用器。
流程
更新
config.yaml
文件,使其包含FEATURE_REFERRERS_API: true
字段。例如:# ... FEATURE_REFERRERS_API: true # ...
# ... FEATURE_REFERRERS_API: true # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令对凭证进行 Base64 编码:
echo -n '<username>:<password>' | base64
$ echo -n '<username>:<password>' | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
abcdeWFkbWluOjE5ODlraWROZXQxIQ==
abcdeWFkbWluOjE5ODlraWROZXQxIQ==
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令使用 base64 编码字符串,并将 URL 端点改为 Red Hat Quay 服务器:
curl --location '<quay-server.example.com>/v2/auth?service=<quay-server.example.com>&scope=repository:quay/listocireferrs:pull,push' --header 'Authorization: Basic <base64_username:password_encode_token>' -k | jq
$ curl --location '<quay-server.example.com>/v2/auth?service=<quay-server.example.com>&scope=repository:quay/listocireferrs:pull,push' --header 'Authorization: Basic <base64_username:password_encode_token>' -k | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{ "token": "<example_secret> }
{ "token": "<example_secret> }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 5 章 启用并使用 Red Hat Quay API 复制链接链接已复制到粘贴板!
通过使用 Red Hat Quay API,您可以简化容器 registry 管理,自动执行任务,并将 Red Hat Quay 的功能整合到现有工作流中。这可以提高效率,提供更高的灵活性(通过存储库管理、用户管理、用户权限、镜像管理等),提高您的组织的稳定性、存储库或整体部署等。
以下章节解释了如何启用和使用 Red Hat Quay API。
5.1. 使用 Red Hat Quay API 复制链接链接已复制到粘贴板!
创建应用程序并使用所需设置生成 OAuth 2 访问令牌后,您可以通过使用 CLI 的 API 将访问令牌传递给 GET
、PUT
、POST
或 DELETE
设置。通常,Red Hat Quay API 命令类似以下示例:
curl -X GET -H "Authorization: Bearer <your_access_token>" \ https://<quay-server.example.com>/api/v1/<example>/<endpoint>/
$ curl -X GET -H "Authorization: Bearer <your_access_token>" \
https://<quay-server.example.com>/api/v1/<example>/<endpoint>/
所有 Red Hat Quay API 均记录在 应用程序编程接口(API) 章节中。了解它们的记录方式对于成功调用至关重要。例如,为 createAppToken
API 端点使用以下条目:
要使用 API 端点,您可以传递访问令牌,然后根据您的需要包含适当的字段。以下流程演示了如何使用 POST /api/v1/user/apptoken
端点。
先决条件
- 您可以访问 Red Hat Quay API,它要求已创建了 OAuth 2 访问令牌。
流程
输入
POST /api/v1/user/apptoken
API 调用来创建用户应用程序:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"token": {"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null, "token_code": "string"}}
{"token": {"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null, "token_code": "string"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在 Red Hat Quay UI 中,在导航窗格 → Account Settings 中点您的用户名。应用的名称显示在 Docker CLI 和其他应用程序 Tokens 标题下。例如:
5.2. 在 Red Hat Quay 中启用基于浏览器的 API 调用 复制链接链接已复制到粘贴板!
默认情况下,Red Hat Quay 接受来自命令行的 CURL 请求。但是,如果要从浏览器扩展(如 Postman)或一个浏览器接口(如 Swagger )启用 API 访问,您必须在 config.yaml
文件中禁用 BROWSER_API_CALLS_XHR_ONLY
。
流程
在 Red Hat Quay
config.yaml
文件中,将BROWSER_API_CALLS_XHR_ONLY
设置为False
。例如:# ... BROWSER_API_CALLS_XHR_ONLY: false # ...
# ... BROWSER_API_CALLS_XHR_ONLY: false # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启 Red Hat Quay 部署。
5.3. 访问 Red Hat Quay Swagger UI 复制链接链接已复制到粘贴板!
Red Hat Quay 管理员和用户可使用 Swagger UI - 一个编译可执行文件的交互式 Web 界面与 API 交互。Swagger UI 可以作为容器启动,该容器指向 Red Hat Quay 实例的 API 发现端点(/api/v1/discovery
)。部署容器后,您可以访问 Swagger UI,该 UI 从指定的 URL 加载 Red Hat Quay 的 OpenAPI 规格。Red Hat Quay 管理员和用户可探索可用的端点及其结构。
使用以下步骤访问 Red Hat Quay Swagger UI。
先决条件
-
您已在
config.yaml
文件中设置了BROWSER_API_CALLS_XHR_ONLY: false
。
流程
输入以下命令来部署 Swagger UI 容器,将 URL 指向 Red Hat Quay 的 API 发现端点。例如:
podman run -p 8080:8080 -e SWAGGER_JSON_URL=<quay-server.example.com> docker.swagger.io/swaggerapi/swagger-ui
$ podman run -p 8080:8080 -e SWAGGER_JSON_URL=<quay-server.example.com> docker.swagger.io/swaggerapi/swagger-ui
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
导航到
localhost
URL。在这个示例中,它是 http://localhost:8080/。 使用 Swagger UI 测试各种 API 端点。例如,要为用户创建新令牌,您可以点击 POST /api/v1/user/apptoken endpoint → Try it out → Execute 生成示例
curl
命令。注意目前,无法生成服务器响应。这是因为 Swagger UI 没有设置为接受 bearer 令牌。因此,每个命令会返回以下错误:
{"error": "CSRF token is invalid or missing."}
。作为临时解决方案,您可以将此命令复制到终端中,并手动添加 bearer 令牌,如-H 'Authorization: Bearer <bearer_token>'
5.4. 使用 API 自动化 Red Hat Quay 进程 复制链接链接已复制到粘贴板!
使用 API 时,有权访问 API 的 Red Hat Quay 管理员和用户可以自动执行重复性任务,如存储库管理或镜像修剪。
以下示例演示了如何使用 Python 脚本和 cron 作业来自动删除 OAuth 2 应用,但管理员的令牌 除外。如果要确保在一定时间段内循环与 OAuth 2 访问令牌关联的应用程序,这可能很有用。
先决条件
- 您可以访问 Red Hat Quay API,它要求已创建了 OAuth 2 访问令牌。
-
已使用以下内容安装了 Python
请求
库。 - 您已在机器上启用了 cron 作业。
- 您已创建了几个机构应用程序,包括不会被删除的应用程序。
流程
创建执行 API 命令的 Python 脚本。以下示例使用
DELETE /api/v1/organization/{orgname}/applications/{client_id}
API 端点删除机构应用程序。example.py 文件
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将脚本保存为
prune_applications.py
。 创建自动运行脚本的 cron 作业:
运行以下命令打开 crontab 编辑器:
crontab -e
$ crontab -e
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在编辑器中,添加用于运行脚本的 cron 作业。以下示例按每月运行一次脚本:
0 0 1 * * sudo python /path/to/prune_images.py >> /var/log/prune_images.log 2>&1
0 0 1 * * sudo python /path/to/prune_images.py >> /var/log/prune_images.log 2>&1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 6 章 Red Hat Quay API 示例 复制链接链接已复制到粘贴板!
本章的其余部分提供了 Red Hat Quay API 示例。
6.1. 使用 API 管理用户应用程序 复制链接链接已复制到粘贴板!
Red Hat Quay 用户可以创建、列出关于和删除用户应用程序的信息,该应用程序 可用作 Docker、Podman 或其他服务供应商密码的替代选择。用户应用令牌像您的用户名和密码一样工作,但已加密,不向正在访问 Red Hat Quay 的第三方提供任何信息。
通过 CLI 创建后,用户应用程序令牌会在 Red Hat Quay UI 的 User Settings 下列出。请注意,这与在用户设置下创建的应用程序令牌不同,并应完全被视为不同的应用程序。
使用以下步骤创建用户应用程序令牌。
先决条件
- 您已创建了 OAuth 2 访问令牌。
流程
输入
POST /api/v1/user/apptoken
API 调用来创建用户应用程序:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"token": {"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null, "token_code": "string"}}
{"token": {"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null, "token_code": "string"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
GET /api/v1/user/apptoken
命令获取有关应用程序的信息,包括应用程序何时过期。例如:curl -X GET \ -H "Authorization: Bearer <access_token>" \ "http://quay-server.example.com/api/v1/user/apptoken"
$ curl -X GET \ -H "Authorization: Bearer <access_token>" \ "http://quay-server.example.com/api/v1/user/apptoken"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow {"tokens": [{"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null}], "only_expiring": null}
{"tokens": [{"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null}], "only_expiring": null}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以通过输入
GET /api/v1/user/apptoken/{token_uuid}
命令获取有关特定用户应用程序的信息:curl -X GET \ -H "Authorization: Bearer <access_token>" \ "http://quay-server.example.com/api/v1/user/apptoken/<token_uuid>"
$ curl -X GET \ -H "Authorization: Bearer <access_token>" \ "http://quay-server.example.com/api/v1/user/apptoken/<token_uuid>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"token": {"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null, "token_code": "string"}}
{"token": {"uuid": "6b5aa827-cee5-4fbe-a434-4b7b8a245ca7", "title": "MyAppToken", "last_accessed": null, "created": "Wed, 08 Jan 2025 19:32:48 -0000", "expiration": null, "token_code": "string"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
DELETE /api/v1/user/apptoken/{token_uuid}
端点删除或撤销用户应用程序令牌:curl -X DELETE \ -H "Authorization: Bearer <access_token>" \ "http://quay-server.example.com/api/v1/user/apptoken/<token_uuid>"
$ curl -X DELETE \ -H "Authorization: Bearer <access_token>" \ "http://quay-server.example.com/api/v1/user/apptoken/<token_uuid>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。您可以通过输入上述其中一个命令来返回令牌列表。
6.2. 发现 Red Hat Quay API 端点 复制链接链接已复制到粘贴板!
Red Hat Quay API 端点可以使用 API 发现。
使用以下步骤发现可用的 API 端点。
先决条件
- 您已创建了 OAuth 2 访问令牌。
流程
输入以下
GET /api/v1/discovery
命令,以 swagger API 格式列出所有可用的 API 端点:curl -X GET "https://<quay-server.example.com>/api/v1/discovery?query=true" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/discovery?query=true" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
--- : "Manage the tags of a repository."}, {"name": "team", "description": "Create, list and manage an organization's teams."}, {"name": "trigger", "description": "Create, list and manage build triggers."}, {"name": "user", "description": "Manage the current user."}, {"name": "userfiles", "description": ""}]} ---
--- : "Manage the tags of a repository."}, {"name": "team", "description": "Create, list and manage an organization's teams."}, {"name": "trigger", "description": "Create, list and manage build triggers."}, {"name": "user", "description": "Manage the current user."}, {"name": "userfiles", "description": ""}]} ---
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. 获取 Red Hat Quay API 错误详情 复制链接链接已复制到粘贴板!
使用 API 可发现 Red Hat Quay API 错误详情。
使用以下步骤发现错误详情。
先决条件
- 您已创建了 OAuth 2 访问令牌。
流程
您可以通过输入
GET /api/v1/error/{error_type}
端点来获取 API 的错误详情。请注意,您必须包含以下错误代码之一:Expand HTTP 代码 描述 200
成功调用
400
错误请求
401
需要会话
403
未授权访问
404
未找到
curl -X GET "https://<quay-server.example.com>/api/v1/error/<error_type>" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/error/<error_type>" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
curl: (7) Failed to connect to quay-server.example.com port 443 after 0 ms: Couldn't connect to server
curl: (7) Failed to connect to quay-server.example.com port 443 after 0 ms: Couldn't connect to server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. 全局消息 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay API 创建、获取或删除全局消息。使用以下步骤创建、获取或删除全局消息。
先决条件
- 您已创建了 OAuth 2 访问令牌。
流程
使用
POST /api/v1/message
端点创建消息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不返回输出。
使用
GET /api/v1/messages
命令返回全局消息列表:curl -X GET "https://<quay-server.example.com>/api/v1/messages" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/messages" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"messages": [{"uuid": "ecababd4-3451-4458-b5db-801684137444", "content": "Hi", "severity": "info", "media_type": "text/plain"}]}
{"messages": [{"uuid": "ecababd4-3451-4458-b5db-801684137444", "content": "Hi", "severity": "info", "media_type": "text/plain"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DELETE /api/v1/message/{uuid}
端点删除全局消息:curl -X DELETE "https://<quay-server.example.com>/api/v1/message/<uuid>" \ -H "Authorization: Bearer <access_token>"
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/message/<uuid>" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不返回输出。
6.5. 使用 API 查看使用日志 复制链接链接已复制到粘贴板!
可以使用 API 查看机构或存储库的日志。它们也可以聚合(分组),或者列出包含更详细的信息。也可以由用户、特定日期范围或页面查看日志。
6.5.1. 查看聚合的日志 复制链接链接已复制到粘贴板!
聚合的日志可由机构、存储库、特定用户或当前用户查看。您还可以传递可选命令,如 execute er
、starttime/endtime
和 next_page
来过滤结果。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
使用
GET /api/v1/user/aggregatelogs
API 端点为当前用户返回聚合(或分组)日志:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "https://<quay-server.example.com>/api/v1/user/aggregatelogs"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "https://<quay-server.example.com>/api/v1/user/aggregatelogs"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"aggregated": [{"kind": "create_tag", "count": 1, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}, {"kind": "manifest_label_add", "count": 1, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}, {"kind": "push_repo", "count": 2, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}, {"kind": "revert_tag", "count": 1, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}]}
{"aggregated": [{"kind": "create_tag", "count": 1, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}, {"kind": "manifest_label_add", "count": 1, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}, {"kind": "push_repo", "count": 2, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}, {"kind": "revert_tag", "count": 1, "datetime": "Tue, 18 Jun 2024 00:00:00 -0000"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以传递执行者和
starttime/endtime
查询,以便在特定时间段内获取特定用户的聚合日志。例如:
curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "<quay-server.example.com>/api/v1/user/aggregatelogs?performer=<username>&starttime=<MM/DD/YYYY>&endtime=<MM/DD/YYYY>"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "<quay-server.example.com>/api/v1/user/aggregatelogs?performer=<username>&starttime=<MM/DD/YYYY>&endtime=<MM/DD/YYYY>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 机构也可以使用
GET /api/v1/organization/{orgname}/aggregatelogs
来查看聚合的日志。例如:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "<quay-server.example.com>/api/v1/organization/{orgname}/aggregatelogs"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "<quay-server.example.com>/api/v1/organization/{orgname}/aggregatelogs"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 存储库也可以使用
GET /api/v1/repository/{repository}/aggregatelogs
命令查看聚合的日志。以下示例包括starttime/endtime
字段:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "<quay-server.example.com>/api/v1/repository/<repository_name>/<namespace>/aggregatelogs?starttime=2024-01-01&endtime=2024-06-18""
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "<quay-server.example.com>/api/v1/repository/<repository_name>/<namespace>/aggregatelogs?starttime=2024-01-01&endtime=2024-06-18""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5.2. 查看详细日志 复制链接链接已复制到粘贴板!
详细日志可由机构、存储库、特定用户或当前用户查看。您还可以传递可选字段,如 executeer、starttime/endtime
和 next_page
来过滤结果。
流程
使用
GET /api/v1/user/logs
API 端点返回用户的日志条目列表。例如:curl -X GET -H "Authorization: Bearer <bearer_token>" -H "Accept: application/json" "<quay-server.example.com>/api/v1/user/logs"
$ curl -X GET -H "Authorization: Bearer <bearer_token>" -H "Accept: application/json" "<quay-server.example.com>/api/v1/user/logs"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以传递执行者和
startime/endtime
查询,以便在特定时间段内获取特定用户的日志。例如:
curl -X GET -H "Authorization: Bearer <bearer_token>" -H "Accept: application/json" "http://quay-server.example.com/api/v1/user/logs?performer=quayuser&starttime=01/01/2024&endtime=06/18/2024"
$ curl -X GET -H "Authorization: Bearer <bearer_token>" -H "Accept: application/json" "http://quay-server.example.com/api/v1/user/logs?performer=quayuser&starttime=01/01/2024&endtime=06/18/2024"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
--- {"start_time": "Mon, 01 Jan 2024 00:00:00 -0000", "end_time": "Wed, 19 Jun 2024 00:00:00 -0000", "logs": [{"kind": "revert_tag", "metadata": {"username": "quayuser", "repo": "busybox", "tag": "test-two", "manifest_digest": "sha256:57583a1b9c0a7509d3417387b4f43acf80d08cdcf5266ac87987be3f8f919d5d"}, "ip": "192.168.1.131", "datetime": "Tue, 18 Jun 2024 18:59:13 -0000", "performer": {"kind": "user", "name": "quayuser", "is_robot": false, "avatar": {"name": "quayuser", "hash": "b28d563a6dc76b4431fc7b0524bbff6b810387dac86d9303874871839859c7cc", "color": "#17becf", "kind": "user"}}}, {"kind": "push_repo", "metadata": {"repo": "busybox", "namespace": "quayuser", "user-agent": "containers/5.30.1 (github.com/containers/image)", "tag": "test-two", "username": "quayuser", } ---
--- {"start_time": "Mon, 01 Jan 2024 00:00:00 -0000", "end_time": "Wed, 19 Jun 2024 00:00:00 -0000", "logs": [{"kind": "revert_tag", "metadata": {"username": "quayuser", "repo": "busybox", "tag": "test-two", "manifest_digest": "sha256:57583a1b9c0a7509d3417387b4f43acf80d08cdcf5266ac87987be3f8f919d5d"}, "ip": "192.168.1.131", "datetime": "Tue, 18 Jun 2024 18:59:13 -0000", "performer": {"kind": "user", "name": "quayuser", "is_robot": false, "avatar": {"name": "quayuser", "hash": "b28d563a6dc76b4431fc7b0524bbff6b810387dac86d9303874871839859c7cc", "color": "#17becf", "kind": "user"}}}, {"kind": "push_repo", "metadata": {"repo": "busybox", "namespace": "quayuser", "user-agent": "containers/5.30.1 (github.com/containers/image)", "tag": "test-two", "username": "quayuser", } ---
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/organization/{orgname}/logs
端点返回指定机构的日志:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "http://<quay-server.example.com>/api/v1/organization/{orgname}/logs"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "http://<quay-server.example.com>/api/v1/organization/{orgname}/logs"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/repository/{repository}/logs
端点返回指定存储库的日志:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "http://<quay-server.example.com>/api/v1/repository/{repository}/logs"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "http://<quay-server.example.com>/api/v1/repository/{repository}/logs"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6. 使用 API 导出日志 复制链接链接已复制到粘贴板!
详细日志可以导出到回调 URL 或电子邮件地址。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
使用
POST /api/v1/user/exportlogs
端点为当前用户导出日志:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"export_id": "6a0b9ea9-444c-4a19-9db8-113201c38cd4"}
{"export_id": "6a0b9ea9-444c-4a19-9db8-113201c38cd4"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
POST /api/v1/organization/{orgname}/exportlogs
端点导出机构的日志:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
POST /api/v1/repository/{repository}/exportlogs
端点导出存储库的日志:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7. 使用 API 添加和删除标签 复制链接链接已复制到粘贴板!
Red Hat Quay 管理员可以按照以下流程通过 API 为标签添加和管理标签。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
使用
GET /api/v1/repository/{repository}/manifest/{manifestref}
命令检索存储库中特定清单的详细信息:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/repository/{repository}/manifest/{manifestref}/labels
命令检索特定清单的标签列表:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"labels": [{"id": "e9f717d2-c1dd-4626-802d-733a029d17ad", "key": "org.opencontainers.image.url", "value": "https://github.com/docker-library/busybox", "source_type": "manifest", "media_type": "text/plain"}, {"id": "2d34ec64-4051-43ad-ae06-d5f81003576a", "key": "org.opencontainers.image.version", "value": "1.36.1-glibc", "source_type": "manifest", "media_type": "text/plain"}]}
{"labels": [{"id": "e9f717d2-c1dd-4626-802d-733a029d17ad", "key": "org.opencontainers.image.url", "value": "https://github.com/docker-library/busybox", "source_type": "manifest", "media_type": "text/plain"}, {"id": "2d34ec64-4051-43ad-ae06-d5f81003576a", "key": "org.opencontainers.image.version", "value": "1.36.1-glibc", "source_type": "manifest", "media_type": "text/plain"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/repository/{repository}/manifest/{manifestref}/labels/{labelid}
命令获取有关特定清单的信息:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels/<label_id>
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels/<label_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"id": "e9f717d2-c1dd-4626-802d-733a029d17ad", "key": "org.opencontainers.image.url", "value": "https://github.com/docker-library/busybox", "source_type": "manifest", "media_type": "text/plain"}
{"id": "e9f717d2-c1dd-4626-802d-733a029d17ad", "key": "org.opencontainers.image.url", "value": "https://github.com/docker-library/busybox", "source_type": "manifest", "media_type": "text/plain"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
POST /api/v1/repository/{repository}/manifest/{manifestref}/labels
命令在给定存储库中向清单添加额外标签。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"label": {"id": "346593fd-18c8-49db-854f-4cb1fb76ff9c", "key": "example-key", "value": "example-value", "source_type": "api", "media_type": "text/plain"}}
{"label": {"id": "346593fd-18c8-49db-854f-4cb1fb76ff9c", "key": "example-key", "value": "example-value", "source_type": "api", "media_type": "text/plain"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
DELETE /api/v1/repository/{repository}/manifest/{manifestref}/labels/{labelid}
命令删除标签:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels/<labelid>
$ curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ https://<quay-server.example.com>/api/v1/repository/<repository>/manifest/<manifestref>/labels/<labelid>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。您可以使用以上其中一个命令来确保它已被成功删除。
6.8. 使用 API 镜像存储库 复制链接链接已复制到粘贴板!
Red Hat Quay 管理员可以使用 API 镜像外部存储库。
先决条件
-
您已在
config.yaml
文件中设置了FEATURE_REPO_MIRROR: true
。
流程
使用
POST /api/v1/repository/{repository}/mirror
端点创建新存储库镜像配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
GET /api/v1/repository/{repository}/mirror
端点返回有关镜像配置的信息:curl -X GET "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"is_enabled": true, "mirror_type": "PULL", "external_reference": "https://quay.io/repository/argoproj/argocd", "external_registry_username": null, "external_registry_config": {}, "sync_interval": 86400, "sync_start_date": "2025-01-15T12:00:00Z", "sync_expiration_date": null, "sync_retries_remaining": 3, "sync_status": "NEVER_RUN", "root_rule": {"rule_kind": "tag_glob_csv", "rule_value": ["*.latest*"]}, "robot_username": "quayadmin+mirror_robot"}
{"is_enabled": true, "mirror_type": "PULL", "external_reference": "https://quay.io/repository/argoproj/argocd", "external_registry_username": null, "external_registry_config": {}, "sync_interval": 86400, "sync_start_date": "2025-01-15T12:00:00Z", "sync_expiration_date": null, "sync_retries_remaining": 3, "sync_status": "NEVER_RUN", "root_rule": {"rule_kind": "tag_glob_csv", "rule_value": ["*.latest*"]}, "robot_username": "quayadmin+mirror_robot"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
POST /api/v1/repository/{repository}/mirror/sync-now
端点来同步存储库。例如:curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror/sync-now" \ -H "Authorization: Bearer <access_token>"
$ curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror/sync-now" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
另外,您可以使用
POST /api/v1/repository/{repository}/mirror/sync-cancel
endpoint.For 示例取消同步:curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror/sync-cancel" \
$ curl -X POST "https://<quay-server.example.com>/api/v1/repository/<namespace>/<repo>/mirror/sync-cancel" \
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
在创建镜像配置后,您可以使用
PUT /api/v1/repository/{repository}/mirror
命令进行更改。例如,您可以选择禁用自动同步:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 禁用自动同步。
6.9. 使用 Red Hat Quay API 建立配额 复制链接链接已复制到粘贴板!
您可以为机构或用户建立配额,并定制配额策略以满足您的 registry 的需求。
以下小节演示了如何为机构、用户以及修改这些设置建立配额。
6.9.1. 使用 Red Hat Quay API 管理机构配额 复制链接链接已复制到粘贴板!
首次创建机构时,它没有建立的配额。您可以使用 API 检查、创建、更改或删除机构的配额限制。
先决条件
- 您已生成了 OAuth 访问令牌。
流程
要为机构设置配额,您可以使用
POST /api/v1/organization/{orgname}/quota
端点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Created"
"Created"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/organization/{orgname}/quota
命令返回有关策略的信息,包括其他机构配额端点所需的 ID 号。例如:curl -k -X GET -H "Authorization: Bearer <token>" -H 'Content-Type: application/json' https://example-registry-quay-quay-enterprise.apps.docs.gcp.quaydev.org/api/v1/organization/testorg/quota | jq
$ curl -k -X GET -H "Authorization: Bearer <token>" -H 'Content-Type: application/json' https://example-registry-quay-quay-enterprise.apps.docs.gcp.quaydev.org/api/v1/organization/testorg/quota | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[{"id": 1, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}]
[{"id": 1, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 ID 号后,您可以使用
GET /api/v1/organization/{orgname}/quota/{quota_id}
命令列出配额策略。例如:curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"id": 1, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}
{"id": 1, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
PUT /api/v1/organization/{orgname}/quota/{quota_id}
命令修改现有的配额限制。请注意,这需要策略 ID。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"id": 1, "limit_bytes": 21474836480, "limit": "20.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}
{"id": 1, "limit_bytes": 21474836480, "limit": "20.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可以通过
DELETE /api/v1/organization/{orgname}/quota/{quota_id}
命令删除机构的配额。例如:curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \ -H "Authorization: Bearer <access_token>"
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不返回输出。
6.9.2. 使用 Red Hat Quay API 为机构设置配额限制 复制链接链接已复制到粘贴板!
您可以为机构设置特定的配额限制,以便在超过、返回警告时,或者推送的镜像会被完全拒绝。
流程
使用
POST /api/v1/organization/{orgname}/quota/{quota_id}/limit
命令创建配额策略,以便在超过分配的配额时拒绝镜像。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Created"
"Created"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/organization/{orgname}/quota/{quota_id}/limit
获取配额限制的 ID。例如:curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[{"id": 2, "type": "Reject", "limit_percent": 90}]
[{"id": 2, "type": "Reject", "limit_percent": 90}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用
PUT /api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id}
端点更新策略。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"id": 3, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [{"id": 2, "type": "Warning", "limit_percent": 80}], "default_config_exists": false}
{"id": 3, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [{"id": 2, "type": "Warning", "limit_percent": 80}], "default_config_exists": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
DELETE /api/v1/organization/{orgname}/quota/{quota_id}/limit/{limit_id}
端点删除配额限制:curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit/<limit_id>" \ -H "Authorization: Bearer <access_token>"
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/quota/<quota_id>/limit/<limit_id>" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不返回输出。
6.9.3. 使用 Red Hat Quay API 为用户获取配额限制 复制链接链接已复制到粘贴板!
您可以为用户指定配额和限制,以便在超过时返回警告,或者推送的镜像被完全拒绝。必须在 Red Hat Quay UI 上设置用户的配额限制。以下 API 可用于查看登录的用户的配额限值。
流程
使用
GET /api/v1/user/quota
命令返回有关配额限制的信息:curl -X GET "https://<quay-server.example.com>/api/v1/user/quota" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[{"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [], "default_config_exists": false}]
[{"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [], "default_config_exists": false}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 收到配额 ID 后,您可以使用
GET /api/v1/user/quota/{quota_id}
端点传递该端点,以返回有关限制的信息:curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [], "default_config_exists": false}
{"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [], "default_config_exists": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可以使用
GET /api/v1/user/quota/{quota_id}/limit
端点来查看这些限制。例如:curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}/limit" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}/limit" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[{"id": 3, "type": "Reject", "limit_percent": 100}]
[{"id": 3, "type": "Reject", "limit_percent": 100}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可以使用
GET /api/v1/user/quota/{quota_id}/limit/{limit_id}
端点来返回有关整个策略的附加信息:curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}/limit/{limit_id}" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/user/quota/{quota_id}/limit/{limit_id}" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [{"id": 3, "type": "Reject", "limit_percent": 100}], "default_config_exists": false}
{"id": 4, "limit_bytes": 2199023255552, "limit": "2.0 TiB", "default_config": false, "limits": [{"id": 3, "type": "Reject", "limit_percent": 100}], "default_config_exists": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.10. 使用 Red Hat Quay API 建立配额 复制链接链接已复制到粘贴板!
组织可以通过 API 端点创建和管理。使用 Red Hat Quay API,您可以创建机构、查看机构信息、为机构创建代理缓存,编辑具有机构访问权限的用户、更改机构详情、删除机构等。
6.10.1. 使用 Red Hat Quay API 创建机构 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay API 创建新机构。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
输入以下命令使用
POST /api/v1/organization/
端点创建新机构:curl -X POST -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{
$ curl -X POST -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{ "name": "<new_organization_name>" }' "https://<quay-server.example.com>/api/v1/organization/"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Created"
"Created"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建后,可以更改机构详情,如添加电子邮件地址,带有
PUT /api/v1/organization/{orgname}
命令。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "test", "email": "new-contact@test-org.com", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "user"}, "is_admin": true, "is_member": true, "teams": {"owners": {"name": "owners", "description": "", "role": "admin", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}, "can_view": true, "repo_count": 0, "member_count": 1, "is_synced": false}}, "ordered_teams": ["owners"], "invoice_email": true, "invoice_email_address": "billing@test-org.com", "tag_expiration_s": 1209600, "is_free_account": true, "quotas": [{"id": 2, "limit_bytes": 10737418240, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}]}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}
{"name": "test", "email": "new-contact@test-org.com", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "user"}, "is_admin": true, "is_member": true, "teams": {"owners": {"name": "owners", "description": "", "role": "admin", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}, "can_view": true, "repo_count": 0, "member_count": 1, "is_synced": false}}, "ordered_teams": ["owners"], "invoice_email": true, "invoice_email_address": "billing@test-org.com", "tag_expiration_s": 1209600, "is_free_account": true, "quotas": [{"id": 2, "limit_bytes": 10737418240, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}]}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.10.2. 使用 Red Hat Quay API 删除机构 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay API 删除机构。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
输入以下命令使用
DELETE /api/v1/organization/{orgname}
端点删除机构:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay-server.example.com>/api/v1/organization/<organization_name>"
$ curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay-server.example.com>/api/v1/organization/<organization_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 CLI 删除机构时,CLI 不会返回信息。要确认删除操作,您可以检查 Red Hat Quay UI,或者您可以输入
GET /api/v1/organization/{orgname}
命令来查看是否返回已删除机构的详情:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"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}
{"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}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.10.3. 使用 API 检索机构成员信息 复制链接链接已复制到粘贴板!
有关机构成员的信息可以通过 Red Hat Quay API 检索。
流程
使用
GET /api/v1/organization/{orgname}/members
返回机构成员列表:curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/members" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/members" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"members": [{"name": "quayadmin", "kind": "user", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "teams": [{"name": "owners", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}}], "repositories": ["testrepo"]}, {"name": "testuser", "kind": "user", "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}, "teams": [{"name": "owners", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}}], "repositories": []}]}
{"members": [{"name": "quayadmin", "kind": "user", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "teams": [{"name": "owners", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}}], "repositories": ["testrepo"]}, {"name": "testuser", "kind": "user", "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}, "teams": [{"name": "owners", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}}], "repositories": []}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
GET /api/v1/organization/{orgname}/collaborators
返回机构 collaborators 列表:curl -X GET "https://<quay-server.example.com>/api/v1/organization/{orgname}/collaborators" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/{orgname}/collaborators" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"collaborators": [user-test]}
{"collaborators": [user-test]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/organization/{orgname}/members/{membername}
端点来获取有关用户更具体的信息:curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/members/<membername>" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/members/<membername>" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "quayadmin", "kind": "user", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "teams": [{"name": "owners", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}}], "repositories": ["testrepo"]}
{"name": "quayadmin", "kind": "user", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "teams": [{"name": "owners", "avatar": {"name": "owners", "hash": "6f0e3a8c0eb46e8834b43b03374ece43a030621d92a7437beb48f871e90f8d90", "color": "#c7c7c7", "kind": "team"}}], "repositories": ["testrepo"]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DELETE /api/v1/organization/{orgname}/members/{membername}
端点删除团队成员。curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/members/<membername>" \ -H "Authorization: Bearer <access_token>"
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/<orgname>/members/<membername>" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不返回输出。
6.10.4. 使用 Red Hat Quay API 创建机构应用程序 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay UI 创建机构应用程序。
可以使用 UI 创建机构应用,但必须在 UI 上创建 OAuth 2 访问令牌。
流程
使用
POST /api/v1/organization/{orgname}/applications
端点为您的机构创建新应用。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "new-application", "description": "", "application_uri": "", "client_id": "E6GJSHOZMFBVNHTHNB53", "client_secret": "SANSWCWSGLVAUQ60L4Q4CEO3C1QAYGEXZK2VKJNI", "redirect_uri": "", "avatar_email": null}
{"name": "new-application", "description": "", "application_uri": "", "client_id": "E6GJSHOZMFBVNHTHNB53", "client_secret": "SANSWCWSGLVAUQ60L4Q4CEO3C1QAYGEXZK2VKJNI", "redirect_uri": "", "avatar_email": null}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/organization/{orgname}/applications
端点返回所有机构应用程序的列表。例如:curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/applications" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/applications" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"applications": [{"name": "test", "description": "", "application_uri": "", "client_id": "MCJ61D8KQBFS2DXM56S2", "client_secret": "J5G7CCX5QCA8Q5XZLWGI7USJPSM4M5MQHJED46CF", "redirect_uri": "", "avatar_email": null}, {"name": "new-token", "description": "", "application_uri": "", "client_id": "IG58PX2REEY9O08IZFZE", "client_secret": "2LWTWO89KH26P2CO4TWFM7PGCX4V4SUZES2CIZMR", "redirect_uri": "", "avatar_email": null}, {"name": "second-token", "description": "", "application_uri": "", "client_id": "6XBK7QY7ACSCN5XBM3GS", "client_secret": "AVKBOUXTFO3MXBBK5UJD5QCQRN2FWL3O0XPZZT78", "redirect_uri": "", "avatar_email": null}, {"name": "new-application", "description": "", "application_uri": "", "client_id": "E6GJSHOZMFBVNHTHNB53", "client_secret": "SANSWCWSGLVAUQ60L4Q4CEO3C1QAYGEXZK2VKJNI", "redirect_uri": "", "avatar_email": null}]}
{"applications": [{"name": "test", "description": "", "application_uri": "", "client_id": "MCJ61D8KQBFS2DXM56S2", "client_secret": "J5G7CCX5QCA8Q5XZLWGI7USJPSM4M5MQHJED46CF", "redirect_uri": "", "avatar_email": null}, {"name": "new-token", "description": "", "application_uri": "", "client_id": "IG58PX2REEY9O08IZFZE", "client_secret": "2LWTWO89KH26P2CO4TWFM7PGCX4V4SUZES2CIZMR", "redirect_uri": "", "avatar_email": null}, {"name": "second-token", "description": "", "application_uri": "", "client_id": "6XBK7QY7ACSCN5XBM3GS", "client_secret": "AVKBOUXTFO3MXBBK5UJD5QCQRN2FWL3O0XPZZT78", "redirect_uri": "", "avatar_email": null}, {"name": "new-application", "description": "", "application_uri": "", "client_id": "E6GJSHOZMFBVNHTHNB53", "client_secret": "SANSWCWSGLVAUQ60L4Q4CEO3C1QAYGEXZK2VKJNI", "redirect_uri": "", "avatar_email": null}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 也可以使用
GET /api/v1/organization/{orgname}/applications/{client_id}
端点为特定客户端返回应用程序。例如:curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/applications/<client_id>" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/<orgname>/applications/<client_id>" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "test", "description": "", "application_uri": "", "client_id": "MCJ61D8KQBFS2DXM56S2", "client_secret": "J5G7CCX5QCA8Q5XZLWGI7USJPSM4M5MQHJED46CF", "redirect_uri": "", "avatar_email": null}
{"name": "test", "description": "", "application_uri": "", "client_id": "MCJ61D8KQBFS2DXM56S2", "client_secret": "J5G7CCX5QCA8Q5XZLWGI7USJPSM4M5MQHJED46CF", "redirect_uri": "", "avatar_email": null}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建后,可以使用
PUT /api/v1/organization/{orgname}/applications/{client_id}
端点更新机构应用程序,例如,添加重定向 URI 或新描述:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建后,可以使用
GET /api/v1/app/{client_id}
端点返回应用程序信息:curl -X GET "https://<quay-server.example.com>/api/v1/app/<client_id>" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/app/<client_id>" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "new-application3", "description": "", "uri": "", "avatar": {"name": "new-application3", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "app"}, "organization": {"name": "test", "email": "new-contact@test-org.com", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "user"}, "is_admin": true, "is_member": true, "teams": {}, "ordered_teams": [], "invoice_email": true, "invoice_email_address": "billing@test-org.com", "tag_expiration_s": 1209600, "is_free_account": true, "quotas": [{"id": 2, "limit_bytes": 10737418240, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}]}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}}
{"name": "new-application3", "description": "", "uri": "", "avatar": {"name": "new-application3", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "app"}, "organization": {"name": "test", "email": "new-contact@test-org.com", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "user"}, "is_admin": true, "is_member": true, "teams": {}, "ordered_teams": [], "invoice_email": true, "invoice_email_address": "billing@test-org.com", "tag_expiration_s": 1209600, "is_free_account": true, "quotas": [{"id": 2, "limit_bytes": 10737418240, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}]}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可以使用
DELETE /api/v1/organization/{orgname}/applications/{client_id}
端点删除机构应用程序。例如:curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/{orgname}/applications/{client_id}" \ -H "Authorization: Bearer <access_token>"
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/{orgname}/applications/{client_id}" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不返回输出。
6.10.5. 使用 Red Hat Quay API 为机构配置代理缓存 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay API 配置机构的代理缓存。
流程
使用
POST /api/v1/organization/{orgname}/proxycache
端点为组织创建代理缓存配置。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
POST /api/v1/organization/{orgname}/validateproxycache
端点来验证代理配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/organization/{orgname}/proxycache
端点获取有关 proxcy 缓存的信息。例如:curl -X GET "https://<quay-server.example.com>/api/v1/organization/{orgname}/proxycache" \ -H "Authorization: Bearer <access_token>"
$ curl -X GET "https://<quay-server.example.com>/api/v1/organization/{orgname}/proxycache" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"upstream_registry": "quay.io", "expiration_s": 86400, "insecure": false}
{"upstream_registry": "quay.io", "expiration_s": 86400, "insecure": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DELETE /api/v1/organization/{orgname}/proxycache
端点curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/{orgname}/proxycache" \ -H "Authorization: Bearer <access_token>"
$ curl -X DELETE "https://<quay-server.example.com>/api/v1/organization/{orgname}/proxycache" \ -H "Authorization: Bearer <access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Deleted"
"Deleted"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.11. 使用 Red Hat Quay API 管理存储库权限 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay API 管理存储库权限。例如,您可以创建、查看和删除用户和团队权限。
以下流程演示了如何使用 Red Hat Quay API 管理存储库权限。
6.11.1. 使用 Red Hat Quay API 管理用户权限 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay API 管理用户权限。
流程
使用
GET /api/v1/repository/{repository}/permissions/user/{username}
端点为用户获取存储库权限。例如:curl -X GET \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<repository_path>/permissions/user/<username>"
$ curl -X GET \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<repository_path>/permissions/user/<username>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"role": "read", "name": "testuser", "is_robot": false, "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}, "is_org_member": false}
$ {"role": "read", "name": "testuser", "is_robot": false, "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}, "is_org_member": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 所有用户权限都可以使用
GET /api/v1/repository/{repository}/permissions/user/
端点返回:curl -X GET \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/user/"
$ curl -X GET \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/user/"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"permissions": {"quayadmin": {"role": "admin", "name": "quayadmin", "is_robot": false, "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "is_org_member": true}, "test+example": {"role": "admin", "name": "test+example", "is_robot": true, "avatar": {"name": "test+example", "hash": "3b03050c26e900500437beee4f7f2a5855ca7e7c5eab4623a023ee613565a60e", "color": "#a1d99b", "kind": "robot"}, "is_org_member": true}}}
{"permissions": {"quayadmin": {"role": "admin", "name": "quayadmin", "is_robot": false, "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "is_org_member": true}, "test+example": {"role": "admin", "name": "test+example", "is_robot": true, "avatar": {"name": "test+example", "hash": "3b03050c26e900500437beee4f7f2a5855ca7e7c5eab4623a023ee613565a60e", "color": "#a1d99b", "kind": "robot"}, "is_org_member": true}}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您可以使用
GET /api/v1/repository/{repository}/permissions/user/{username}/transitive
端点来仅返回用户的存储库权限:curl -X GET \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<repository_path>/permissions/user/<username>/transitive"
$ curl -X GET \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<repository_path>/permissions/user/<username>/transitive"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"permissions": [{"role": "admin"}]}
{"permissions": [{"role": "admin"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以更改用户的权限,如使用
PUT /api/v1/repository/{repository}/permissions/user/{username}
端点使用户成为admin
。例如:curl -X PUT \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{"role": "<role>"}' \ "https://quay-server.example.com/api/v1/repository/<repository_path>/permissions/user/<username>"
$ curl -X PUT \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{"role": "<role>"}' \ "https://quay-server.example.com/api/v1/repository/<repository_path>/permissions/user/<username>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"role": "admin", "name": "testuser", "is_robot": false, "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}, "is_org_member": false}
{"role": "admin", "name": "testuser", "is_robot": false, "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}, "is_org_member": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可以使用
DELETE /api/v1/repository/{repository}/permissions/user/{username}
端点删除用户权限。例如:curl -X DELETE \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/user/<username>"
$ curl -X DELETE \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/user/<username>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不返回输出。
6.11.2. 使用 Red Hat Quay API 管理团队权限 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay API 管理团队权限。
可以使用
GET /api/v1/repository/{repository}/permissions/team/{teamname}
端点返回指定团队的权限:curl -X GET \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/<teamname>"
$ curl -X GET \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/<teamname>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"role": "write"}
{"role": "write"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 所有团队的权限都可以使用
GET /api/v1/repository/{repository}/permissions/team/
端点返回。例如:curl -X GET \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/"
$ curl -X GET \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"permissions": {"ironmanteam": {"role": "read", "name": "ironmanteam", "avatar": {"name": "ironmanteam", "hash": "8045b2361613622183e87f33a7bfc54e100a41bca41094abb64320df29ef458d", "color": "#969696", "kind": "team"}}, "sillyteam": {"role": "read", "name": "sillyteam", "avatar": {"name": "sillyteam", "hash": "f275d39bdee2766d2404e2c6dbff28fe290969242e9fcf1ffb2cde36b83448ff", "color": "#17becf", "kind": "team"}}}}
{"permissions": {"ironmanteam": {"role": "read", "name": "ironmanteam", "avatar": {"name": "ironmanteam", "hash": "8045b2361613622183e87f33a7bfc54e100a41bca41094abb64320df29ef458d", "color": "#969696", "kind": "team"}}, "sillyteam": {"role": "read", "name": "sillyteam", "avatar": {"name": "sillyteam", "hash": "f275d39bdee2766d2404e2c6dbff28fe290969242e9fcf1ffb2cde36b83448ff", "color": "#17becf", "kind": "team"}}}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可以使用
PUT /api/v1/repository/{repository}/permissions/team/{teamname}
命令更改指定团队的权限。例如:curl -X PUT \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{"role": "<role>"}' \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/<teamname>"
$ curl -X PUT \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{"role": "<role>"}' \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/<teamname>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"role": "admin", "name": "superteam", "avatar": {"name": "superteam", "hash": "48cb6d114200039fed5c601480653ae7371d5a8849521d4c3bf2418ea013fc0f", "color": "#9467bd", "kind": "team"}}
{"role": "admin", "name": "superteam", "avatar": {"name": "superteam", "hash": "48cb6d114200039fed5c601480653ae7371d5a8849521d4c3bf2418ea013fc0f", "color": "#9467bd", "kind": "team"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可以使用
DELETE /api/v1/repository/{repository}/permissions/team/{teamname}
命令删除团队权限。例如:curl -X DELETE \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/<teamname>"
$ curl -X DELETE \ -H "Authorization: Bearer <access_token>" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/permissions/team/<teamname>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
6.12. 使用 Red Hat Quay API 管理自动修剪策略 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay API 为机构、存储库和用户创建、检索、更改和删除自动修剪策略。
流程
输入以下命令使用
POST /api/v1/repository
端点创建存储库:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"namespace": "quayadmin", "name": "<new_repository_name>", "kind": "image"}
{"namespace": "quayadmin", "name": "<new_repository_name>", "kind": "image"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
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>"
$ curl -X GET \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ "https://quay-server.example.com/api/v1/repository?public=true&starred=false&namespace=<NAMESPACE>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"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}}]}
{"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}}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过
POST /api/v1/repository/{repository}/changevisibility
端点,可以将可见性从公共改为私有:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"success": true}
{"success": true}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以检查 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>"
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"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}
{"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}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 存储库描述可以使用
PUT /api/v1/repository/{repository}
端点更新:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"success": true}
{"success": true}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令使用
DELETE /api/v1/repository/{repository}
端点删除存储库:curl -X DELETE -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
$ curl -X DELETE -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
6.12.1. 使用 Red Hat Quay API 为命名空间创建一个自动修剪策略 复制链接链接已复制到粘贴板!
您可以使用 Red Hat Quay API 端点来管理命名空间自动运行策略。
先决条件
- 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
流程
输入以下
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": "number_of_tags", "value": 10}' http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您可以在创建日期后将标签设置为在指定时间过期:
curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{
$ 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 Copied! Toggle word wrap Toggle overflow 输出示例
{"uuid": "73d64f05-d587-42d9-af6d-e726a4a80d6e"}
{"uuid": "73d64f05-d587-42d9-af6d-e726a4a80d6e"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。您可以将额外策略添加到机构中,并传递
tagPattern
和tagPatternMatches
字段,以仅修剪与给定 regex 模式匹配的标签。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
tagPatternMatches
设置为True
会导致修剪与给定正则表达式模式匹配的标签。在本例中,与^v*
匹配的标签会被修剪。
输出示例
{"uuid": "ebf7448b-93c3-4f14-bf2f-25aa6857c7b0"}
{"uuid": "ebf7448b-93c3-4f14-bf2f-25aa6857c7b0"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
PUT /api/v1/organization/{orgname}/autoprunepolicy/{policy_uuid}
命令更新机构的自动修剪策略。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不返回输出。继续下一步。
输入以下命令检查自动修剪策略:
curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"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}]}
{"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 Copied! Toggle word wrap Toggle overflow 您可以输入以下命令来删除您的机构的自动修剪策略。请注意,删除策略需要 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
$ 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 Copied! Toggle word wrap Toggle overflow
6.12.2. 使用 API 为当前用户创建一个命名空间自动修剪策略 复制链接链接已复制到粘贴板!
您可以使用 Red Hat Quay API 端点来管理您的帐户自动运行策略。
以下命令中使用 /user/
代表当前登录到 Red Hat Quay 的用户。
先决条件
- 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
流程
输入以下
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/
$ 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 Copied! Toggle word wrap Toggle overflow 输出示例
{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令检查自动修剪策略:
curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以包含 UUID:
curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/8c03f995-ca6f-4928-b98d-d75ed8c14859
$ 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 Copied! Toggle word wrap Toggle overflow 输出示例
{"policies": [{"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}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。
curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/8c03f995-ca6f-4928-b98d-d75ed8c14859
$ 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 Copied! Toggle word wrap Toggle overflow 输出示例
{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.3. 使用 Red Hat Quay API 为存储库创建自动修剪策略 复制链接链接已复制到粘贴板!
您可以使用 Red Hat Quay API 端点来管理存储库自动运行策略。
先决条件
- 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
流程
输入以下
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": "number_of_tags","value": 2}' http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您可以在创建日期后将标签设置为在指定时间过期:
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/
$ 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 Copied! Toggle word wrap Toggle overflow 输出示例
{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。您可以添加额外的策略,并在
tagPattern
和tagPatternMatches
字段中传递,以仅修剪与给定 regex 模式匹配的标签。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
tagPatternMatches
设置为False
会导致所有与给定正则表达式模式匹配的标签都会被修剪。在本例中,除^test
以外的所有 标签都会被修剪。
输出示例
{"uuid": "b53d8d3f-2e73-40e7-96ff-736d372cd5ef"}
{"uuid": "b53d8d3f-2e73-40e7-96ff-736d372cd5ef"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
PUT /api/v1/repository/{repository}/autoprunepolicy/{policy_uuid}
命令为存储库更新您的策略,并传递 UUID。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不返回输出。继续下一步,以检查您的自动修剪策略。
输入以下命令检查自动修剪策略:
curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以包含 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
$ 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 Copied! Toggle word wrap Toggle overflow 输出示例
{"policies": [{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7", "method": "number_of_tags", "value": 10}]}
{"policies": [{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7", "method": "number_of_tags", "value": 10}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 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
$ 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 Copied! Toggle word wrap Toggle overflow 输出示例
{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.12.4. 在带有 API 的用户的存储库上创建自动修剪策略 复制链接链接已复制到粘贴板!
您可以使用 Red Hat Quay API 端点为不属于您的用户帐户管理存储库上的自动运行策略,只要存储库上具有 admin
权限。
先决条件
- 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
-
在您要为其创建策略的存储库上具有
admin
权限。
流程
输入以下
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/
$ 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 Copied! Toggle word wrap Toggle overflow 输出示例
{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}
{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。您可以为当前用户添加额外的策略,并传递
tagPattern
和tagPatternMatches
字段,以仅修剪与给定 regex 模式匹配的标签。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"uuid": "b3797bcd-de72-4b71-9b1e-726dabc971be"}
{"uuid": "b3797bcd-de72-4b71-9b1e-726dabc971be"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
PUT /api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_uuid>
; 命令为当前用户更新您的策略。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新策略不会在 CLI 中返回输出。
输入以下命令检查自动修剪策略:
curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以包含 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
$ 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 Copied! Toggle word wrap Toggle overflow 输出示例
{"uuid": "81ee77ec-496a-4a0a-9241-eca49437d15b", "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": true}
{"uuid": "81ee77ec-496a-4a0a-9241-eca49437d15b", "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": true}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。
curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_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 Copied! Toggle word wrap Toggle overflow 输出示例
{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}
{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.13. 使用 Red Hat Quay API 创建和配置软件仓库 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay API 创建、检索、修改和删除存储库。
6.13.1. 使用 Red Hat Quay API 创建和配置软件仓库 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay API 创建、检索、修改和删除存储库。
流程
输入以下命令使用
POST /api/v1/repository
端点创建存储库:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"namespace": "quayadmin", "name": "<new_repository_name>", "kind": "image"}
{"namespace": "quayadmin", "name": "<new_repository_name>", "kind": "image"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
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>"
$ curl -X GET \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ "https://quay-server.example.com/api/v1/repository?public=true&starred=false&namespace=<NAMESPACE>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"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}}]}
{"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}}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过
POST /api/v1/repository/{repository}/changevisibility
端点,可以将可见性从公共改为私有:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"success": true}
{"success": true}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以检查 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>"
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"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}
{"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}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 存储库描述可以使用
PUT /api/v1/repository/{repository}
端点更新:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"success": true}
{"success": true}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令使用
DELETE /api/v1/repository/{repository}
端点删除存储库:curl -X DELETE -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
$ curl -X DELETE -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
6.13.2. 使用 API 创建通知 复制链接链接已复制到粘贴板!
使用以下步骤添加通知。
先决条件
- 您已创建了软件仓库。
- 有存储库的管理特权。
- 您已创建了 OAuth 访问令牌。
流程
输入以下
POST /api/v1/repository/{repository}/notification
命令在存储库上创建通知:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。相反,您可以输入以下
GET /api/v1/repository/{repository}/notification/{uuid}
命令来获取有关存储库通知的信息:{"uuid": "240662ea-597b-499d-98bb-2b57e73408d6", "title": null, "event": "repo_push", "method": "quay_notification", "config": {"target": {"name": "quayadmin", "kind": "user", "is_robot": false, "avatar": {"name": "quayadmin", "hash": "b28d563a6dc76b4431fc7b0524bbff6b810387dac86d9303874871839859c7cc", "color": "#17becf", "kind": "user"}}}, "event_config": {}, "number_of_failures": 0}
{"uuid": "240662ea-597b-499d-98bb-2b57e73408d6", "title": null, "event": "repo_push", "method": "quay_notification", "config": {"target": {"name": "quayadmin", "kind": "user", "is_robot": false, "avatar": {"name": "quayadmin", "hash": "b28d563a6dc76b4431fc7b0524bbff6b810387dac86d9303874871839859c7cc", "color": "#17becf", "kind": "user"}}}, "event_config": {}, "number_of_failures": 0}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以通过输入以下
POST /api/v1/repository/{repository}/notification/{uuid}/test
命令来测试存储库通知:curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ https://<quay-server.example.com>/api/v1/repository/<repository>/notification/<uuid>/test
$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ https://<quay-server.example.com>/api/v1/repository/<repository>/notification/<uuid>/test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{}
{}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以通过输入以下
POST /api/v1/repository/{repository}/notification/{uuid}
命令重置存储库通知失败:curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ https://<quay-server.example.com>/api/v1/repository/<repository>/notification/<uuid>
$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ https://<quay-server.example.com>/api/v1/repository/<repository>/notification/<uuid>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下
DELETE /api/v1/repository/{repository}/notification/{uuid}
命令来删除存储库通知:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/notification/<uuid>
$ curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/notification/<uuid>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。相反,您可以输入以下
GET /api/v1/repository/{repository}/notification/
命令来检索所有通知的列表:curl -X GET -H "Authorization: Bearer <bearer_token>" -H "Accept: application/json" https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/notification
$ curl -X GET -H "Authorization: Bearer <bearer_token>" -H "Accept: application/json" https://<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>/notification
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"notifications": []}
{"notifications": []}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14. 使用 Red Hat Quay API 创建和配置机器人帐户 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay API 为机构和用户创建、检索、更改和删除机器人帐户。
6.14.1. 使用 Red Hat Quay API 创建机器人帐户 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay API 创建机器人帐户。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
输入以下命令,使用
PUT /api/v1/organization/{orgname}/robots/{robot_shortname}
端点为机构创建新的机器人帐户:curl -X PUT -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_name>"
$ curl -X PUT -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "orgname+robot-name", "created": "Fri, 10 May 2024 15:11:00 -0000", "last_accessed": null, "description": "", "token": "<example_secret>", "unstructured_metadata": null}
{"name": "orgname+robot-name", "created": "Fri, 10 May 2024 15:11:00 -0000", "last_accessed": null, "description": "", "token": "<example_secret>", "unstructured_metadata": null}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令为当前用户创建一个新的机器人帐户,其
PUT /api/v1/user/robots/{robot_shortname}
端点:curl -X PUT -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/user/robots/<robot_name>"
$ curl -X PUT -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/user/robots/<robot_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "quayadmin+robot-name", "created": "Fri, 10 May 2024 15:24:57 -0000", "last_accessed": null, "description": "", "token": "<example_secret>", "unstructured_metadata": null}
{"name": "quayadmin+robot-name", "created": "Fri, 10 May 2024 15:24:57 -0000", "last_accessed": null, "description": "", "token": "<example_secret>", "unstructured_metadata": null}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.2. 使用 Red Hat Quay API 获取机器人帐户信息 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay API 为组织和用户获取机器人帐户信息,如权限。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
使用
GET /api/v1/organization/{orgname}/robots/{robot_shortname}
API 端点返回机构机器人的信息:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://quay-server.example.com/api/v1/organization/<ORGNAME>/robots/<ROBOT_SHORTNAME>"
curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://quay-server.example.com/api/v1/organization/<ORGNAME>/robots/<ROBOT_SHORTNAME>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "test+example", "created": "Mon, 25 Nov 2024 16:25:16 -0000", "last_accessed": null, "description": "", "token": "string", "unstructured_metadata": {}}
{"name": "test+example", "created": "Mon, 25 Nov 2024 16:25:16 -0000", "last_accessed": null, "description": "", "token": "string", "unstructured_metadata": {}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/organization/{orgname}/robots/{robot_shortname}/permissions
端点返回特定机构机器人的权限列表:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://quay-server.example.com/api/v1/organization/<ORGNAME>/robots/<ROBOT_SHORTNAME>/permissions"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://quay-server.example.com/api/v1/organization/<ORGNAME>/robots/<ROBOT_SHORTNAME>/permissions"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"permissions": [{"repository": {"name": "testrepo", "is_public": true}, "role": "admin"}]}
{"permissions": [{"repository": {"name": "testrepo", "is_public": true}, "role": "admin"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/user/robots/{robot_shortname}
API 端点返回具有指定名称的机器人:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://quay-server.example.com/api/v1/user/robots/<ROBOT_SHORTNAME>"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://quay-server.example.com/api/v1/user/robots/<ROBOT_SHORTNAME>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "quayadmin+mirror_robot", "created": "Wed, 15 Jan 2025 17:22:09 -0000", "last_accessed": null, "description": "", "token": "<token_example>", "unstructured_metadata": {}}
{"name": "quayadmin+mirror_robot", "created": "Wed, 15 Jan 2025 17:22:09 -0000", "last_accessed": null, "description": "", "token": "<token_example>", "unstructured_metadata": {}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/user/robots/{robot_shortname}/permissions
API 端点返回用户机器人的权限列表:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://quay-server.example.com/api/v1/user/robots/<ROBOT_SHORTNAME>/permissions"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://quay-server.example.com/api/v1/user/robots/<ROBOT_SHORTNAME>/permissions"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"permissions": [{"repository": {"name": "busybox", "is_public": false}, "role": "write"}]}
{"permissions": [{"repository": {"name": "busybox", "is_public": false}, "role": "write"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.14.3. 使用 Red Hat Quay API 删除机器人帐户 复制链接链接已复制到粘贴板!
使用以下步骤使用 Red Hat Quay API 删除机器人帐户。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
输入以下命令,使用
DELETE /api/v1/organization/{orgname}/robots/{robot_shortname}
端点删除机构的机器人帐户:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_shortname>"
curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/robots/<robot_shortname>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在使用 API 删除机器人帐户时,CLI 不会返回信息。要确认删除操作,您可以检查 Red Hat Quay UI,或者您可以输入以下
GET /api/v1/organization/{orgname}/robots
命令,以查看是否为机器人帐户返回详情:curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots"
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/organization/<organization_name>/robots"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"robots": []}
{"robots": []}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令,使用
DELETE /api/v1/user/robots/{robot_shortname}
端点删除当前用户的机器人帐户:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"
$ curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在使用 API 删除当前用户的机器人帐户时,CLI 不会返回信息。要确认删除操作,您可以检查 Red Hat Quay UI,或者您可以输入以下
GET /api/v1/user/robots/{robot_shortname}
命令,以查看是否为机器人帐户返回详情:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "<quay-server.example.com>/api/v1/user/robots/<robot_shortname>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"message":"Could not find robot with specified username"}
{"message":"Could not find robot with specified username"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.15. 根据 registry 上下文搜索 复制链接链接已复制到粘贴板!
您可以使用 搜索
API 端点对所有 registry 上下文执行搜索。
流程
使用
GET /api/v1/find/repositories
端点获取与指定查询匹配的应用程序和存储库列表:curl -X GET "https://quay-server.example.com/api/v1/find/repositories?query=<repo_name>&page=1&includeUsage=true" \ -H "Authorization: Bearer <bearer_token>"
$ curl -X GET "https://quay-server.example.com/api/v1/find/repositories?query=<repo_name>&page=1&includeUsage=true" \ -H "Authorization: Bearer <bearer_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"results": [], "has_additional": false, "page": 2, "page_size": 10, "start_index": 10}
{"results": [], "has_additional": false, "page": 2, "page_size": 10, "start_index": 10}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/find/all
端点获取与指定查询匹配的实体和资源列表:curl -X GET "https://quay-server.example.com/api/v1/find/all?query=<mysearchterm>" \ -H "Authorization: Bearer <bearer_token>"
$ curl -X GET "https://quay-server.example.com/api/v1/find/all?query=<mysearchterm>" \ -H "Authorization: Bearer <bearer_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"results": [{"kind": "repository", "title": "repo", "namespace": {"title": "user", "kind": "user", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "name": "quayadmin", "score": 1, "href": "/user/quayadmin"}, "name": "busybox", "description": null, "is_public": false, "score": 4.0, "href": "/repository/quayadmin/busybox"}]}
{"results": [{"kind": "repository", "title": "repo", "namespace": {"title": "user", "kind": "user", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "name": "quayadmin", "score": 1, "href": "/user/quayadmin"}, "name": "busybox", "description": null, "is_public": false, "score": 4.0, "href": "/repository/quayadmin/busybox"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/entities/{prefix}
端点获取与指定前缀匹配的实体列表。curl -X GET "https://quay-server.example.com/api/v1/entities/<prefix>?includeOrgs=<true_or_false>&includeTeams=<true_or_false>&namespace=<namespace>" \ -H "Authorization: Bearer <bearer_token>"
$ curl -X GET "https://quay-server.example.com/api/v1/entities/<prefix>?includeOrgs=<true_or_false>&includeTeams=<true_or_false>&namespace=<namespace>" \ -H "Authorization: Bearer <bearer_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"results": [{"name": "quayadmin", "kind": "user", "is_robot": false, "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}}]}
{"results": [{"name": "quayadmin", "kind": "user", "is_robot": false, "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.16. 使用 API 查看 Clair 安全扫描 复制链接链接已复制到粘贴板!
您可以使用 API 查看 Clair 安全扫描。
流程
使用
GET /api/v1/repository/{repository}/manifest/{manifestref}/security
端点来检索有关存储库中特定清单的安全信息。例如:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/manifest/<manifest_digest>/security?vulnerabilities=<true_or_false>"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ -H "Accept: application/json" \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repository>/manifest/<manifest_digest>/security?vulnerabilities=<true_or_false>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"status": "queued", "data": null}
{"status": "queued", "data": null}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.17. 使用 Red Hat Quay API 以超级用户管理部署 复制链接链接已复制到粘贴板!
通过 Red Hat Quay UI,超级用户能够创建、列出、更改和删除 registry 的各个方面,如用户、服务密钥、用户配额等。
6.17.1. 使用 Red Hat Quay API 创建用户帐户 复制链接链接已复制到粘贴板!
使用 API 为您的 Red Hat Quay 存储库创建新用户。
先决条件
- 以超级用户身份登录 Red Hat Quay 部署。
- 您已创建了 OAuth 访问令牌。
流程
输入以下命令使用
POST /api/v1/superuser/users/
端点来创建新用户:curl -X POST -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{
$ curl -X POST -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{ "username": "newuser", "email": "newuser@example.com" }' "https://<quay-server.example.com>/api/v1/superuser/users/"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"username": "newuser", "email": "newuser@example.com", "password": "123456789", "encrypted_password": "<example_encrypted_password>/JKY9pnDcsw="}
{"username": "newuser", "email": "newuser@example.com", "password": "123456789", "encrypted_password": "<example_encrypted_password>/JKY9pnDcsw="}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导航到您的 Red Hat Quay registry 端点,如
quay-server.example.com
,并使用从 API 调用生成的用户名和密码登录。在这种情况下,用户名是newuser
,密码则为123456789
。或者,您可以使用 CLI 登录 registry。例如:podman login <quay-server.example.com>
$ podman login <quay-server.example.com>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
username: newuser password: 123456789
username: newuser password: 123456789
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。您可以使用
GET /api/v1/superuser/users/
端点获取所有用户(包括超级用户)的列表:curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/superuser/users/"
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/superuser/users/"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果
config.yaml
文件中设置了AUTHENTICATION_TYPE: Database
,GET /api/v1/superuser/users/
端点才会返回用户和超级用户。它不适用于LDAP
身份验证类型。输出示例
{"users": [{"kind": "user", "name": "quayadmin", "username": "quayadmin", "email": "quay@quay.com", "verified": true, "avatar": {"name": "quayadmin", "hash": "b28d563a6dc76b4431fc7b0524bbff6b810387dac86d9303874871839859c7cc", "color": "#17becf", "kind": "user"}, "super_user": true, "enabled": true}, {"kind": "user", "name": "newuser", "username": "newuser", "email": "newuser@example.com", "verified": true, "avatar": {"name": "newuser", "hash": "f338a2c83bfdde84abe2d3348994d70c34185a234cfbf32f9e323e3578e7e771", "color": "#9edae5", "kind": "user"}, "super_user": false, "enabled": true}]}
{"users": [{"kind": "user", "name": "quayadmin", "username": "quayadmin", "email": "quay@quay.com", "verified": true, "avatar": {"name": "quayadmin", "hash": "b28d563a6dc76b4431fc7b0524bbff6b810387dac86d9303874871839859c7cc", "color": "#17becf", "kind": "user"}, "super_user": true, "enabled": true}, {"kind": "user", "name": "newuser", "username": "newuser", "email": "newuser@example.com", "verified": true, "avatar": {"name": "newuser", "hash": "f338a2c83bfdde84abe2d3348994d70c34185a234cfbf32f9e323e3578e7e771", "color": "#9edae5", "kind": "user"}, "super_user": false, "enabled": true}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.17.2. 使用 Red Hat Quay API 删除用户 复制链接链接已复制到粘贴板!
使用以下步骤使用 API 从 Red Hat Quay 中删除用户。
删除用户后,此用户位于其专用帐户中的任何存储库都不可用。
先决条件
- 以超级用户身份登录 Red Hat Quay 部署。
- 您已创建了 OAuth 访问令牌。
流程
输入以下
DELETE /api/v1/superuser/users/{username}
命令,以从命令行删除用户:curl -X DELETE -H "Authorization: Bearer <insert token here>" https://<quay-server.example.com>/api/v1/superuser/users/<username>
$ curl -X DELETE -H "Authorization: Bearer <insert token here>" https://<quay-server.example.com>/api/v1/superuser/users/<username>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 CLI 删除用户时,CLI 不会返回信息。要确认删除操作,您可以通过进入到 Superuser Admin Panel → Users 或输入以下
GET /api/v1/superuser/users/
命令来检查 Red Hat Quay UI。然后您可以检查是否存在它们。注意如果
config.yaml
文件中设置了AUTHENTICATION_TYPE: Database
,GET /api/v1/superuser/users/
端点才会返回用户和超级用户。它不适用于LDAP
身份验证类型。curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/superuser/users/"
$ curl -X GET -H "Authorization: Bearer <bearer_token>" "https://<quay-server.example.com>/api/v1/superuser/users/"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.17.3. 使用 Red Hat Quay API 以超级用户管理机构 复制链接链接已复制到粘贴板!
超级用户可以使用 Red Hat Quay API 列出、更改和删除机构。
流程
使用
GET /api/v1/superuser/organizations
端点列出所有机构:curl -L -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/organizations?name=<organization_name>"
$ curl -L -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/organizations?name=<organization_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"organizations": [{"name": "fed_test", "email": "fe11fc59-bd09-459a-a21c-b57692d151c9", "avatar": {"name": "fed_test", "hash": "e2ce1fb42ec2e0602362beb64b5ebd1e6ad291b710a0355f9296c16157bef3cb", "color": "#ff7f0e", "kind": "org"}, "quotas": [{"id": 3, "limit_bytes": 10737418240, "limits": []}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}, {"name": "test", "email": "new-contact@test-org.com", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "org"}, "quotas": [{"id": 2, "limit_bytes": 10737418240, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}]}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}]}
{"organizations": [{"name": "fed_test", "email": "fe11fc59-bd09-459a-a21c-b57692d151c9", "avatar": {"name": "fed_test", "hash": "e2ce1fb42ec2e0602362beb64b5ebd1e6ad291b710a0355f9296c16157bef3cb", "color": "#ff7f0e", "kind": "org"}, "quotas": [{"id": 3, "limit_bytes": 10737418240, "limits": []}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}, {"name": "test", "email": "new-contact@test-org.com", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "org"}, "quotas": [{"id": 2, "limit_bytes": 10737418240, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}]}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
PUT /api/v1/superuser/organizations/{name}
端点更改或更新机构的信息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "test", "email": "new-contact@test-org.com", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "org"}, "quotas": [{"id": 2, "limit_bytes": 10737418240, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}]}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}
{"name": "test", "email": "new-contact@test-org.com", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "org"}, "quotas": [{"id": 2, "limit_bytes": 10737418240, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}]}], "quota_report": {"quota_bytes": 0, "configured_quota": 10737418240, "running_backfill": "complete", "backfill_status": "complete"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DELETE /api/v1/superuser/organizations/{name}
端点来删除和机构:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/organizations/<organization_name>"
$ curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/organizations/<organization_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
6.17.4. 使用 Red Hat Quay API 以超级用户列出日志 复制链接链接已复制到粘贴板!
Red Hat Quay 超级用户可以列出当前系统的使用日志。
流程
使用
GET /api/v1/superuser/logs
端点列出当前系统的使用情况日志:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/logs?starttime=<start_time>&endtime=<end_time>&page=<page_number>&next_page=<next_page_token>"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/logs?starttime=<start_time>&endtime=<end_time>&page=<page_number>&next_page=<next_page_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"start_time": "Mon, 17 Feb 2025 19:29:14 -0000", "end_time": "Wed, 19 Feb 2025 19:29:14 -0000", "logs": [{"kind": "login_success", "metadata": {"type": "quayauth", "useragent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}, "ip": "192.168.1.131", "datetime": "Tue, 18 Feb 2025 19:28:15 -0000", "namespace": {"kind": "user", "name": "quayadmin", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}}}], "next_page": "gAAAAABntN-KbPJDI0PpcHmWjRCmQTLiCprE_KXiOSidbGZ7Ireu8pVTgGUIstijNhmiLzlAv_S3HOsCrKWnuBmoQYZ3F53Uxg=="}
{"start_time": "Mon, 17 Feb 2025 19:29:14 -0000", "end_time": "Wed, 19 Feb 2025 19:29:14 -0000", "logs": [{"kind": "login_success", "metadata": {"type": "quayauth", "useragent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}, "ip": "192.168.1.131", "datetime": "Tue, 18 Feb 2025 19:28:15 -0000", "namespace": {"kind": "user", "name": "quayadmin", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}}}], "next_page": "gAAAAABntN-KbPJDI0PpcHmWjRCmQTLiCprE_KXiOSidbGZ7Ireu8pVTgGUIstijNhmiLzlAv_S3HOsCrKWnuBmoQYZ3F53Uxg=="}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/superuser/registrysize/
端点获取有关 registry 大小的信息:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/registrysize/"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/registrysize/"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"size_bytes": 0, "last_ran": null, "running": false, "queued": false}
{"size_bytes": 0, "last_ran": null, "running": false, "queued": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
POST /api/v1/superuser/registrysize/
端点来定义 registry 大小信息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
6.17.5. 使用 Red Hat Quay API 管理机构配额 复制链接链接已复制到粘贴板!
配额可以使用具有超级用户 admin 权限的 Red Hat Quay API 进行管理。这些端点允许超级用户管理 registry 中所有机构的配额策略。
流程
使用
POST /api/v1/superuser/organization/{namespace}/quota
API 端点为机构创建配额策略:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Created"
"Created"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/superuser/organization/{namespace}/quota
API 端点获取有关策略的信息,包括配额 ID:curl -X GET "https://quay-server.example.com/api/v1/superuser/organization/<namespace>/quota" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
$ curl -X GET "https://quay-server.example.com/api/v1/superuser/organization/<namespace>/quota" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[{"id": 2, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}], "default_config_exists": false}]
[{"id": 2, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}], "default_config_exists": false}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
PUT /api/v1/superuser/organization/{namespace}/quota/{quota_id}
API 端点更改配额策略:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"id": 2, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}], "default_config_exists": false}
{"id": 2, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [{"id": 1, "type": "Reject", "limit_percent": 90}], "default_config_exists": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DELETE /api/v1/superuser/organization/{namespace}/quota/{quota_id}
API 端点来curl -X DELETE "https://quay-server.example.com/api/v1/superuser/organization/<namespace>/quota/<quota_id>" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
$ curl -X DELETE "https://quay-server.example.com/api/v1/superuser/organization/<namespace>/quota/<quota_id>" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
6.17.6. 使用 Red Hat Quay API 管理用户配额 复制链接链接已复制到粘贴板!
作为超级用户,您可以管理指定机构的用户配额。
流程
使用
POST /api/v1/superuser/users/{namespace}/quota
端点为机构中特定用户创建配额策略:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Created"
"Created"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/superuser/users/{namespace}/quota
端点返回用户分配的配额列表:curl -X GET "https://quay-server.example.com/api/v1/superuser/users/<username>/quota" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
$ curl -X GET "https://quay-server.example.com/api/v1/superuser/users/<username>/quota" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[{"id": 6, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}]
[{"id": 6, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
PUT /api/v1/superuser/users/{namespace}/quota/{quota_id}
端点来调整用户的策略:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"id": 6, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}
{"id": 6, "limit_bytes": 10737418240, "limit": "10.0 GiB", "default_config": false, "limits": [], "default_config_exists": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DELETE /api/v1/superuser/users/{namespace}/quota/{quota_id}
端点删除用户的策略:curl -X DELETE "https://quay-server.example.com/api/v1/superuser/users/<username>/quota/<quota_id>" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
$ curl -X DELETE "https://quay-server.example.com/api/v1/superuser/users/<username>/quota/<quota_id>" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
6.17.7. 使用 Red Hat Quay API 检索构建信息 复制链接链接已复制到粘贴板!
作为超级用户,您可以使用 Red Hat Quay API 检索有关构建的信息。
流程
使用
GET /api/v1/superuser/{build_uuid}/build
端点返回有关构建的信息:curl -X GET "https://quay-server.example.com/api/v1/superuser/<build_uuid>/build" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
$ curl -X GET "https://quay-server.example.com/api/v1/superuser/<build_uuid>/build" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/superuser/{build_uuid}/status
API 端点返回由 build uuids 指定的构建的状态:curl -X GET "https://quay-server.example.com/api/v1/superuser/<build_uuid>/status" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
$ curl -X GET "https://quay-server.example.com/api/v1/superuser/<build_uuid>/status" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/superuser/{build_uuid}/logs
API 端点返回由 build uuid 指定的构建的构建日志:curl -X GET "https://quay-server.example.com/api/v1/superuser/<build_uuid>/logs" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
$ curl -X GET "https://quay-server.example.com/api/v1/superuser/<build_uuid>/logs" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.17.8. 使用 Red Hat Quay API 以超级用户用户身份管理服务密钥 复制链接链接已复制到粘贴板!
超级用户可以使用 Red Hat Quay API 创建、列出、更改和删除服务密钥。
流程
使用
POST /api/v1/superuser/keys
端点来创建服务密钥:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"message":""}
{"message":""}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
POST /api/v1/superuser/approvedkeys/{kid}
端点批准服务密钥:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
使用
GET /api/v1/superuser/keys
端点列出服务密钥:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/keys"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/keys"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"keys":[{"approval":{"approval_type":"ServiceKeyApprovalType.AUTOMATIC","approved_date":"Mon, 20 Jan 2025 14:46:01 GMT","approver":null,"notes":""},"created_date":"Mon, 20 Jan 2025 14:46:01 GMT","expiration_date":"Wed, 05 Feb 2025 22:03:37 GMT","jwk":{"e":"AQAB","kid":"<example>","kty":"RSA","n":"<example>"},"kid":"7fr8soqXGgea8JqjwgItjjJT9GKlt-bMyMCDmvzy6WQ","metadata":{"created_by":"CLI tool"},"name":"http://quay-server.example.com:80","rotation_duration":null,"service":"quay"}]}
{"keys":[{"approval":{"approval_type":"ServiceKeyApprovalType.AUTOMATIC","approved_date":"Mon, 20 Jan 2025 14:46:01 GMT","approver":null,"notes":""},"created_date":"Mon, 20 Jan 2025 14:46:01 GMT","expiration_date":"Wed, 05 Feb 2025 22:03:37 GMT","jwk":{"e":"AQAB","kid":"<example>","kty":"RSA","n":"<example>"},"kid":"7fr8soqXGgea8JqjwgItjjJT9GKlt-bMyMCDmvzy6WQ","metadata":{"created_by":"CLI tool"},"name":"http://quay-server.example.com:80","rotation_duration":null,"service":"quay"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/superuser/keys/{kid}
端点,通过 kid 检索有关服务帐户的信息:curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/keys/<kid>"
$ curl -X GET \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/keys/<kid>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"approval":{"approval_type":"ServiceKeyApprovalType.AUTOMATIC","approved_date":"Mon, 20 Jan 2025 14:46:01 GMT","approver":null,"notes":""},"created_date":"Mon, 20 Jan 2025 14:46:01 GMT","expiration_date":"Wed, 05 Feb 2025 22:03:37 GMT","jwk":{"e":"AQAB","kid":"7fr8soqXGgea8JqjwgItjjJT9GKlt-bMyMCDmvzy6WQ","kty":"RSA","n":"5iMX7RQ_4F_zdb1qonMsuWUDauCOqEyRpD8L_EhgnwDxrgMHuOlJ4_7sEOrOa3Jkx3QhwIW6LJCP69PR5X0wvz6vmC1DoWEaWv41bAq23Knzj7gUU9-N_fkZPZN9NQwZ-D-Zqg9L1c_cJF93Dy93py8_JswWFDj1FxMaThJmrX68wBwjhF-JLYqgCAGFyezzJ3oTpO-esV9v6R7skfkaqtx_cjLZk_0cKB4VKTtxiy2A8D_5nANTOSSbZLXNh2Vatgh3yrOmnTTNLIs0YO3vFIuylEkczHlln-40UMAzRB3HNspUySyzImO_2yGdrA762LATQrOzJN8E1YKCADx5CQ"},"kid":"7fr8soqXGgea8JqjwgItjjJT9GKlt-bMyMCDmvzy6WQ","metadata":{"created_by":"CLI tool"},"name":"http://quay-server.example.com:80","rotation_duration":null,"service":"quay"}
{"approval":{"approval_type":"ServiceKeyApprovalType.AUTOMATIC","approved_date":"Mon, 20 Jan 2025 14:46:01 GMT","approver":null,"notes":""},"created_date":"Mon, 20 Jan 2025 14:46:01 GMT","expiration_date":"Wed, 05 Feb 2025 22:03:37 GMT","jwk":{"e":"AQAB","kid":"7fr8soqXGgea8JqjwgItjjJT9GKlt-bMyMCDmvzy6WQ","kty":"RSA","n":"5iMX7RQ_4F_zdb1qonMsuWUDauCOqEyRpD8L_EhgnwDxrgMHuOlJ4_7sEOrOa3Jkx3QhwIW6LJCP69PR5X0wvz6vmC1DoWEaWv41bAq23Knzj7gUU9-N_fkZPZN9NQwZ-D-Zqg9L1c_cJF93Dy93py8_JswWFDj1FxMaThJmrX68wBwjhF-JLYqgCAGFyezzJ3oTpO-esV9v6R7skfkaqtx_cjLZk_0cKB4VKTtxiy2A8D_5nANTOSSbZLXNh2Vatgh3yrOmnTTNLIs0YO3vFIuylEkczHlln-40UMAzRB3HNspUySyzImO_2yGdrA762LATQrOzJN8E1YKCADx5CQ"},"kid":"7fr8soqXGgea8JqjwgItjjJT9GKlt-bMyMCDmvzy6WQ","metadata":{"created_by":"CLI tool"},"name":"http://quay-server.example.com:80","rotation_duration":null,"service":"quay"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
PUT /api/v1/superuser/keys/{kid}
端点来更新服务密钥,如元数据:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"approval":{"approval_type":"ServiceKeyApprovalType.AUTOMATIC","approved_date":"Mon, 20 Jan 2025 14:46:01 GMT","approver":null,"notes":""},"created_date":"Mon, 20 Jan 2025 14:46:01 GMT","expiration_date":"Mon, 03 Mar 2025 10:40:00 GMT","jwk":{"e":"AQAB","kid":"7fr8soqXGgea8JqjwgItjjJT9GKlt-bMyMCDmvzy6WQ","kty":"RSA","n":"5iMX7RQ_4F_zdb1qonMsuWUDauCOqEyRpD8L_EhgnwDxrgMHuOlJ4_7sEOrOa3Jkx3QhwIW6LJCP69PR5X0wvz6vmC1DoWEaWv41bAq23Knzj7gUU9-N_fkZPZN9NQwZ-D-Zqg9L1c_cJF93Dy93py8_JswWFDj1FxMaThJmrX68wBwjhF-JLYqgCAGFyezzJ3oTpO-esV9v6R7skfkaqtx_cjLZk_0cKB4VKTtxiy2A8D_5nANTOSSbZLXNh2Vatgh3yrOmnTTNLIs0YO3vFIuylEkczHlln-40UMAzRB3HNspUySyzImO_2yGdrA762LATQrOzJN8E1YKCADx5CQ"},"kid":"7fr8soqXGgea8JqjwgItjjJT9GKlt-bMyMCDmvzy6WQ","metadata":{"created_by":"CLI tool","environment":"production"},"name":"quay-service-key-updated","rotation_duration":null,"service":"quay"}
{"approval":{"approval_type":"ServiceKeyApprovalType.AUTOMATIC","approved_date":"Mon, 20 Jan 2025 14:46:01 GMT","approver":null,"notes":""},"created_date":"Mon, 20 Jan 2025 14:46:01 GMT","expiration_date":"Mon, 03 Mar 2025 10:40:00 GMT","jwk":{"e":"AQAB","kid":"7fr8soqXGgea8JqjwgItjjJT9GKlt-bMyMCDmvzy6WQ","kty":"RSA","n":"5iMX7RQ_4F_zdb1qonMsuWUDauCOqEyRpD8L_EhgnwDxrgMHuOlJ4_7sEOrOa3Jkx3QhwIW6LJCP69PR5X0wvz6vmC1DoWEaWv41bAq23Knzj7gUU9-N_fkZPZN9NQwZ-D-Zqg9L1c_cJF93Dy93py8_JswWFDj1FxMaThJmrX68wBwjhF-JLYqgCAGFyezzJ3oTpO-esV9v6R7skfkaqtx_cjLZk_0cKB4VKTtxiy2A8D_5nANTOSSbZLXNh2Vatgh3yrOmnTTNLIs0YO3vFIuylEkczHlln-40UMAzRB3HNspUySyzImO_2yGdrA762LATQrOzJN8E1YKCADx5CQ"},"kid":"7fr8soqXGgea8JqjwgItjjJT9GKlt-bMyMCDmvzy6WQ","metadata":{"created_by":"CLI tool","environment":"production"},"name":"quay-service-key-updated","rotation_duration":null,"service":"quay"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DELETE /api/v1/superuser/keys/{kid}
端点删除服务密钥:curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/keys/<kid>"
$ curl -X DELETE \ -H "Authorization: Bearer <bearer_token>" \ "https://<quay_server>/api/v1/superuser/keys/<kid>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
6.18. 使用 Red Hat Quay API 管理标签 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay API 更改、恢复、删除或列出标签。
流程
使用
PUT /api/v1/repository/{repository}/tag/{tag}
端点更改标签指向或创建新标签:curl -X PUT "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/tag/<tag_name>" \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -H "Content-Type: application/json" \ -d '{"manifest_digest": "<MANIFEST_DIGEST>"}'
$ curl -X PUT "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/tag/<tag_name>" \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -H "Content-Type: application/json" \ -d '{"manifest_digest": "<MANIFEST_DIGEST>"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Updated"
"Updated"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
POST /api/v1/repository/{repository}/tag/{tag}/restore
端点将存储库标签恢复到存储库中以前的镜像:curl -X POST "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/tag/<tag_name>/restore" \ -H "Authorization: Bearer <your_access_token>" \ -H "Content-Type: application/json" \ -d '{"manifest_digest": "sha256:<your_manifest_digest>"}'
$ curl -X POST "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/tag/<tag_name>/restore" \ -H "Authorization: Bearer <your_access_token>" \ -H "Content-Type: application/json" \ -d '{"manifest_digest": "sha256:<your_manifest_digest>"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{}
{}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/repository/{repository}/tag/
端点获取存储库标签列表:curl -X GET "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/tag/" \ -H "Authorization: Bearer <your_access_token>" \ -H "Content-Type: application/json"
$ curl -X GET "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/tag/" \ -H "Authorization: Bearer <your_access_token>" \ -H "Content-Type: application/json"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"tags": [{"name": "test", "reversion": true, "start_ts": 1740496373, "manifest_digest": "sha256:d08334991a3dba62307016833083d6433f489ab0f7d36d0a4771a20b4569b2f6", "is_manifest_list": false, "size": 2280303, "last_modified": "Tue, 25 Feb 2025 15:12:53 -0000"}, {"name": "test", "reversion": false, "start_ts": 1740495442, "end_ts": 1740496373, "manifest_digest": "sha256:d08334991a3dba62307016833083d6433f489ab0f7d36d0a4771a20b4569b2f6", "is_manifest_list": false, "size": 2280303, "last_modified": "Tue, 25 Feb 2025 14:57:22 -0000", "expiration": "Tue, 25 Feb 2025 15:12:53 -0000"}, {"name": "test", "reversion": false, "start_ts": 1740495408, "end_ts": 1740495442, "manifest_digest": "sha256:d08334991a3dba62307016833083d6433f489ab0f7d36d0a4771a20b4569b2f6", "is_manifest_list": false, "size": 2280303, "last_modified": "Tue, 25 Feb 2025 14:56:48 -0000", "expiration": "Tue, 25 Feb 2025 14:57:22 -0000"}], "page": 1, "has_additional": false}
{"tags": [{"name": "test", "reversion": true, "start_ts": 1740496373, "manifest_digest": "sha256:d08334991a3dba62307016833083d6433f489ab0f7d36d0a4771a20b4569b2f6", "is_manifest_list": false, "size": 2280303, "last_modified": "Tue, 25 Feb 2025 15:12:53 -0000"}, {"name": "test", "reversion": false, "start_ts": 1740495442, "end_ts": 1740496373, "manifest_digest": "sha256:d08334991a3dba62307016833083d6433f489ab0f7d36d0a4771a20b4569b2f6", "is_manifest_list": false, "size": 2280303, "last_modified": "Tue, 25 Feb 2025 14:57:22 -0000", "expiration": "Tue, 25 Feb 2025 15:12:53 -0000"}, {"name": "test", "reversion": false, "start_ts": 1740495408, "end_ts": 1740495442, "manifest_digest": "sha256:d08334991a3dba62307016833083d6433f489ab0f7d36d0a4771a20b4569b2f6", "is_manifest_list": false, "size": 2280303, "last_modified": "Tue, 25 Feb 2025 14:56:48 -0000", "expiration": "Tue, 25 Feb 2025 14:57:22 -0000"}], "page": 1, "has_additional": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DELETE /api/v1/repository/{repository}/tag/{tag}
端点从存储库中删除标签:curl -X DELETE "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/tag/<tag_name>" \ -H "Authorization: Bearer <your_access_token>"
$ curl -X DELETE "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/tag/<tag_name>" \ -H "Authorization: Bearer <your_access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
6.19. 使用 API 管理团队 复制链接链接已复制到粘贴板!
可以使用 Red Hat Quay API 管理团队。
6.19.1. 使用 API 管理团队成员和存储库权限 复制链接链接已复制到粘贴板!
使用以下步骤将成员添加到团队(直接邀请或通过电子邮件),或者从团队中删除成员。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
输入
PUT /api/v1/organization/{orgname}/team/{teamname}/members/{membername}
命令,将成员添加到现有团队中:curl -X PUT \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members/<member_name>"
$ curl -X PUT \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members/<member_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "testuser", "kind": "user", "is_robot": false, "avatar": {"name": "testuser", "hash": "d51d17303dc3271ac3266fb332d7df919bab882bbfc7199d2017a4daac8979f0", "color": "#5254a3", "kind": "user"}, "invited": false}
{"name": "testuser", "kind": "user", "is_robot": false, "avatar": {"name": "testuser", "hash": "d51d17303dc3271ac3266fb332d7df919bab882bbfc7199d2017a4daac8979f0", "color": "#5254a3", "kind": "user"}, "invited": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入
DELETE /api/v1/organization/{orgname}/team/{teamname}/members/{membername}
命令删除团队的成员:curl -X DELETE \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members/<member_name>"
$ curl -X DELETE \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members/<member_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中输出。为确保成员已被删除,您可以输入
GET /api/v1/organization/{orgname}/team/{teamname}/members
命令,并确保输出中不会返回成员。curl -X GET \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members"
$ curl -X GET \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/members"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "owners", "members": [{"name": "quayadmin", "kind": "user", "is_robot": false, "avatar": {"name": "quayadmin", "hash": "b28d563a6dc76b4431fc7b0524bbff6b810387dac86d9303874871839859c7cc", "color": "#17becf", "kind": "user"}, "invited": false}, {"name": "test-org+test", "kind": "user", "is_robot": true, "avatar": {"name": "test-org+test", "hash": "aa85264436fe9839e7160bf349100a9b71403a5e9ec684d5b5e9571f6c821370", "color": "#8c564b", "kind": "robot"}, "invited": false}], "can_edit": true}
{"name": "owners", "members": [{"name": "quayadmin", "kind": "user", "is_robot": false, "avatar": {"name": "quayadmin", "hash": "b28d563a6dc76b4431fc7b0524bbff6b810387dac86d9303874871839859c7cc", "color": "#17becf", "kind": "user"}, "invited": false}, {"name": "test-org+test", "kind": "user", "is_robot": true, "avatar": {"name": "test-org+test", "hash": "aa85264436fe9839e7160bf349100a9b71403a5e9ec684d5b5e9571f6c821370", "color": "#8c564b", "kind": "robot"}, "invited": false}], "can_edit": true}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以输入
PUT /api/v1/organization/{orgname}/team/{teamname}/invite/{email}
命令以通过电子邮件地址向现有团队邀请用户:curl -X PUT \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/invite/<email>"
$ curl -X PUT \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/invite/<email>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以输入
DELETE /api/v1/organization/{orgname}/team/{teamname}/invite/{email}
命令来删除电子邮件地址邀请来加入团队。例如:curl -X DELETE \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/invite/<email>"
$ curl -X DELETE \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/invite/<email>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.19.2. 使用 API 设置机构中团队的角色 复制链接链接已复制到粘贴板!
使用以下步骤使用 API 查看和设置团队。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
输入以下
GET /api/v1/organization/{orgname}/team/{teamname}/permissions
命令,为机构的团队返回存储库权限列表。请注意,您的团队必须已添加到存储库中才能返回信息。curl -X GET \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/permissions"
$ curl -X GET \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>/permissions"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"permissions": [{"repository": {"name": "api-repo", "is_public": true}, "role": "admin"}]}
{"permissions": [{"repository": {"name": "api-repo", "is_public": true}, "role": "admin"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用
PUT /api/v1/organization/{orgname}/team/{teamname}
命令,在组织内创建或更新团队,使其具有 admin、member 或 creator 角色。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"name": "testteam", "description": "", "can_view": true, "role": "creator", "avatar": {"name": "testteam", "hash": "827f8c5762148d7e85402495b126e0a18b9b168170416ed04b49aae551099dc8", "color": "#ff7f0e", "kind": "team"}, "new_team": false}
{"name": "testteam", "description": "", "can_view": true, "role": "creator", "avatar": {"name": "testteam", "hash": "827f8c5762148d7e85402495b126e0a18b9b168170416ed04b49aae551099dc8", "color": "#ff7f0e", "kind": "team"}, "new_team": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.19.3. 使用 API 删除机构中的团队 复制链接链接已复制到粘贴板!
使用以下步骤使用 API 删除机构中的团队。
先决条件
- 您已创建了 OAuth 访问令牌。
流程
您可以通过输入
DELETE /api/v1/organization/{orgname}/team/{teamname}
命令删除机构中的团队:curl -X DELETE \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>"
$ curl -X DELETE \ -H "Authorization: Bearer <your_access_token>" \ "<quay-server.example.com>/api/v1/organization/<organization_name>/team/<team_name>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。
6.20. 使用 Red Hat Quay API 管理构建 复制链接链接已复制到粘贴板!
可使用 Red Hat Quay API 管理构建。
流程
使用
GET /api/v1/repository/{repository}/trigger/
端点列出指定存储库的触发器:curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/" \ -H "Authorization: Bearer <your_access_token>"
$ curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/" \ -H "Authorization: Bearer <your_access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"triggers": [{"id": "32ca5eae-a29f-46c7-8f44-3221ca417c92", "service": "custom-git", "is_active": false, "build_source": null, "repository_url": null, "config": {}, "can_invoke": true, "enabled": true, "disabled_reason": null}]}
{"triggers": [{"id": "32ca5eae-a29f-46c7-8f44-3221ca417c92", "service": "custom-git", "is_active": false, "build_source": null, "repository_url": null, "config": {}, "can_invoke": true, "enabled": true, "disabled_reason": null}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
POST /api/v1/repository/{repository}/trigger/{trigger_uuid}/activate
端点来激活指定的构建触发器。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
POST /api/v1/repository/{repository}/trigger/{trigger_uuid}/start
端点从指定的触发器手动启动构建:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/repository/{repository}/trigger/{trigger_uuid}/builds
端点来列出由指定触发器启动的构建:curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid/builds?limit=10" \ -H "Authorization: Bearer <your_access_token>"
$ curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid/builds?limit=10" \ -H "Authorization: Bearer <your_access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/repository/{repository}/trigger/{trigger_uuid}
端点获取指定构建触发器的信息:curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid" \ -H "Authorization: Bearer <your_access_token>"
$ curl -X GET "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid" \ -H "Authorization: Bearer <your_access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
PUT /api/v1/repository/{repository}/trigger/{trigger_uuid}
端点更新指定的构建触发器:curl -X PUT "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid" \ -H "Authorization: Bearer <your_access_token>" \ -H "Content-Type: application/json" \ -d '{"enabled": true}'
$ curl -X PUT "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid" \ -H "Authorization: Bearer <your_access_token>" \ -H "Content-Type: application/json" \ -d '{"enabled": true}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DELETE /api/v1/repository/{repository}/trigger/{trigger_uuid}
端点删除指定的构建触发器:curl -X DELETE "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid" \ -H "Authorization: Bearer <your_access_token>"
$ curl -X DELETE "https://quay-server.example.com/api/v1/repository/example_namespace/example_repo/trigger/example-trigger-uuid" \ -H "Authorization: Bearer <your_access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.21. 使用 Red Hat Quay API 管理当前用户选项 复制链接链接已复制到粘贴板!
Red Hat Quay API 提供了一些用户选项,如星级存储库或获取您的帐户信息。
流程
使用
GET /api/v1/user/
端点获取经过身份验证的用户的用户信息。curl -X GET "https://quay-server.example.com/api/v1/user/" \ -H "Authorization: Bearer <your_access_token>"
$ curl -X GET "https://quay-server.example.com/api/v1/user/" \ -H "Authorization: Bearer <your_access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"anonymous": false, "username": "quayadmin", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "can_create_repo": true, "is_me": true, "verified": true, "email": "test@gmil.com", "logins": [], "invoice_email": false, "invoice_email_address": null, "preferred_namespace": false, "tag_expiration_s": 1209600, "prompts": [], "company": null, "family_name": null, "given_name": null, "location": null, "is_free_account": true, "has_password_set": true, "quotas": [{"id": 4, "limit_bytes": 2199023255552, "limits": [{"id": 3, "type": "Reject", "limit_percent": 100}]}], "quota_report": {"quota_bytes": 2280675, "configured_quota": 2199023255552, "running_backfill": "complete", "backfill_status": "complete"}, "organizations": [{"name": "test", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "org"}, "can_create_repo": true, "public": false, "is_org_admin": true, "preferred_namespace": false}, {"name": "sample", "avatar": {"name": "sample", "hash": "ba560c68f1d26e8c6b911ac9b5d10d513e7e43e576cc2baece1b8a46f36a29a5", "color": "#b5cf6b", "kind": "org"}, "can_create_repo": true, "public": false, "is_org_admin": true, "preferred_namespace": false}], "super_user": true}
{"anonymous": false, "username": "quayadmin", "avatar": {"name": "quayadmin", "hash": "6d640d802fe23b93779b987c187a4b7a4d8fbcbd4febe7009bdff58d84498fba", "color": "#f7b6d2", "kind": "user"}, "can_create_repo": true, "is_me": true, "verified": true, "email": "test@gmil.com", "logins": [], "invoice_email": false, "invoice_email_address": null, "preferred_namespace": false, "tag_expiration_s": 1209600, "prompts": [], "company": null, "family_name": null, "given_name": null, "location": null, "is_free_account": true, "has_password_set": true, "quotas": [{"id": 4, "limit_bytes": 2199023255552, "limits": [{"id": 3, "type": "Reject", "limit_percent": 100}]}], "quota_report": {"quota_bytes": 2280675, "configured_quota": 2199023255552, "running_backfill": "complete", "backfill_status": "complete"}, "organizations": [{"name": "test", "avatar": {"name": "test", "hash": "a15d479002b20f211568fd4419e76686d2b88a4980a5b4c4bc10420776c5f6fe", "color": "#aec7e8", "kind": "org"}, "can_create_repo": true, "public": false, "is_org_admin": true, "preferred_namespace": false}, {"name": "sample", "avatar": {"name": "sample", "hash": "ba560c68f1d26e8c6b911ac9b5d10d513e7e43e576cc2baece1b8a46f36a29a5", "color": "#b5cf6b", "kind": "org"}, "can_create_repo": true, "public": false, "is_org_admin": true, "preferred_namespace": false}], "super_user": true}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/users/{username}
端点获取指定用户的用户信息。curl -X GET "https://quay-server.example.com/api/v1/users/example_user" \ -H "Authorization: Bearer <your_access_token>"
$ curl -X GET "https://quay-server.example.com/api/v1/users/example_user" \ -H "Authorization: Bearer <your_access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"anonymous": false, "username": "testuser", "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}, "super_user": false}
{"anonymous": false, "username": "testuser", "avatar": {"name": "testuser", "hash": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a", "color": "#6b6ecf", "kind": "user"}, "super_user": false}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
POST /api/v1/user/starred
端点来星级存储库:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"namespace": "test", "repository": "testrepo"}
{"namespace": "test", "repository": "testrepo"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
GET /api/v1/user/starred
端点列出所有 starred 存储库:curl -X GET "https://quay-server.example.com/api/v1/user/starred?next_page=<next_page_token>" \ -H "Authorization: Bearer <your_access_token>"
$ curl -X GET "https://quay-server.example.com/api/v1/user/starred?next_page=<next_page_token>" \ -H "Authorization: Bearer <your_access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"repositories": [{"namespace": "test", "name": "testrepo", "description": "This repository is now under maintenance.", "is_public": true}]}
{"repositories": [{"namespace": "test", "name": "testrepo", "description": "This repository is now under maintenance.", "is_public": true}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
DELETE /api/v1/user/starred/{repository}
端点从存储库中删除星级:curl -X DELETE "https://quay-server.example.com/api/v1/user/starred/namespace/repository-name" \ -H "Authorization: Bearer <your_access_token>"
$ curl -X DELETE "https://quay-server.example.com/api/v1/user/starred/namespace/repository-name" \ -H "Authorization: Bearer <your_access_token>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令不会在 CLI 中返回输出。