6.2. 配置外部 Redis


使用本节中的内容设置外部 Redis 部署。

6.2.1. 使用非受管 Redis 数据库

使用以下步骤设置外部 Redis 数据库。

流程

  1. 使用以下 Redis 字段创建 config.yaml 文件:

    # ...
    BUILDLOGS_REDIS:
        host: <quay-server.example.com>
        port: 6379
        ssl: false
    # ...
    USER_EVENTS_REDIS:
        host: <quay-server.example.com>
        port: 6379
        ssl: false
    # ...
    Copy to Clipboard Toggle word wrap
  2. 输入以下命令使用配置文件创建 secret:

    $ oc create secret generic --from-file config.yaml=./config.yaml config-bundle-secret
    Copy to Clipboard Toggle word wrap
  3. 创建一个 quayregistry.yaml 文件,将 Redis 组件设置为 非受管 组件并引用所创建的 secret:

    apiVersion: quay.redhat.com/v1
    kind: QuayRegistry
    metadata:
      name: example-registry
      namespace: quay-enterprise
    spec:
      configBundleSecret: config-bundle-secret
      components:
        - kind: redis
          managed: false
    # ...
    Copy to Clipboard Toggle word wrap
  4. 部署 Red Hat Quay registry。

6.2.2. 使用非受管 Horizontal Pod Autoscaler

Pod 横向自动扩展(HPA)现在包含在 ClairQuayMirror pod 中,以便它们现在会在负载激增过程中自动扩展。

由于 HPA 默认配置为 managed,因此 ClairQuayMirror pod 的数量被设置为 2。这有助于避免在通过 Operator 或重新调度事件更新或重新配置 Red Hat Quay 时造成停机。

注意

禁用 HorizontalPodAutoscaler 组件并尝试编辑 HPA 资源本身并增加 minReplicas 字段的值时,存在一个已知问题。当尝试此设置时,Quay 应用程序 pod 由非受管 HPA 扩展,并在 60 秒后扩展,副本数由 Red Hat Quay Operator 协调。因此,HPA pod 会持续创建,然后由 Operator 删除。

要解决这个问题,您应该将 Red Hat Quay 部署升级到至少版本 3.12.5 或 3.13.1,然后使用以下示例来避免问题。

此问题将在 Red Hat Quay 以后的版本中解决。如需更多信息,请参阅 PROJQUAY-6474

6.2.2.1. 禁用 Horizontal Pod Autoscaler

要禁用自动扩展或创建自己的 HorizontalPodAutoscaler 组件,请在 QuayRegistry 自定义资源定义中将组件指定为 unmanaged。要避免上面记录的已知问题,您必须修改 QuayRegistry CRD 对象,并将 quayclairmirror 组件的副本等于 null

流程

  • 编辑 QuayRegistry CRD,为 quay 组件包含以下 replicas: null

    $ oc edit quayregistry <quay_registry_name> -n <quay_namespace>
    Copy to Clipboard Toggle word wrap
    apiVersion: quay.redhat.com/v1
    kind: QuayRegistry
    metadata:
    name: quay-registry
    namespace: quay-enterprise
    spec:
    components:
      - kind: horizontalpodautoscaler
        managed: false
      - kind: quay
        managed: true
        overrides:
          replicas: null 
    1
    
      - kind: clair
        managed: true
        overrides:
          replicas: null
      - kind: mirror
        managed: true
        overrides:
          replicas: null
    # ...
    Copy to Clipboard Toggle word wrap
    1
    QuayRegistry CRD 中设置 replicas: null 后,可能会生成新的副本集,因为 Quay 应用程序的部署清单被 replicas: 1 更改。

验证

  1. 创建自定义 HorizontalPodAutoscalers CRD,并将 minReplicas 量增加到更高的值,用于考试pe,3

    kind: HorizontalPodAutoscaler
    apiVersion: autoscaling/v2
    metadata:
      name: quay-registry-quay-app
      namespace: quay-enterprise
    spec:
      scaleTargetRef:
        kind: Deployment
        name: quay-registry-quay-app
        apiVersion: apps/v1
      minReplicas: 3
      maxReplicas: 20
      metrics:
        - type: Resource
          resource:
            name: memory
            target:
              type: Utilization
              averageUtilization: 90
        - type: Resource
          resource:
            name: cpu
            target:
              type: Utilization
              averageUtilization: 90
    Copy to Clipboard Toggle word wrap
  2. 输入以下命令来确保 QuayRegistry 应用程序成功启动:

    $ oc get pod | grep quay-app
    Copy to Clipboard Toggle word wrap

    输出示例

    quay-registry-quay-app-5b8fd49d6b-7wvbk         1/1     Running     0          34m
    quay-registry-quay-app-5b8fd49d6b-jslq9         1/1     Running     0          3m42s
    quay-registry-quay-app-5b8fd49d6b-pskpz         1/1     Running     0          43m
    quay-registry-quay-app-upgrade-llctl            0/1     Completed   0          51m
    Copy to Clipboard Toggle word wrap

  3. 输入以下命令来确保 HorizontalPodAutoscalers 可以成功启动:

    $ oc get hpa
    Copy to Clipboard Toggle word wrap
    NAME                     REFERENCE                           TARGETS            MINPODS   MAXPODS   REPLICAS   AGE
    quay-registry-quay-app   Deployment/quay-registry-quay-app   67%/90%, 54%/90%   3         20        3          51m
    Copy to Clipboard Toggle word wrap

6.2.3. 禁用 Route 组件

使用以下步骤防止 Red Hat Quay Operator 创建路由。

步骤

  1. quayregistry.yaml 文件中将组件设置为 managed: false

    apiVersion: quay.redhat.com/v1
    kind: QuayRegistry
    metadata:
      name: example-registry
      namespace: quay-enterprise
    spec:
      components:
        - kind: route
          managed: false
    Copy to Clipboard Toggle word wrap
  2. 编辑 config.yaml 文件,以指定 Red Hat Quay 处理 SSL/TLS。例如:

    # ...
    EXTERNAL_TLS_TERMINATION: false
    # ...
    SERVER_HOSTNAME: example-registry-quay-quay-enterprise.apps.user1.example.com
    # ...
    PREFERRED_URL_SCHEME: https
    # ...
    Copy to Clipboard Toggle word wrap

    如果没有正确配置非受管路由,则会返回以下错误:

    {
      {
        "kind":"QuayRegistry",
        "namespace":"quay-enterprise",
        "name":"example-registry",
        "uid":"d5879ba5-cc92-406c-ba62-8b19cf56d4aa",
        "apiVersion":"quay.redhat.com/v1",
        "resourceVersion":"2418527"
      },
      "reason":"ConfigInvalid",
      "message":"required component `route` marked as unmanaged, but `configBundleSecret` is missing necessary fields"
    }
    Copy to Clipboard Toggle word wrap
注意

禁用默认路由意味着您现在负责 创建路由ServiceIngress,以访问 Red Hat Quay 实例。此外,您使用的任何 DNS 都必须与 Red Hat Quay 配置中的 SERVER_HOSTNAME 匹配。

6.2.4. 禁用监控组件

如果您在单一命名空间中安装 Red Hat Quay Operator,则监控组件会自动设置为 managed: false。使用以下参考来显式禁用监控。

Unmanaged 监控

apiVersion: quay.redhat.com/v1
kind: QuayRegistry
metadata:
  name: example-registry
  namespace: quay-enterprise
spec:
  components:
    - kind: monitoring
      managed: false
Copy to Clipboard Toggle word wrap

注意

当在单一命名空间中安装 Red Hat Quay Operator 时,无法启用监控。

6.2.5. 禁用镜像组件

要禁用镜像,请使用以下 YAML 配置:

非受管镜像示例 YAML 配置示例

apiVersion: quay.redhat.com/v1
kind: QuayRegistry
metadata:
  name: example-registry
  namespace: quay-enterprise
spec:
  components:
    - kind: mirroring
      managed: false
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat