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
...

2.10.4. 限制用户创建

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

...
FEATURE_USER_INITIALIZE: true
BROWSER_API_CALLS_XHR_ONLY: false
SUPER_USERS:
- quayadmin
FEATURE_USER_CREATION: false
...

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:
      -
...

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
...

2.10.7. 推荐的自动化配置

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

...
FEATURE_USER_INITIALIZE: true
BROWSER_API_CALLS_XHR_ONLY: false
SUPER_USERS:
- quayadmin
FEATURE_USER_CREATION: false
...

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
  2. 创建 quayregistry.yaml 文件。确定非受管组件并引用所创建的 secret,例如:

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

    $ oc create -n quay-enterprise -f quayregistry.yaml

后续步骤

  • 使用 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
  2. 升级 Python 3.9 的 pip 软件包管理器:

    $ python3.9 -m pip install --upgrade pip
  3. 使用 pip 软件包管理器安装 bcrypt 软件包:

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

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

    FEATURE_USER_INITIALIZE: true
    SUPER_USERS:
         -  quayadmin
  6. 输入以下命令停止 Red Hat Quay 服务:

    $ sudo podman stop quay
  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}
  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}'

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

    {"access_token":"6B4QTRSTSD1HMIG915VPX7BMEZBVB9GPNY2FC2ED", "email":"quayadmin@example.com","encrypted_password":"1nZMLH57RIE5UGdL/yYpDOHLqiNCgimb6W9kfF8MjZ1xrfDpRyRs9NUnUuNuAitW","username":"quayadmin"} # gitleaks:allow

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

    {"message":"Cannot initialize user in a non-empty database"}

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

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

    $ sudo podman login -u quayadmin -p quaypass12345 http://quay-server.example.com --tls-verify=false

    输出示例

    Login Succeeded!

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/

    输出示例:

    {
        "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 用户的详细信息通过返回,因为它是目前创建的唯一用户。

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"}'

    输出示例:

    "Created"
  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

    输出示例:

    {
        "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
    }
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部