2.10. 预配置 Red Hat Quay 以实现自动化
Red Hat Quay 有几个支持自动化的配置选项。这些选项可以在部署前设置,以便尽可能地与用户界面交互。
2.10.1. 允许 API 创建第一个用户
要使用 /api/v1/user/initialize
API 创建第一个用户,将 FEATURE_USER_INITIALIZE
参数设置为 true
。与需要由现有机构中 OAuth 应用生成的 OAuth 令牌的所有其他 registry API 调用不同,API 端点不需要身份验证。
部署 Red Hat Quay 后,您可以使用 API 来创建用户,如 quayadmin
,假设还没有创建其他用户。如需更多信息,请参阅使用 API 创建第一个用户。
2.10.2. 启用常规 API 访问
将配置选项 BROWSER_API_CALLS_XHR_ONLY
设置为 false
,以允许常规访问 Red Hat Quay registry API。
2.10.3. 添加超级用户
部署 Red Hat Quay 后,您可以创建用户。我们建议第一个用户被授予具有完整权限的管理员特权。可以使用 SUPER_USER
配置对象提前配置完全权限。例如:
... SERVER_HOSTNAME: quay-server.example.com SETUP_COMPLETE: true SUPER_USERS: - quayadmin ...
2.10.4. 限制用户创建
配置了超级用户后,您可以限制创建新用户到超级用户组的能力。将 FEATURE_USER_CREATION
设置为 false
以限制用户创建。例如:
... FEATURE_USER_INITIALIZE: true BROWSER_API_CALLS_XHR_ONLY: false SUPER_USERS: - quayadmin FEATURE_USER_CREATION: false ...
2.10.5. 启用新功能
要使用新的 Red Hat Quay 3.7 功能,请启用一些或所有以下功能:
... FEATURE_QUOTA_MANAGEMENT: true FEATURE_BUILD_SUPPORT: true FEATURE_PROXY_CACHE: true FEATURE_STORAGE_REPLICATION: true DEFAULT_SYSTEM_REJECT_QUOTA_BYTES: 102400000 ...
2.10.6. 推荐的自动化配置
建议对自动化使用以下 config.yaml
参数:
... FEATURE_USER_INITIALIZE: true BROWSER_API_CALLS_XHR_ONLY: false SUPER_USERS: - quayadmin FEATURE_USER_CREATION: false ...
2.10.7. 使用初始配置部署 Red Hat Quay Operator
使用以下步骤,使用初始配置在 OpenShift Container Platform 上部署 Red Hat Quay。
先决条件
-
已安装
oc
CLI。
流程
使用配置文件创建 secret:
$ oc create secret generic -n quay-enterprise --from-file config.yaml=./config.yaml init-config-bundle-secret
创建
quayregistry.yaml
文件。识别非受管组件并引用创建的 secret,例如:apiVersion: quay.redhat.com/v1 kind: QuayRegistry metadata: name: example-registry namespace: quay-enterprise spec: configBundleSecret: init-config-bundle-secret
部署 Red Hat Quay registry:
$ oc create -n quay-enterprise -f quayregistry.yaml
后续步骤
2.10.8. 使用 API 部署 Red Hat Quay
本节介绍了使用 API 部署 Red Hat Quay。
先决条件
-
配置选项
FEATURE_USER_INITIALIZE
必须设置为true
。 - 数据库中没有用户。
如需有关预配置 Red Hat Quay 部署的更多信息,请参阅 预配置 Red Hat Quay 的自动化部分
2.10.8.1. 使用 API 创建第一个用户
使用以下步骤在 Red Hat Quay 机构中创建第一个用户。
此流程通过指定 "access_token": true
来请求 OAuth 令牌。
使用
status.registryEndpoint
URL,调用/api/v1/user/initialize
API,通过输入以下命令传递用户名、密码和电子邮件地址:$ curl -X POST -k https://example-registry-quay-quay-enterprise.apps.docs.quayteam.org/api/v1/user/initialize --header 'Content-Type: application/json' --data '{ "username": "quayadmin", "password":"quaypass123", "email": "quayadmin@example.com", "access_token": true}'
如果成功,该命令会返回一个带有用户名、电子邮件和加密密码的对象。例如:
{"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"}
如果用户已存在于数据库中,则返回错误:
{"message":"Cannot initialize user in a non-empty database"}
如果您的密码至少为八个字符或者包含空格,则会返回一个错误:
{"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}
2.10.8.2. 使用 OAuth 令牌
在调用 API 后,您可以通过指定返回的 OAuth 代码来调用 Red Hat Quay API 的剩余部分。
先决条件
-
您已调用
/api/v1/user/initialize
API,并通过用户名、密码和电子邮件地址传递。
流程
输入以下命令来获取当前用户列表:
$ curl -X GET -k -H "Authorization: Bearer 6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED" https://example-registry-quay-quay-enterprise.apps.docs.quayteam.org/api/v1/superuser/users/
输出示例:
{ "users": [ { "kind": "user", "name": "quayadmin", "username": "quayadmin", "email": "quayadmin@example.com", "verified": true, "avatar": { "name": "quayadmin", "hash": "3e82e9cbf62d25dec0ed1b4c66ca7c5d47ab9f1f271958298dea856fb26adc4c", "color": "#e7ba52", "kind": "user" }, "super_user": true, "enabled": true } ] }
在本例中,
quayadmin
用户的详细信息返回,因为它是目前创建的唯一用户。
2.10.8.3. 使用 API 创建机构
以下过程详细介绍了如何使用 API 创建 Red Hat Quay 组织。
先决条件
-
您已调用
/api/v1/user/initialize
API,并通过用户名、密码和电子邮件地址传递。 - 您可以通过指定返回的 OAuth 代码来调出 Red Hat Quay API 的其他部分。
流程
要创建机构,使用 POST 调用
api/v1/organization/
端点:$ curl -X POST -k --header 'Content-Type: application/json' -H "Authorization: Bearer 6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED" https://example-registry-quay-quay-enterprise.apps.docs.quayteam.org/api/v1/organization/ --data '{"name": "testorg", "email": "testorg@example.com"}'
输出示例:
"Created"
您可以输入以下命令来检索您创建的机构详情:
$ curl -X GET -k --header 'Content-Type: application/json' -H "Authorization: Bearer 6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED" https://min-registry-quay-quay-enterprise.apps.docs.quayteam.org/api/v1/organization/testorg
输出示例:
{ "name": "testorg", "email": "testorg@example.com", "avatar": { "name": "testorg", "hash": "5f113632ad532fc78215c9258a4fb60606d1fa386c91b141116a1317bf9c53c8", "color": "#a55194", "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": false, "invoice_email_address": null, "tag_expiration_s": 1209600, "is_free_account": true }