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
配置对象提前配置完全权限。例如:
3.13.4. 限制用户创建 复制链接链接已复制到粘贴板!
配置超级用户后,您可以通过将 FEATURE_USER_CREATION
设置为 false
来限制新用户到超级用户组。例如:
3.13.5. 在 Red Hat Quay 3.13 中启用新功能 复制链接链接已复制到粘贴板!
要使用新的 Red Hat Quay 3.13 功能,请启用部分或全部功能:
3.13.6. 推荐的自动化配置 复制链接链接已复制到粘贴板!
建议对自动化使用以下 config.yaml
参数:
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
$ oc create secret generic -n quay-enterprise --from-file config.yaml=./config.yaml init-config-bundle-secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
quayregistry.yaml
文件。识别非受管组件并引用创建的 secret,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 Red Hat Quay registry:
oc create -n quay-enterprise -f quayregistry.yaml
$ oc create -n quay-enterprise -f quayregistry.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
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
FEATURE_USER_INITIALIZE: true SUPER_USERS: - quayadmin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令停止 Red Hat Quay 服务:
sudo podman stop quay
$ sudo podman stop quay
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令启动 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}
$ 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}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下
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}'
$ 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}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果成功,命令会返回带有用户名、电子邮件和加密密码的对象。例如:
{"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allow
{"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allow
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果用户存在于数据库中,则返回错误:
{"message":"Cannot initialize user in a non-empty database"}
{"message":"Cannot initialize user in a non-empty database"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的密码至少没有 8 个字符或包含空格,则返回错误:
{"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}
{"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令登录到 Red Hat Quay 部署:
sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=false
$ sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Login Succeeded!
Login Succeeded!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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/
$ curl -X GET -k -H "Authorization: Bearer 6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED" https://example-registry-quay-quay-enterprise.apps.docs.quayteam.org/api/v1/superuser/users/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
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"}'
$ 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"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
"Created"
"Created"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以输入以下命令来检索您创建的机构的详情:
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
$ 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow