Skip to main content
可通过 ClickHouse Terraform 提供商 中的 clickhouse_postgres_service 资源创建和管理 ClickHouse Managed Postgres 服务。本文介绍该资源及其配套数据源的 提供商 设置与配置示例。
此资源目前处于 alpha 阶段,其行为可能会在未来的 提供商 版本中发生变化。它随常规 提供商 build 一同发布。本文档记录的是 提供商 版本 v3.21.0 及更高版本,这些版本更改了凭据的管理方式;更早版本的行为有所不同,并且截至 2026 年 7 月 31 日已无法再正常工作。详情请参阅 提供商 发行版
请在 2026 年 7 月 31 日之前升级到 提供商 v3.21.02026 年 7 月 31 日 起,Managed Postgres API 不再在响应中返回 超级用户 密码和 connection string;只有在创建 service 或重置其密码时才会返回凭据。提供商版本 v3.21.0 及更高版本 在此变更前后的行为完全一致。较旧的 提供商 版本依赖 API 回显凭据:截至 2026 年 7 月 31 日,这些版本将不再填充 connection_string,而且在未声明 password 的情况下创建的 service 虽然会成功,但系统生成的密码不会被记录到任何地方。请在 2026 年 7 月 31 日之前完成升级。使用 v3.21.0 首次执行 plan 或 apply 时,您的 Terraform 状态 会自动迁移。如果您的任何 services 依赖 server 生成的密码 (即配置中没有 password) ,请先使用 terraform state pull 将其取回并显式声明,因为 v3.21.0 要求标准 service 必须提供 passwordpassword_wo

提供商设置

将 ClickHouse 提供商添加到 Terraform 配置中:
有关如何创建供提供商使用的 API 密钥,请参阅管理 API 密钥

资源概览

clickhouse_postgres_service 资源具有以下参数: 以下属性为只读,并由 ClickHouse Cloud 在创建后填充:idstatecreated_atis_primaryhostnameportusername。不存在 connection_string 属性 (已在 v3.21.0 中移除) :请使用 hostnameportusername 以及你声明的密码来构建连接 URI,例如 postgres://${username}:${password}@${hostname}:${port}/postgres?sslmode=require
The password 会以明文形式存储在你的 Terraform 状态中。请相应保护好 状态 文件,例如使用启用静态加密的远程后端,或者使用 password_wo 以使密码完全不进入状态。

创建服务

标准 service 必须声明 passwordpassword_wo。其值必须至少为 12 个字符,且至少包含一个小写字母、一个大写字母和一个数字。password_wo (连同 password_wo_version) 同样适用这些密码规则,但绝不会存储在状态中;如需轮换,请更改 password_wo_version。由于 API 不会返回凭据,Terraform 必须始终是密码的唯一写入方:如果在 Terraform 之外 (控制台或 API) 轮换了密码,Terraform 不会检测到,而下一次由 Terraform 驱动的轮换会重新写回已声明的值。

高可用

ha_type 参数用于控制待机副本的数量: ha_type 在创建后仍可修改;更改该值会触发 HA 切换。详见 高可用

只读副本

要创建流式只读副本,请将 read_replica_of 设置为主服务的 id。副本会继承主服务的 cloud_providerregionpostgres_version 和超级用户——请省略这些字段 (以及 password) :
详情请参阅只读副本

时间点恢复

设置 restore_to_point_in_time,即可通过将另一项服务的备份恢复到某个时间点来创建服务。cloud_providerregionpostgres_version 继承自源服务 (请省略这些字段) ;sizeha_type 也必须省略:
整个配置块仅在创建时使用:更改 source_idrestore_target,或删除此配置块,都会销毁并重新创建该服务。详情请参阅备份与恢复

数据源

三个配套的数据源可帮助您查找现有服务:

导入现有服务

现有的 Managed Postgres 服务可以通过服务 ID 导入到 Terraform 状态中:
导入不会恢复密码 (API 不会返回该密码) 。导入后,首次执行 apply 时,服务会切换为你在配置中声明的 passwordpassword_wo

不支持的操作

以下内容刻意未纳入资源 schema:
  • 运维命令 (restart、promote、switchover) 。
  • IP 允许列表、专用终结点、备份配置、维护窗口、客户管理的加密密钥,以及 BYOC。
  • 不支持可配置的生命周期超时设置——不存在 timeouts {} 块。
最后修改于 2026年7月24日