3.13. 预配置 Red Hat Quay 以进行自动化
Red Hat Quay 支持几个启用自动化的配置选项。用户可以在部署前配置这些选项,以减少与用户界面交互的需求。
3.13.1. 允许 API 创建第一个用户
要创建第一个用户,用户需要将 FEATURE_USER_INITIALIZE
参数设置为 true
,并调用 /api/v1/user/initialize
API。与需要现有机构中 OAuth 应用生成的 OAuth 令牌的其他 registry API 调用不同,API 端点不需要身份验证。
在部署 Red Hat Quay 后,用户可以使用 API 创建用户,如 quayadmin
,只要没有创建其他用户。如需更多信息,请参阅使用 API 创建第一个用户。
3.13.2. 启用常规 API 访问
用户应将 BROWSER_API_CALLS_XHR_ONLY
配置选项设置为 false
,以允许常规访问 Red Hat Quay registry API。
3.13.3. 添加超级用户
部署 Red Hat Quay 后,用户可以创建用户,并授予第一个具有完整权限的管理员特权。用户可以使用 SUPER_USER
配置对象提前配置完全权限。例如:
# ... SERVER_HOSTNAME: quay-server.example.com SETUP_COMPLETE: true SUPER_USERS: - quayadmin # ...
3.13.4. 限制用户创建
配置超级用户后,您可以通过将 FEATURE_USER_CREATION
设置为 false
来限制新用户到超级用户组。例如:
# ... FEATURE_USER_INITIALIZE: true BROWSER_API_CALLS_XHR_ONLY: false SUPER_USERS: - quayadmin FEATURE_USER_CREATION: false # ...
3.13.5. 在 Red Hat Quay 3.12 中启用新功能
要使用新的 Red Hat Quay 3.12 功能,请启用一些或全部功能:
# ... FEATURE_UI_V2: true FEATURE_UI_V2_REPO_SETTINGS: true FEATURE_AUTO_PRUNE: true ROBOTS_DISALLOW: false # ...
3.13.6. 推荐的自动化配置
建议对自动化使用以下 config.yaml
参数:
# ... FEATURE_USER_INITIALIZE: true BROWSER_API_CALLS_XHR_ONLY: false SUPER_USERS: - quayadmin FEATURE_USER_CREATION: false # ...
3.13.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
后续步骤
3.13.8. 使用 API 创建第一个用户
使用以下步骤在 Red Hat Quay 组织中创建第一个用户。
先决条件
-
配置选项
FEATURE_USER_INITIALIZE
必须设为true
。 - 数据库中不存在任何用户。
此流程通过指定 "access_token": true
来请求 OAuth 令牌。
打开 Red Hat Quay 配置文件并更新以下配置字段:
FEATURE_USER_INITIALIZE: true SUPER_USERS: - quayadmin
输入以下命令停止 Red Hat Quay 服务:
$ sudo podman stop quay
输入以下命令启动 Red Hat Quay 服务:
$ sudo podman run -d -p 80:8080 -p 443:8443 --name=quay -v $QUAY/config:/conf/stack:Z -v $QUAY/storage:/datastorage:Z {productrepo}/{quayimage}:{productminv}
运行以下
CURL
命令,以使用用户名、密码、电子邮件和访问令牌生成新用户:$ curl -X POST -k http://quay-server.example.com/api/v1/user/initialize --header 'Content-Type: application/json' --data '{ "username": "quayadmin", "password":"quaypass12345", "email": "quayadmin@example.com", "access_token": true}'
如果成功,命令会返回带有用户名、电子邮件和加密密码的对象。例如:
{"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allow
如果用户存在于数据库中,则返回错误:
{"message":"Cannot initialize user in a non-empty database"}
如果您的密码至少没有 8 个字符或包含空格,则返回错误:
{"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}
输入以下命令登录到 Red Hat Quay 部署:
$ sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=false
输出示例
Login Succeeded!
3.13.8.1. 使用 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
用户的详细信息将返回,因为它是到目前为止创建的唯一用户。
3.13.8.2. 使用 API 创建机构
以下过程详细介绍了如何使用 API 创建 Red Hat Quay 组织。
先决条件
-
您已调用
/api/v1/user/initialize
API,并传递用户名、密码和电子邮件地址。 - 您已通过指定返回的 OAuth 代码来调用 Red Hat Quay API 的其余部分。
流程
要创建机构,请使用对
api/v1/organization/
端点的 POST 调用:$ 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 }