第 6 章 配置数据库
6.1. 使用现有的 PostgreSQL 数据库 复制链接链接已复制到粘贴板!
如果使用外部管理的 PostgreSQL 数据库,则必须手动启用 pg_trgm 扩展才能成功部署。
您不能为 Red Hat Quay 和 Clair 部署使用相同的外部管理的 PostgreSQL 数据库。您的 PostgreSQL 数据库还必须与其他工作负载共享,因为在连接密集型工作负载(如 Red Hat Quay 或 Clair)时,它可能会耗尽 PostgreSQL 端的自然连接限制。另外,Red Hat Quay 或 Clair 不支持 pgBouncer,因此这不是解决这个问题的选项。
使用以下步骤部署现有的 PostgreSQL 数据库。
流程
使用所需的数据库字段创建
config.yaml文件。例如:config.yaml文件示例:DB_URI: postgresql://test-quay-database:postgres@test-quay-database:5432/test-quay-database
DB_URI: postgresql://test-quay-database:postgres@test-quay-database:5432/test-quay-databaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用配置文件创建
Secret:kubectl create secret generic --from-file config.yaml=./config.yaml config-bundle-secret
$ kubectl create secret generic --from-file config.yaml=./config.yaml config-bundle-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
QuayRegistry.yaml文件,将postgres组件标记为非受管,并引用所创建的Secret。例如:quayregistry.yaml文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
- 继续以下部分来部署 registry。
6.1.1. 数据库配置字段 复制链接链接已复制到粘贴板!
本节论述了 Red Hat Quay 部署可用的数据库配置字段。
6.1.1.1. 数据库 URI 复制链接链接已复制到粘贴板!
使用 Red Hat Quay 时,使用所需的 DB_URI 字段配置与数据库的连接。
下表描述了 DB_URI 配置字段:
| 字段 | 类型 | 描述 |
|---|---|---|
|
DB_URI | 字符串 | 用于访问数据库的 URI,包括任何凭据。
postgresql://quayuser:quaypass@quay-server.example.com:5432/quay |
数据库 URI 示例
# ... DB_URI: postgresql://quayuser:quaypass@quay-server.example.com:5432/quay # ...
# ...
DB_URI: postgresql://quayuser:quaypass@quay-server.example.com:5432/quay
# ...
6.1.1.2. 数据库连接参数 复制链接链接已复制到粘贴板!
可选的连接参数由 DB_CONNECTION_ARGS 参数配置。DB_CONNECTION_ARGS 中定义的一些键值对是通用的,另一些则特定于数据库。
| 字段 | 类型 | 描述 |
|---|---|---|
| DB_CONNECTION_ARGS | 对象 | 数据库的可选连接参数,如超时和 SSL/TLS。 |
| .autorollback | 布尔值 |
是否使用 thread-local 连接。 |
| .threadlocals | 布尔值 |
是否使用自动滚动连接。 |
数据库连接参数示例
6.1.1.2.1. SSL/TLS 连接参数 复制链接链接已复制到粘贴板!
使用 SSL/TLS 时,配置取决于您部署的数据库。
sslmode 选项决定是否使用,安全 SSL/TLS TCP/IP 连接的优先级将与服务器协商。有六个模式:
| 模式 | 描述 |
|---|---|
| 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 # ...
# ...
DB_CONNECTION_ARGS:
sslmode: <value>
sslrootcert: path/to/.postgresql/root.crt
# ...
6.1.2. 使用受管 PostgreSQL 数据库 复制链接链接已复制到粘贴板!
使用 Red Hat Quay 3.9 时,如果您的数据库由 Red Hat Quay Operator 管理,从 Red Hat Quay 3.8
- 需要具有受管数据库的用户才能将其 PostgreSQL 数据库从 10 到 13 升级。
- 如果您的 Red Hat Quay 和 Clair 数据库由 Operator 管理,则每个组件的数据库升级必须成功进行 3.9.0 升级。如果任何一个数据库升级失败,则整个 Red Hat Quay 版本升级会失败。这是预期的行为。
如果您不希望 Red Hat Quay Operator 从 PostgreSQL 10 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
6.1.2.1. PostgreSQL 数据库建议 复制链接链接已复制到粘贴板!
Red Hat Quay 团队推荐以下用于管理 PostgreSQL 数据库。
- 数据库备份应该定期使用 PostgreSQL 镜像中提供的工具或您自己的备份基础架构来执行。Red Hat Quay Operator 目前没有确保备份 PostgreSQL 数据库。
-
必须使用 PostgreSQL 工具和程序从备份中恢复 PostgreSQL 数据库。请注意,您的
Quaypod 在数据库恢复过程中不应运行。 - 数据库磁盘空间由 Red Hat Quay Operator 自动分配 50 GiB。这个数字代表了大多数中小型 Red Hat Quay 安装的可用存储,但可能不足以满足您的用例。Red Hat Quay Operator 当前不会处理数据库卷的大小。