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 配置对象提前配置完整的权限。例如:
3.12.4. 限制用户创建 复制链接链接已复制到粘贴板!
配置超级用户后,您可以通过将 FEATURE_USER_CREATION
设置为 false
来限制创建新用户到超级用户组的能力。例如:
3.12.5. 在 Red Hat Quay 3.8 中启用新功能 复制链接链接已复制到粘贴板!
要使用新的 Red Hat Quay 3.8 功能,请启用一些或全部的功能:
3.12.6. 在 Red Hat Quay 3.7 中启用新功能 复制链接链接已复制到粘贴板!
要使用新的 Red Hat Quay 3.7 功能,请启用一些或全部的功能:
3.12.7. 推荐的自动化配置 复制链接链接已复制到粘贴板!
建议对自动化使用以下 config.yaml
参数:
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
$ 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.12.8.1. 使用 API 创建第一个用户 复制链接链接已复制到粘贴板!
使用以下步骤在 Red Hat Quay 组织中创建第一个用户。
先决条件
-
配置选项
FEATURE_USER_INITIALIZE
必须设为true
。 - 数据库中还没有存在用户。
此流程通过指定 "access_token": true
来请求 OAuth 令牌。
以 root 用户身份,输入以下命令安装
python39
:sudo yum install python39
$ sudo yum install python39
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 升级 Python 3.9 的
pip
软件包管理器:python3.9 -m pip install --upgrade pip
$ python3.9 -m pip install --upgrade pip
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
pip
软件包管理器安装bcrypt
软件包:pip install bcrypt
$ pip install bcrypt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令,使用 Python 3.9 中的
bcrypt
软件包生成安全散列密码:python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"subquay12345", bcrypt.gensalt(12)).decode("utf-8"))'
$ python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"subquay12345", bcrypt.gensalt(12)).decode("utf-8"))'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 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.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/
$ 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.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"}'
$ 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