第 6 章 配置数据库


6.1. 使用现有的 PostgreSQL 数据库

如果使用外部管理的 PostgreSQL 数据库,则必须手动启用 pg_trgm 扩展才能成功部署。

重要

您不能为 Red Hat Quay 和 Clair 部署使用相同的外部管理的 PostgreSQL 数据库。您的 PostgreSQL 数据库还必须与其他工作负载共享,因为在连接密集型工作负载(如 Red Hat Quay 或 Clair)时,它可能会耗尽 PostgreSQL 端的自然连接限制。另外,Red Hat Quay 或 Clair 不支持 pgBouncer,因此这不是解决这个问题的选项。

使用以下步骤部署现有的 PostgreSQL 数据库。

流程

  1. 使用所需的数据库字段创建 config.yaml 文件。例如:

    config.yaml 文件示例:

    DB_URI: postgresql://test-quay-database:postgres@test-quay-database:5432/test-quay-database
    Copy to Clipboard Toggle word wrap

  2. 使用配置文件创建 Secret

    $ kubectl create secret generic --from-file config.yaml=./config.yaml config-bundle-secret
    Copy to Clipboard Toggle word wrap
  3. 创建一个 QuayRegistry.yaml 文件,将 postgres 组件标记为 非受管,并引用所创建的 Secret。例如:

    quayregistry.yaml 文件示例

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

后续步骤

  • 继续以下部分来部署 registry。

6.1.1. 数据库配置字段

本节论述了 Red Hat Quay 部署可用的数据库配置字段。

6.1.1.1. 数据库 URI

使用 Red Hat Quay 时,使用所需的 DB_URI 字段配置与数据库的连接。

下表描述了 DB_URI 配置字段:

Expand
表 6.1. 数据库 URI
字段类型描述

DB_URI
(必需)

字符串

用于访问数据库的 URI,包括任何凭据。

DB_URI 字段示例:

postgresql://quayuser:quaypass@quay-server.example.com:5432/quay

数据库 URI 示例

# ...
DB_URI: postgresql://quayuser:quaypass@quay-server.example.com:5432/quay
# ...
Copy to Clipboard Toggle word wrap

6.1.1.2. 数据库连接参数

可选的连接参数由 DB_CONNECTION_ARGS 参数配置。DB_CONNECTION_ARGS 中定义的一些键值对是通用的,另一些则特定于数据库。

Expand
表 6.2. 数据库连接参数
字段类型描述

DB_CONNECTION_ARGS

对象

数据库的可选连接参数,如超时和 SSL/TLS。

.autorollback

布尔值

是否使用 thread-local 连接。
应该 始终为 True

.threadlocals

布尔值

是否使用自动滚动连接。
应该 始终为 True

数据库连接参数示例

# ...
DB_URI: postgresql://quayuser:quaypass@quay-server.example.com:5432/quay
DB_CONNECTION_ARGS:
  autorollback: true
  threadlocals: true
# ...
Copy to Clipboard Toggle word wrap

6.1.1.2.1. SSL/TLS 连接参数

使用 SSL/TLS 时,配置取决于您部署的数据库。

sslmode 选项决定是否使用,安全 SSL/TLS TCP/IP 连接的优先级将与服务器协商。有六个模式:

Expand
表 6.3. sslmode 选项
模式描述

sslmode

决定是否以及哪个优先级是安全的 SSL/TLS 或 TCP/IP 连接与服务器协商。

   *: disable

您的配置只尝试非 SSL/TLS 连接。

   *: allow

您的配置首先会尝试非 SSL/TLS 连接。失败时,尝试 SSL/TLS 连接。

*: 首选
(默认)

您的配置首先会尝试 SSL/TLS 连接。失败时,尝试非 SSL/TLS 连接。

   *: require

您的配置只尝试 SSL/TLS 连接。如果存在 root CA 文件,它将像指定了 verify-ca 一样验证证书。

   *: verify-ca

您的配置只尝试 SSL/TLS 连接,并验证服务器证书是否由可信证书颁发机构(CA)发布。

   *: verify-full

仅尝试 SSL/TLS 连接,并验证服务器证书是否由可信 CA 发布,并且请求的服务器主机名与证书中的主机名匹配。

有关 PostgreSQL 有效参数的更多信息,请参阅 数据库连接控制功能

PostgreSQL SSL/TLS 配置

# ...
DB_CONNECTION_ARGS:
  sslmode: <value>
  sslrootcert: path/to/.postgresql/root.crt
# ...
Copy to Clipboard Toggle word wrap

6.1.2. 使用受管 PostgreSQL 数据库

使用 Red Hat Quay 3.9 时,如果您的数据库由 Red Hat Quay Operator 管理,从 Red Hat Quay 3.8 3.9 更新会自动处理将 PostgreSQL 10 升级到 PostgreSQL 13。

重要
  • 需要具有受管数据库的用户才能将其 PostgreSQL 数据库从 10 到 13 升级。
  • 如果您的 Red Hat Quay 和 Clair 数据库由 Operator 管理,则每个组件的数据库升级必须成功进行 3.9.0 升级。如果任何一个数据库升级失败,则整个 Red Hat Quay 版本升级会失败。这是预期的行为。

如果您不希望 Red Hat Quay Operator 从 PostgreSQL 10 13 升级 PostgreSQL 部署,您必须在 quayregistry.yaml 文件中将 PostgreSQL 参数设置为 managed: false。有关将数据库设置为非受管的更多信息,请参阅使用现有的 Postgres 数据库

重要
  • 强烈建议您升级到 PostgreSQL 13。PostgreSQL 10 在 2022 年 11 月 10 日已发布,并不再被支持。如需更多信息,请参阅 PostgreSQL 版本策略

如果您希望 PostgreSQL 数据库与 Red Hat Enterprise Linux (RHEL)系统相同的版本,请参阅 迁移到 RHEL 8 的 RHEL 8 版本 ,或迁移到 RHEL 9 的 PostgreSQL 版本

有关 Red Hat Quay 3.8 3.9 流程的更多信息,请参阅升级 Red Hat Quay Operator 概述

6.1.2.1. PostgreSQL 数据库建议

Red Hat Quay 团队推荐以下用于管理 PostgreSQL 数据库。

  • 数据库备份应该定期使用 PostgreSQL 镜像中提供的工具或您自己的备份基础架构来执行。Red Hat Quay Operator 目前没有确保备份 PostgreSQL 数据库。
  • 必须使用 PostgreSQL 工具和程序从备份中恢复 PostgreSQL 数据库。请注意,您的 Quay pod 在数据库恢复过程中不应运行。
  • 数据库磁盘空间由 Red Hat Quay Operator 自动分配 50 GiB。这个数字代表了大多数中小型 Red Hat Quay 安装的可用存储,但可能不足以满足您的用例。Red Hat Quay Operator 当前不会处理数据库卷的大小。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat