5.3. 部署后修改 QuayRegistry CR


安装 Red Hat Quay Operator 并创建了初始部署后,您可以修改 QuayRegistry 自定义资源(CR)以自定义或重新配置 Red Hat Quay 环境的各个方面。

Red Hat Quay 管理员可能会因为以下原因修改 QuayRegistry CR:

  • 要更改组件管理 :将组件从 managed: true 切换到 managed: false,以便提供自己的基础架构。例如,您可以将 kind: objectstorage 设置为 unmanaged 以集成外部对象存储平台,如 Google Cloud Storage 或 Nutanix。
  • 要应用自定义配置 :更新或替换 configBundleSecret 以应用新的配置设置,如身份验证供应商、外部 SSL/TLS 设置、功能标记。
  • 要启用或禁用功能 :通过修改 spec.components 列表来切换存储库镜像、Clair 扫描或 Pod 横向自动扩展等功能。
  • 要扩展部署 :为 Quay 应用程序调整环境变量或副本计数。
  • 要与外部服务集成:为外部 PostgreSQL、Redis 或 Clair 数据库提供配置,并更新端点或凭证。

QuayRegistry 可使用 OpenShift Container Platform Web 控制台进行修改。这样,您可以将受管组件设置为 unamanged (managed: false),并使用您自己的基础架构。

先决条件

  • 以具有 admin 权限的用户身份登录 OpenShift Container Platform。
  • 已安装 Red Hat Quay Operator。

流程

  1. 在 OpenShift Container Platform web 控制台中,点 Operators Installed Operators
  2. Red Hat Quay
  3. 单击 Quay Registry
  4. 点 Red Hat Quay registry 的名称,如 example-registry
  5. YAML
  6. 将所需组件的 managed 字段调整为 TrueFalse
  7. 点击 Save

    注意

    将组件设置为非受管(managed: false)可能需要进行额外的配置。有关在 QuayRegistry CR 中设置非受管组件的更多信息,请参阅 使用非受管组件进行依赖项

5.3.2. 使用 CLI 修改 QuayRegistry CR

QuayRegistry CR 可以使用 CLI 修改。这样,您可以将受管组件设置为 unamanged (managed: false),并使用您自己的基础架构。

先决条件

  • 以具有 admin 权限的用户身份登录 OpenShift Container Platform 集群。

流程

  1. 输入以下命令编辑 QuayRegistry CR:

    $ oc edit quayregistry <registry_name> -n <namespace>
    Copy to Clipboard Toggle word wrap
  2. QuayRegistry CR 进行所需的更改。

    注意

    将组件设置为非受管(managed: false)可能需要进行额外的配置。有关在 QuayRegistry CR 中设置非受管组件的更多信息,请参阅 使用非受管组件进行依赖项

  3. 保存更改。

5.3.3. 了解 configBundleSecret

spec.configBundleSecret 字段是对与 QuayRegistry 资源相同的命名空间中的 Secret 名称的可选引用。此 Secret 必须包含 config.yaml 键/值对,其中值为 Red Hat Quay 配置文件。

configBundleSecret 存储 config.yaml 文件。Red Hat Quay 管理员可以通过 config.yaml 文件定义以下设置:

  • 身份验证后端(如 OIDC、LDAP)
  • 外部 TLS 终止设置
  • 仓库创建策略
  • 功能标记
  • 通知设置

Red Hat Quay 可能会因为以下原因更新此 secret:

  • 启用一个新的验证方法
  • 添加自定义 SSL/TLS 证书
  • 启用功能
  • 修改安全扫描设置

如果省略此字段,Red Hat Quay Operator 会自动根据默认值和受管组件设置生成配置 secret。如果提供了字段,则 config.yaml 的内容将用作基础配置,并且与来自受管组件的值合并,以组成最终配置,该配置被挂载到 quay 应用程序 Pod 中。

如何配置 QuayRegistry CR,决定哪些字段必须包含在 OpenShift Container Platform 上的 Red Hat Quay 的 configBundleSecret's 'config.yaml 文件中。以下示例显示,当所有组件都由 Operator 管理时,您是一个默认的 config.yaml 文件。请注意,此示例根据组件是管理的还是非受管(受管:false)而不同。

带有 Operator 管理的所有组件的 YAML 示例

ALLOW_PULLS_WITHOUT_STRICT_LOGGING: false
AUTHENTICATION_TYPE: Database
DEFAULT_TAG_EXPIRATION: 2w
ENTERPRISE_LOGO_URL: /static/img/RH_Logo_Quay_Black_UX-horizontal.svg
FEATURE_BUILD_SUPPORT: false
FEATURE_DIRECT_LOGIN: true
FEATURE_MAILING: false
REGISTRY_TITLE: Red Hat Quay
REGISTRY_TITLE_SHORT: Red Hat Quay
SETUP_COMPLETE: true
TAG_EXPIRATION_OPTIONS:
- 2w
TEAM_RESYNC_STALE_TIME: 60m
TESTING: false
Copy to Clipboard Toggle word wrap

在某些情况下,您可以选择自己管理某些组件,如对象存储。在这种情况下,您将修改 QuayRegistry CR,如下所示:

Unmanaged objectstorage 组件

# ...
    - kind: objectstorage
      managed: false
# ...
Copy to Clipboard Toggle word wrap

如果您要管理自己的组件,则必须将部署配置为包含该组件的必要信息或资源。例如,如果 objectstorage 组件被设置为 managed: false,您可以根据 config.yaml 文件中的存储供应商包含相关信息。以下示例显示了使用 Google Cloud Storage 的分布式存储配置:

objectstorage 非受管时所需的信息

# ...
DISTRIBUTED_STORAGE_CONFIG:
    default:
        - GoogleCloudStorage
        - access_key: <access_key>
          bucket_name: <bucket_name>
          secret_key: <secret_key>
          storage_path: /datastorage/registry
# ...
Copy to Clipboard Toggle word wrap

同样,如果您要管理 horizontalpodautoscaler 组件,您必须创建一个附带的 HorizontalPodAutoscaler 自定义资源

使用 OpenShift Container Platform Web 控制台修改 configBundleSecret 存储的 config.yaml 文件。

先决条件

  • 以具有 admin 权限的用户身份登录 OpenShift Container Platform 集群。

流程

  1. 在 OpenShift Container Platform web 控制台中,点 Operators Installed Operators Red Hat Quay
  2. 单击 Quay Registry
  3. 点 Red Hat Quay registry 的名称,如 example-registry
  4. QuayRegistry 详情页中,单击 Config Bundle Secret 的名称,如 example-registry-config-bundle
  5. Actions Edit Secret
  6. Value 框中,添加所需的键/值对。例如,要将超级用户添加到 OpenShift Container Platform 部署的 Red Hat Quay 中,请添加以下引用:

    SUPER_USERS:
    - quayadmin
    Copy to Clipboard Toggle word wrap
  7. 点击 Save

验证

  1. 验证更改是否已接受:

    1. 在 OpenShift Container Platform web 控制台中,点 Operators Installed Operators Red Hat Quay
    2. 单击 Quay Registry
    3. 点 Red Hat Quay registry 的名称,如 example-registry
    4. 单击 Events。如果成功,则会显示以下信息:

      All objects created/updated successfully
      Copy to Clipboard Toggle word wrap
注意

在将其放在 Secret 之前,您必须对任何更新的 config.yaml 进行 base64 编码。确保 Secret 名称与 spec.configBundleSecret 指定的值匹配。更新 Secret 后,Operator 会检测到更改,并自动推出对 Red Hat Quay pod 的更新。

具体步骤请参阅"通过 Red Hat Quay UI 更新配置 secret"。

5.3.3.2. 使用 CLI 修改配置文件

您可以使用 CLI 下载现有配置来修改 configBundleSecret 存储的 config.yaml 文件。进行更改后,您可以重新上传 configBundleSecret 资源,以更改 Red Hat Quay registry。

注意

修改 configBundleSecret 资源存储的 config.yaml 文件是一个多步骤,需要 base64 解码现有配置文件,然后上传更改。在大多数情况下,使用 OpenShift Container Platform Web 控制台对 config.yaml 文件进行更改更为简单。

先决条件

  • 以具有 admin 权限的用户身份登录 OpenShift Container Platform 集群。

流程

  1. 输入以下命令描述 QuayRegistry 资源:

    $ oc describe quayregistry -n <quay_namespace>
    Copy to Clipboard Toggle word wrap
    # ...
      Config Bundle Secret:  example-registry-config-bundle-v123x
    # ...
    Copy to Clipboard Toggle word wrap
  2. 输入以下命令来获取 secret 数据:

    $ oc get secret -n <quay_namespace> <example-registry-config-bundle-v123x> -o jsonpath='{.data}'
    Copy to Clipboard Toggle word wrap

    输出示例

    {
        "config.yaml": "RkVBVFVSRV9VU0 ... MDAwMAo="
    }
    Copy to Clipboard Toggle word wrap

  3. 通过传递 >> config.yaml 标志,将数据 解码到当前目录中。例如:

    $ echo 'RkVBVFVSRV9VU0 ... MDAwMAo=' | base64 --decode >> config.yaml
    Copy to Clipboard Toggle word wrap
  4. config.yaml 文件进行所需的更改,然后将该文件保存为 config.yaml
  5. 输入以下命令创建新的 configBundleSecret YAML。

    $ touch <new_configBundleSecret_name>.yaml
    Copy to Clipboard Toggle word wrap
  6. 输入以下命令来创建新的 configBundleSecret 资源,传递 config.yaml 文件':

    $ oc -n <namespace> create secret generic <secret_name> \
      --from-file=config.yaml=</path/to/config.yaml> \ 
    1
    
      --dry-run=client -o yaml > <new_configBundleSecret_name>.yaml
    Copy to Clipboard Toggle word wrap
    1
    其中 <config.yaml& gt; 是您的 base64 解码config.yaml 文件。
  7. 输入以下命令来创建 configBundleSecret 资源:

    $ oc create -n <namespace> -f <new_configBundleSecret_name>.yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    secret/config-bundle created
    Copy to Clipboard Toggle word wrap

  8. 输入以下命令更新 QuayRegistry YAML 文件来引用新的 configBundleSecret 对象:

    $ oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"configBundleSecret":"<new_configBundleSecret_name>"}}'
    Copy to Clipboard Toggle word wrap

    输出示例

    quayregistry.quay.redhat.com/example-registry patched
    Copy to Clipboard Toggle word wrap

验证

  1. 验证 QuayRegistry CR 已使用新的 configBundleSecret 更新:

    $ oc describe quayregistry -n <quay_namespace>
    Copy to Clipboard Toggle word wrap

    输出示例

    # ...
      Config Bundle Secret: <new_configBundleSecret_name>
    # ...
    Copy to Clipboard Toggle word wrap

    修补 registry 后,Red Hat Quay Operator 会自动协调更改。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat