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 配置对象提前配置完整权限。例如:

...
SERVER_HOSTNAME: quay-server.example.com
SETUP_COMPLETE: true
SUPER_USERS:
  - quayadmin
...
Copy to Clipboard Toggle word wrap

2.10.4. 限制用户创建

配置了超级用户后,您可以限制创建新用户到超级用户组的能力。将 FEATURE_USER_CREATION 设置为 false 以限制用户创建。例如:

...
FEATURE_USER_INITIALIZE: true
BROWSER_API_CALLS_XHR_ONLY: false
SUPER_USERS:
- quayadmin
FEATURE_USER_CREATION: false
...
Copy to Clipboard Toggle word wrap

2.10.5. 启用新功能

要使用新的 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:
      -
...
Copy to Clipboard Toggle word wrap

2.10.6. 启用新功能

要使用新的 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
...
Copy to Clipboard Toggle word wrap

2.10.7. 推荐的自动化配置

建议对自动化使用以下 config.yaml 参数:

...
FEATURE_USER_INITIALIZE: true
BROWSER_API_CALLS_XHR_ONLY: false
SUPER_USERS:
- quayadmin
FEATURE_USER_CREATION: false
...
Copy to Clipboard Toggle word wrap

2.10.8. 使用初始配置部署 Red Hat Quay Operator

使用以下步骤,使用初始配置在 OpenShift Container Platform 上部署 Red Hat Quay。

前提条件

  • 已安装 oc CLI。

流程

  1. 使用配置文件创建 secret:

    $ oc create secret generic -n quay-enterprise --from-file config.yaml=./config.yaml init-config-bundle-secret
    Copy to Clipboard Toggle word wrap
  2. 创建 quayregistry.yaml 文件。确定非受管组件并引用所创建的 secret,例如:

    apiVersion: quay.redhat.com/v1
    kind: QuayRegistry
    metadata:
      name: example-registry
      namespace: quay-enterprise
    spec:
      configBundleSecret: init-config-bundle-secret
    Copy to Clipboard Toggle word wrap
  3. 部署 Red Hat Quay registry:

    $ oc create -n quay-enterprise -f quayregistry.yaml
    Copy to Clipboard Toggle word wrap

后续步骤

  • 使用 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 令牌。

  1. 以 root 用户身份,输入以下命令安装 python39

    $ sudo yum install python39
    Copy to Clipboard Toggle word wrap
  2. 升级 Python 3.9 的 pip 软件包管理器:

    $ python3.9 -m pip install --upgrade pip
    Copy to Clipboard Toggle word wrap
  3. 使用 pip 软件包管理器安装 bcrypt 软件包:

    $ pip install bcrypt
    Copy to Clipboard Toggle word wrap
  4. 输入以下命令,使用 Python 3.9 中的 bcrypt 软件包生成安全散列密码:

    $ python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"subquay12345", bcrypt.gensalt(12)).decode("utf-8"))'
    Copy to Clipboard Toggle word wrap
  5. 打开 Red Hat Quay 配置文件并更新以下配置字段:

    FEATURE_USER_INITIALIZE: true
    SUPER_USERS:
         -  quayadmin
    Copy to Clipboard Toggle word wrap
  6. 输入以下命令停止 Red Hat Quay 服务:

    $ sudo podman stop quay
    Copy to Clipboard Toggle word wrap
  7. 输入以下命令启动 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}
    Copy to Clipboard Toggle word wrap
  8. 运行以下 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}'
    Copy to Clipboard Toggle word wrap

    如果成功,该命令会返回带有用户名、电子邮件和加密密码的对象。例如:

    {"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allow
    Copy to Clipboard Toggle word wrap

    如果用户已在数据库中已存在,则会返回一个错误:

    {"message":"Cannot initialize user in a non-empty database"}
    Copy to Clipboard Toggle word wrap

    如果您的密码至少为八个字符或包含空格,则会返回一个错误:

    {"message":"Failed to initialize user: Invalid password, password must be at least 8 characters and contain no whitespace."}
    Copy to Clipboard Toggle word wrap
  9. 输入以下命令登录到您的 Red Hat Quay 部署:

    $ sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=false
    Copy to Clipboard Toggle word wrap

    输出示例

    Login Succeeded!
    Copy to Clipboard Toggle word wrap

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/
    Copy to Clipboard Toggle word wrap

    输出示例:

    {
        "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
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

    在本实例中,quayadmin 用户的详细信息通过返回,因为它是目前创建的唯一用户。

2.10.9.3. 使用 API 创建机构

以下过程详细介绍了如何使用 API 创建 Red Hat Quay 组织。

前提条件

  • 您已调用 /api/v1/user/initialize API,并传递在用户名、密码和电子邮件地址。
  • 您已通过指定返回的 OAuth 代码,称为 Red Hat Quay API 的其余部分。

流程

  1. 要创建机构,使用 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"}'
    Copy to Clipboard Toggle word wrap

    输出示例:

    "Created"
    Copy to Clipboard Toggle word wrap
  2. 您可以输入以下命令来检索您创建的机构详情:

    $ 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 Toggle word wrap

    输出示例:

    {
        "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
    }
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat