3.12. 预配置 Red Hat Quay 以进行自动化
Red Hat Quay 支持几个启用自动化的配置选项。用户可以在部署前配置这些选项,以减少与用户界面交互的需求。
3.12.1. 允许 API 创建第一个用户
要创建第一个用户,用户需要将 FEATURE_USER_INITIALIZE 参数设置为 true,并调用 /api/v1/user/initialize API。与需要现有机构中 OAuth 应用的 OAuth 令牌生成的所有其他 registry API 调用不同,API 端点不需要身份验证。
部署 Red Hat Quay 后,用户可以使用 API 来创建用户,如 quayadmin
,但没有创建其他用户。如需更多信息 ,请参阅使用 API 创建第一个用户。
3.12.2. 启用常规 API 访问
用户应将 BROWSER_API_CALLS_XHR_ONLY 配置选项设置为 false,以允许常规访问 Red Hat Quay registry API。
3.12.3. 添加超级用户
部署 Red Hat Quay 后,用户可以创建用户,并授予第一个用户管理员特权具有完整权限。用户可以使用 SUPER_USER 配置对象提前配置完整的权限。例如:
... SERVER_HOSTNAME: quay-server.example.com SETUP_COMPLETE: true SUPER_USERS: - quayadmin ...
3.12.4. 限制用户创建
配置超级用户后,您可以通过将 FEATURE_USER_CREATION
设置为 false
来限制创建新用户到超级用户组的能力。例如:
... FEATURE_USER_INITIALIZE: true BROWSER_API_CALLS_XHR_ONLY: false SUPER_USERS: - quayadmin FEATURE_USER_CREATION: false ...
3.12.5. 在 Red Hat Quay 3.8 中启用新功能
要使用新的 Red Hat Quay 3.8 功能,请启用一些或全部的功能:
... FEATURE_UI_V2: true FEATURE_LISTEN_IP_VERSION: FEATURE_SUPERUSERS_FULL_ACCESS: true GLOBAL_READONLY_SUPER_USERS: - FEATURE_RESTRICTED_USERS: true RESTRICTED_USERS_WHITELIST: - ...
3.12.6. 在 Red Hat Quay 3.7 中启用新功能
要使用新的 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 ...
3.12.7. 推荐的自动化配置
建议对自动化使用以下 config.yaml
参数:
... FEATURE_USER_INITIALIZE: true BROWSER_API_CALLS_XHR_ONLY: false SUPER_USERS: - quayadmin FEATURE_USER_CREATION: false ...
3.12.8. 使用初始配置部署 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.12.8.1. 使用 API 创建第一个用户
使用以下步骤在 Red Hat Quay 组织中创建第一个用户。
先决条件
-
配置选项
FEATURE_USER_INITIALIZE
必须设为true
。 - 数据库中还没有存在用户。
此流程通过指定 "access_token": true
来请求 OAuth 令牌。
以 root 用户身份,输入以下命令安装
python39
:$ sudo yum install python39
升级 Python 3.9 的
pip
软件包管理器:$ python3.9 -m pip install --upgrade pip
使用
pip
软件包管理器安装bcrypt
软件包:$ pip install bcrypt
输入以下命令,使用 Python 3.9 中的
bcrypt
软件包生成安全散列密码:$ python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"subquay12345", bcrypt.gensalt(12)).decode("utf-8"))'
打开 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.12.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
用户的详细信息将返回,因为它是目前创建的唯一用户。
3.12.8.3. 使用 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 }