1.4. 从命令行访问 Red Hat Quay API
您可以使用 curl
命令通过 Red Hat Quay 集群的 API 获取 GET、PUT、POST 或 DELETE 设置。将 <token
> 替换为之前创建的 OAuth 访问令牌,以便在以下示例中获取或更改设置。
1.4.1. 获取超级用户信息 复制链接链接已复制到粘贴板!
curl -X GET -H "Authorization: Bearer <token_here>" \ "https://<yourquayhost>/api/v1/superuser/users/"
$ curl -X GET -H "Authorization: Bearer <token_here>" \
"https://<yourquayhost>/api/v1/superuser/users/"
例如:
1.4.2. 使用 API 创建超级用户 复制链接链接已复制到粘贴板!
配置超级用户名称,如 Deploy Quay 书中所述:
- 使用配置编辑器 UI 或
-
直接编辑
config.yaml
文件,使用 配置 API 来验证(并下载)更新的配置捆绑包的选项
为超级用户名称创建用户帐户:
详细获取身份验证令牌,并使用
curl
创建用户:curl -H "Content-Type: application/json" -H "Authorization: Bearer Fava2kV9C92p1eXnMawBZx9vTqVnksvwNm0ckFKZ" -X POST --data '{
$ curl -H "Content-Type: application/json" -H "Authorization: Bearer Fava2kV9C92p1eXnMawBZx9vTqVnksvwNm0ckFKZ" -X POST --data '{ "username": "quaysuper", "email": "quaysuper@example.com" }' http://quay-server:8080/api/v1/superuser/users/ | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返回的内容包括为新用户帐户生成的密码:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,当您请求 用户列表时,它将以超级用户的形式显示 quaysuper
:
1.4.3. 列出用量日志 复制链接链接已复制到粘贴板!
可以使用一个内部 API /api/v1/superuser/logs
来列出当前系统的使用日志。已分页结果,因此以下示例中创建了 20 多个仓库,以演示如何使用多个调用来访问整个结果集。
1.4.3.1. 分页示例 复制链接链接已复制到粘贴板!
第一次调用
curl -X GET -k -H "Authorization: Bearer qz9NZ2Np1f55CSZ3RVOvxjeUdkzYuCp0pKggABCD" https://example-registry-quay-quay-enterprise.apps.example.com/api/v1/superuser/logs | jq
$ curl -X GET -k -H "Authorization: Bearer qz9NZ2Np1f55CSZ3RVOvxjeUdkzYuCp0pKggABCD" https://example-registry-quay-quay-enterprise.apps.example.com/api/v1/superuser/logs | jq
初始输出
第二个调用使用 next_page
curl -X GET -k -H "Authorization: Bearer qz9NZ2Np1f55CSZ3RVOvxjeUdkzYuCp0pKggABCD" https://example-registry-quay-quay-enterprise.apps.example.com/api/v1/superuser/logs?next_page=gAAAAABhtzGDsH38x7pjWhD8MJq1_2FAgqUw2X9S2LoCLNPH65QJqB4XAU2qAxYb6QqtlcWj9eI6DUiMN_q3e3I0agCvB2VPQ8rY75WeaiUzM3rQlMc4i6ElR78t8oUxVfNp1RMPIRQYYZyXP9h6E8LZZhqTMs0S-SedaQJ3kVFtkxZqJwHVjgt23Ts2DonVoYwtKgI3bCC5 | jq
$ curl -X GET -k -H "Authorization: Bearer qz9NZ2Np1f55CSZ3RVOvxjeUdkzYuCp0pKggABCD" https://example-registry-quay-quay-enterprise.apps.example.com/api/v1/superuser/logs?next_page=gAAAAABhtzGDsH38x7pjWhD8MJq1_2FAgqUw2X9S2LoCLNPH65QJqB4XAU2qAxYb6QqtlcWj9eI6DUiMN_q3e3I0agCvB2VPQ8rY75WeaiUzM3rQlMc4i6ElR78t8oUxVfNp1RMPIRQYYZyXP9h6E8LZZhqTMs0S-SedaQJ3kVFtkxZqJwHVjgt23Ts2DonVoYwtKgI3bCC5 | jq
第二个调用的输出
1.4.4. 目录同步 复制链接链接已复制到粘贴板!
要为机构 testadminorg
中的团队 newteam
启用目录同步,在 LDAP 中对应的组名称为 ldapgroup
:
curl -X POST -H "Authorization: Bearer 9rJYBR3v3pXcj5XqIA2XX6Thkwk4gld4TCYLLWDF" \ -H "Content-type: application/json" \ -d '{"group_dn": "cn=ldapgroup,ou=Users"}' \ http://quay1-server:8080/api/v1/organization/testadminorg/team/newteam/syncing
$ curl -X POST -H "Authorization: Bearer 9rJYBR3v3pXcj5XqIA2XX6Thkwk4gld4TCYLLWDF" \
-H "Content-type: application/json" \
-d '{"group_dn": "cn=ldapgroup,ou=Users"}' \
http://quay1-server:8080/api/v1/organization/testadminorg/team/newteam/syncing
为同一团队禁用同步:
curl -X DELETE -H "Authorization: Bearer 9rJYBR3v3pXcj5XqIA2XX6Thkwk4gld4TCYLLWDF" \ http://quay1-server:8080/api/v1/organization/testadminorg/team/newteam/syncing
$ curl -X DELETE -H "Authorization: Bearer 9rJYBR3v3pXcj5XqIA2XX6Thkwk4gld4TCYLLWDF" \
http://quay1-server:8080/api/v1/organization/testadminorg/team/newteam/syncing
1.4.5. 通过 API 创建存储库构建 复制链接链接已复制到粘贴板!
要从指定的输入构建存储库并使用自定义标签标记构建,用户可以使用 requestRepoBuild 端点。它采用以下数据:
archive_url
参数应指向 tar
或 zip
存档,其中包含构建的 Dockerfile 和其他必要文件。file_id
参数除了我们旧的构建系统之外。无法再使用。如果 Dockerfile 位于子目录中,也需要指定它。
归档应可以通过公开访问。OAuth 应用应具有"Administer Organization"范围,因为只有机构管理员可以访问机器人的帐户令牌。否则,某人只需向机器人(无访问权限本身)授予构建访问权限即可获得机器人的权限,并使用它来获取镜像内容。如果出现错误,请检查返回 json 块,并确保正确传递存档位置、pull 机器和其他参数。单击各个构建页面右上角的"下载日志",以检查日志以查看更详细的信息。
1.4.6. 创建机构机器 复制链接链接已复制到粘贴板!
curl -X PUT https://quay.io/api/v1/organization/{orgname}/robots/{robot shortname} \ -H 'Authorization: Bearer <token>''
$ curl -X PUT https://quay.io/api/v1/organization/{orgname}/robots/{robot shortname} \
-H 'Authorization: Bearer <token>''
1.4.7. 触发构建 复制链接链接已复制到粘贴板!
curl -X POST https://quay.io/api/v1/repository/YOURORGNAME/YOURREPONAME/build/ \ -H 'Authorization: Bearer <token>'
$ curl -X POST https://quay.io/api/v1/repository/YOURORGNAME/YOURREPONAME/build/ \
-H 'Authorization: Bearer <token>'
带有请求的 Python
import requests r = requests.post('https://quay.io/api/v1/repository/example/example/image', headers={'content-type': 'application/json', 'Authorization': 'Bearer <redacted>'}, data={[<request-body-contents>}) print(r.text)
import requests
r = requests.post('https://quay.io/api/v1/repository/example/example/image', headers={'content-type': 'application/json', 'Authorization': 'Bearer <redacted>'}, data={[<request-body-contents>})
print(r.text)
1.4.8. 创建私有存储库 复制链接链接已复制到粘贴板!
curl -X POST https://quay.io/api/v1/repository \ -H 'Authorization: Bearer {token}' \ -H 'Content-Type: application/json' \ -d '{"namespace":"yournamespace", "repository":"yourreponame",
$ curl -X POST https://quay.io/api/v1/repository \
-H 'Authorization: Bearer {token}' \
-H 'Content-Type: application/json' \
-d '{"namespace":"yournamespace", "repository":"yourreponame",
"description":"descriptionofyourrepo", "visibility": "private"}' | jq
1.4.9. 创建已镜像的存储库 复制链接链接已复制到粘贴板!
最小配置
curl -X POST -H "Authorization: Bearer ${bearer_token}" -H "Content-Type: application/json" --data '{"external_reference": "quay.io/minio/mc", "external_registry_username": "", "sync_interval": 600, "sync_start_date": "2021-08-06T11:11:39Z", "root_rule": {"rule_kind": "tag_glob_csv", "rule_value": [ "latest" ]}, "robot_username": "orga+robot"}' https://${quay_registry}/api/v1/repository/${orga}/${repo}/mirror | jq
curl -X POST
-H "Authorization: Bearer ${bearer_token}"
-H "Content-Type: application/json"
--data '{"external_reference": "quay.io/minio/mc", "external_registry_username": "", "sync_interval": 600, "sync_start_date": "2021-08-06T11:11:39Z", "root_rule": {"rule_kind": "tag_glob_csv", "rule_value": [ "latest" ]}, "robot_username": "orga+robot"}' https://${quay_registry}/api/v1/repository/${orga}/${repo}/mirror | jq
扩展配置
curl -X POST
$ curl -X POST
-H "Authorization: Bearer ${bearer_token}"
-H "Content-Type: application/json"
--data '{"is_enabled": true, "external_reference": "quay.io/minio/mc", "external_registry_username": "username", "external_registry_password": "password", "external_registry_config": {"unsigned_images":true, "verify_tls": false, "proxy": {"http_proxy": "http://proxy.tld", "https_proxy": "https://proxy.tld", "no_proxy": "domain"}}, "sync_interval": 600, "sync_start_date": "2021-08-06T11:11:39Z", "root_rule": {"rule_kind": "tag_glob_csv", "rule_value": [ "*" ]}, "robot_username": "orga+robot"}' https://${quay_registry}/api/v1/repository/${orga}/${repo}/mirror | jq