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
配置对象提前配置完整权限。例如:
2.10.4. 限制用户创建 复制链接链接已复制到粘贴板!
配置了超级用户后,您可以限制创建新用户到超级用户组的能力。将 FEATURE_USER_CREATION
设置为 false
以限制用户创建。例如:
2.10.5. 启用新功能 复制链接链接已复制到粘贴板!
要使用新的 Red Hat Quay 3.8 功能,请启用部分或所有以下功能:
2.10.6. 启用新功能 复制链接链接已复制到粘贴板!
要使用新的 Red Hat Quay 3.7 功能,请启用一些或全部以下功能:
2.10.7. 推荐的自动化配置 复制链接链接已复制到粘贴板!
建议对自动化使用以下 config.yaml
参数:
2.10.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
后续步骤
- 使用 API 创建第一个用户
2.10.9. 使用 API 部署 Red Hat Quay 复制链接链接已复制到粘贴板!
本节介绍了使用 API 部署 Red Hat Quay。
前提条件
-
配置选项
FEATURE_USER_INITIALIZE
必须设为true
。 - 数据库中尚不存在任何用户。
有关预配置 Red Hat Quay 部署的更多信息,请参阅 Pre-configuring Red Hat Quay for automation部分
2.10.9.1. 使用 API 创建第一个用户 复制链接链接已复制到粘贴板!
使用以下步骤在 Red Hat Quay 组织中创建第一个用户。
此流程通过指定 "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 如果您的密码至少为八个字符或包含空格,则会返回一个错误:
{"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
2.10.9.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
用户的详细信息通过返回,因为它是目前创建的唯一用户。
2.10.9.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"}'
$ 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