跳到主要内容

配置文件在哪里

渲染器会覆盖它 — 需要修改的是模板

每次启动时都会渲染 config/templates/*.template 并覆盖每个组件的配置位置。 如果直接修改组件侧的文件,下一次启动时就会消失。 → 如何更改配置

数据湖的配置是按 “两个来源,一个方向” 构建的。操作员需要修改的文件是固定的,容器内的配置文件是根据这些文件生成的。

호스트 /etc/kopens/conf/*.template ← 설정의 «형태» (빈칸이 뚫린 원본)
× /etc/kopens/plantpulse-platform.env ← 시크릿 (비밀번호 · API 키)
× /etc/kopens/platform.node.env ← 이 노드의 값 (IP · 모드)
+ 이미지 안 config/defaults.env ← 비밀 아닌 기본값 (위에서 안 준 것만)
─────────────────────────────────────────
→ pd config render → /opt/kopens/plantpulse-platform/<module>/conf/… (생성물)

pd start 每次都会毫无例外地首先渲染。因此,即使手动修改了容器内的生成物,下一次启动时也会消失。2026-09-01 曾发生过实际修改容器内的 cassandra.yaml 以启用认证,但由于文件被重新生成而恢复原状,导致认证完全失效的事故。

四个正本文件​

#文件内容格式谁使用
1/etc/kopens/plantpulse-platform.env机密信息 — 服务账户密码 · API 密钥 · TLS 密码。非机密公共值也可以写在里面VAR=값 每行一个,不带 export。头两行(# generated: · # last rotation:)由工具管理由 install.sh 创建,passwd.sh 更新。非机密行由操作员直接填写
2/etc/kopens/platform.node.env此节点特有的值 — PP_MASTER_IP · PP_KAFKA_ADVERTISED_HOST · DOCKER_PP_EXTERNAL_IP · PP_NODE_ID相同格式安装工具从模板生成,操作员直接填写
3/etc/kopens/conf/*.template配置的形态 — 各引擎的配置文件原始 33 个各引擎的语法 + ${PP_변수} 占位符首次启动时从镜像中播种,之后由操作员直接填写
4(镜像内)plantpulse-datalake-cli/config/defaults.env非机密默认值 — 端口 · 账号名 · 目录 · TLS 设置KEY=value产品。操作员不修改,用 1 和 2 来覆盖
密码不能通过编辑文件来更改

仅修改 sidecar 中的密码行并不能完成生效。对于像 PostgreSQL · Aster TSDB 这样服务器账户才是正本的值,服务器端也需要一同修改。如果顺序弄错,平台将无法启动。bin/passwd.sh 会代为执行该顺序 → 更改密码 · API 密钥

值确定的顺序​

主机上的 bin/env.sh 从上到下读取的顺序就是优先级。后读取的生效。

优先级来源为什么生效
1(最高)/etc/kopens/platform.node.env在 sidecar 之后读取的无条件赋值
2/etc/kopens/plantpulse-platform.envVAR=값 无条件赋值 — 也会覆盖 shell 的 export
3调用 shell 的 export仅当 1 和 2 未写该名称时
4(最低)bin/env.sh 的 ${VAR:-기본값}仅当无人指定时

该值通过 compose 以环境变量方式进入容器,在容器内传入的值胜过 defaults.env。

在安装完成的节点上 export 会被静默忽略

像 PP_PG_PASSWORD=새값 bin/up.sh 那样在 shell 中提供值的方法仅适用于 sidecar 尚不存在的节点。如果 sidecar 已经持有该名称,则 sidecar 生效。实际曾发生过误以为已如此更改而继续前进的事故。

要查看当前节点的有效值和来源,不要靠头脑模拟,请执行此命令。机密信息会被 **** 隐藏。

cd /opt/kopens/plantpulse-platform-docker
bin/env.sh --print

容器内没有 sidecar​

容器中不挂载 /etc/kopens/plantpulse-platform.env 文件。值的传递路径是:主机上的 bin/env.sh 读取 sidecar,然后由 compose 将其作为环境变量传入容器。

因此,会出现以下两点:

  • 修改 sidecar 后需要重新创建容器新值才会生效。主机上的 bin/restart-datalake.sh 负责此操作。
  • 对于 compose 未写的名称,无论 sidecar 中写入多少,都不会到达容器。哪些名称能到达,由 compose/docker-compose.yml 的 x-pp-secrets 锚点和 plantpulse-datalake 服务的 environment: 块决定。变量参考中只汇总了“能到达的名称”。

在容器内执行 pd doctor,sidecar 行不是显示“文件不存在”,而是完全不显示,取而代之的是 all required secrets set 行,这才是实际测量值 — 这是正常的。

模板列表 — 哪些内容渲染到哪里​

主机 /etc/kopens/conf/ 中的模板 33 个(顶层 23 + cluster/ 10)将前往以下位置。对应表的正本在容器内 plantpulse-datalake-cli/config/render.map,pd config list 会输出与此节点模式对应的行。

模板渲染位置(PP_HOME 基准)MASTERWORKER
valkey.confplantpulse-storage/cache/valkey/conf/valkey.conf○○ (cluster/)
postgresql.conf · pg_hba.confplantpulse-storage/db/postgres/conf/○○ (cluster/)
cassandra.yaml · jvm-server.optionsplantpulse-storage/db/cassandra/conf/○○ (cluster/)
spark-env.sh · spark-defaults.conf · metrics.propertiesplantpulse-analytics/spark/conf/○○
hive-site.xml · hive-auth.propertiesplantpulse-analytics/spark/conf/○○ (cluster/)
hive-site.xmlplantpulse-analytics/hive/conf/hive-site.xml○—
kyuubi-defaults.confplantpulse-analytics/kyuubi/conf/○○
gravitino-iceberg-rest-server.confplantpulse-analytics/gravitino/conf/○—
kafka.properties · kafka-jaas.confplantpulse-messaging/kafka/config/kafka.properties · jaas.conf○—
hivemq.xml · plantpulse-mq-auth.propertiesplantpulse-messaging/mqtt/conf/config.xml · auth.properties○—
plantpulse-timeseries-engine.confplantpulse-timeseries/engine/conf/ (以两个名称)○—
plantpulse-datalake-admin-api.propertiesplantpulse-datalake-admin-api/config/○○ (cluster/)
workflow.yaml · application.yamlplantpulse-workflow/temporal/config/ · kestra/config/○—
plantpulse-cep.propertiesplantpulse-cep/config/○—
plantpulse-jdbc.properties · plantpulse-data-gateway.propertiesplantpulse-data-gateway/config/○—

cluster/ 标记表示 WORKER 节点使用 /etc/kopens/conf/cluster/ 下的不同模板。例如,MASTER 的 valkey.conf.template 中不包含 replicaof,而 cluster/valkey.conf.template 中包含 replicaof ${PP_MASTER_IP} ${PP_REDIS_PORT}。

模板语法​

仅三种。

语法含义
${PP_VAR}如果值缺失,渲染整体失败 (exit 4)。不会填充空值后继续
${PP_VAR:기본값} · ${PP_VAR:-기본값}如果值缺失,使用默认值

机密信息中不能放置内联默认值。旧渲染器会用空值填充并继续,导致出现过密码为空字符串的 Aster TSDB,所以现在会列出所有缺失名称并停止。

不渲染的配置 — 管理控制台账户​

管理控制台的登录账户不包含在任何模板中。admin-api 进程直接从环境变量读取。这是为了避免在磁盘上再创建一份密码副本。

变量来源默认值
PP_DATALAKE_ADMIN_USERdefaults.envadmin
PP_DATALAKE_ADMIN_PASSWORDsidecar2026-09-05 之后的安装版本使用与 Web 控制台管理员相同的开发默认值 → 更改初始密码。之前的安装版本为空,因此控制台处于关闭状态
PP_DATALAKE_ADMIN_API_KEYsidecar无 — 如果为空,仅禁用密钥认证,浏览器登录仍然有效

无法单独禁用某个组件​

虽然存在变量 PD_OPTIONS,但当前的 compose 堆栈不会将此值传递给容器。 因此,不支持仅排除某个组件来启动的配置 → FAQ

相关文档​