数据库配置
本文档描述了如何配置 Tekton Results 所需的数据库。
当前,我们仅支持连接外部数据库。原因如下:
- 内置数据库缺少生产环境所需的关键功能,例如备份、监控、高可用和高级管理能力。它仅提供基本的存储和查询功能,不适合生产环境。
- 外部数据库提供全面的企业级功能,包括自动备份、性能监控、扩展能力以及专业支持,这些对于生产部署至关重要。
- 我们的 Data Services 产品已经提供了全面的 PostgreSQL 管理能力。
目录
前提条件集群要求数据库要求配置概览配置参数参考基础配置1. 创建数据库凭据2. 配置 TektonConfig 资源3. 验证配置高级配置SSL 配置配置自定义 CA 证书步骤 1:创建包含 CA 证书的 ConfigMap步骤 2:使用 Volume Mount 配置 TektonConfig操作更新数据库配置故障排查常见问题验证命令使用 Data Services 中的 PostgreSQL前提条件
集群要求
- 集群中必须已安装 Tekton Operator。
数据库要求
版本:
- PostgreSQL 12 或更高版本
- 建议使用较新的版本,以获得更长的维护支持
数据库设置:
- 数据库必须已存在
- 数据库应为空(Tekton Results 将自动创建所需的表结构)
- 确保数据库用户具有创建表的权限
创建数据库命令:
配置概览
Tekton Results 支持使用外部 PostgreSQL 数据库。配置分为两部分:
- 数据库凭据(用户名和密码)存储在 Kubernetes Secrets 中
- 数据库连接参数(主机、端口、数据库名、SSL 设置)在 TektonConfig 自定义资源的
spec.result下进行配置
配置参数参考
db_sslmode的有效选项说明见 https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-PROTECTION。
基础配置
对于不使用 SSL 的基础外部数据库配置,请按以下步骤操作:
1. 创建数据库凭据
Secret 中所需字段:
创建 Secret 命令:
Secret YAML 示例:
2. 配置 TektonConfig 资源
本文档仅列出与数据库相关的配置字段。完整字段列表请参阅 Quick Start。
3. 验证配置
此 Quick Start 仅涵盖基础配置。对于需要 SSL、高级安全性或自定义 CA 证书的生产环境,请参阅下面的 高级配置 部分。
高级配置
SSL 配置
当需要安全的数据库连接时,你可以配置与 SSL 相关的参数:
SSL 模式选择指南:
SSL 模式说明
verify-ca 与 verify-full 的区别取决于根 CA 的策略。如果使用公有 CA,verify-ca 允许连接到某个其他人可能已经在该 CA 上注册过的服务器。在这种情况下,应始终使用 verify-full。如果使用本地 CA,甚至是自签名证书,使用 verify-ca 通常就能提供足够的保护。
重要: 当使用 require、verify-ca 或 verify-full 这些 SSL 模式时,你必须提供为数据库服务器证书签名的 CA 证书。若未正确配置 CA 证书,Tekton Results 各组件将无法启动。有关详细配置步骤,请参阅下面的 配置自定义 CA 证书 部分。
配置自定义 CA 证书
当使用需要证书验证的 SSL 模式(require、verify-ca、verify-full)时,你需要提供为数据库服务器证书签名的 CA 证书。最常见的做法是将 CA 证书存储在 ConfigMap 中,并将其挂载到 Tekton Results pods。
步骤 1:创建包含 CA 证书的 ConfigMap
如果你有一个名为 root.crt 的 CA 证书文件,请创建一个 ConfigMap:
步骤 2:使用 Volume Mount 配置 TektonConfig
为了让容器能够访问 CA 证书,你需要在 TektonConfig 资源的 spec.result 下配置额外的 options,以挂载该 ConfigMap:
使用此配置后:
- CA 证书将以
/etc/tls/db/ca.crt的路径提供给容器 - 将
db_sslrootcert设置为/etc/tls/db/ca.crt,以匹配挂载路径 - API server 和 retention policy agent 都将能够访问该 CA 证书
操作
更新数据库配置
修改数据库配置后,你需要重启 Tekton Results 组件才能使更改生效。
选项 1:重启特定的 deployments
选项 2:重新创建 TektonConfig 资源
验证更改:
如果你更新了 db_sslmode 字段,可能需要重新创建 TektonConfig 资源才能使更改生效。
故障排查
常见问题
-
Connection refused:
- 验证数据库主机和端口
- 检查网络连通性
- 确保数据库正在运行
-
Authentication failed:
- 验证 Secret 中的用户名和密码
- 检查数据库用户权限
-
SSL certificate errors:
- 验证 CA 证书是否已正确挂载
- 检查 SSL 模式配置
- 确保证书路径与挂载路径一致
验证命令
使用 Data Services 中的 PostgreSQL
Data Services 支持部署可供 Tekton Results 使用的 PostgreSQL 实例。在创建 PostgreSQL 实例时,请注意以下重要要求:
- 选择与 Tekton Results 版本匹配的 PostgreSQL 版本,例如可以选择 PostgreSQL 12.x 或更高版本。
- 存储配额不得小于 5Gi
在创建 PostgreSQL 实例时,系统会自动生成一个包含连接信息的 Secret。可使用标签 middleware.instance/type: PostgreSQL 过滤该 Secret 资源。
此 Secret 包含 host、port、username、password 信息。你需要基于该 Secret 补充 database 信息,并在 Tekton Results 实例所在的 namespace 中创建一个新的 secret。
如果你需要设置 sslmode,请在 TektonConfig 的 spec.result 部分将 db_sslmode 设置为 allow、prefer 等。
有关更多 PostgreSQL 部署参数和要求,请参阅 PostgreSQL 部署文档。