Activepieces 如何用 Helm Chart 在 Kubernetes 上部署并接入外部 PostgreSQL 与 Redis?
【免费下载链接】activepiecesAI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents项目地址: https://gitcode.com/GitHub_Trending/ac/activepieces
在把 Activepieces 部署到 Kubernetes 时,官方 Helm chart 默认可以不带任何数据库,也可以启用内置的 Bitnami PostgreSQL / Redis 子 chart;生产场景下更常见的需求是改用你自己已有的外部 PostgreSQL 与 Redis 实例。本文基于仓库内 Helm 安装文档 和 chart 的 values.yaml,给出"部署 chart + 接入外部数据库"这条完整路径,并指出文档示例与 chart 实际模板之间的一处需要留意的差异。
前提条件
docs/install/options/helm.mdx 列出的前提:
- Kubernetes 集群(v1.19+)
- 已安装 Helm 3.x
- kubectl 已配置好对目标集群的访问
chart 位于仓库的 deploy/activepieces-helm,版本信息见 Chart.yaml:chart 版本0.3.0,appVersion: "0.71.2"。外部 PostgreSQL 和 Redis 实例需由你自行提供,chart 只负责把连接信息注入到 Activepieces 容器。
接入外部 PostgreSQL 与 Redis
1. 关闭内置的 Bitnami 子 chart
在 values.yaml 中,postgresql和redis两个段落的含义是"是否部署内置 Bitnami 子 chart",默认都是enabled: false。Chart.yaml 中这两个依赖都带condition,只有enabled: true时才会部署对应子 chart:
postgresql: enabled: false # 关闭 Bitnami PostgreSQL 子 chart redis: enabled: false # 关闭 Bitnami Redis 子 chart如果你的 values 中把这两项保持false(默认值),集群里就不会多出一套数据库。
2. 文档给出的外部库配置写法
docs/install/options/helm.mdx 的 "Using External PostgreSQL and Redis" 一节给出的示例是直接写在 values 里的:
postgresql: enabled: false # Disable Bitnami PostgreSQL subchart host: "your-postgres-host.example.com" port: 5432 useSSL: true # Enable SSL if required auth: database: "activepieces" username: "postgres" password: "your-password" # Or use external secret reference: # externalSecret: # name: "postgresql-credentials" # key: "password"外部 Redis 写法类似:
redis: enabled: false # Disable Bitnami Redis subchart host: "your-redis-host.example.com" port: 6379 useSSL: false # Enable SSL if required auth: enabled: true password: "your-password" # Or use external secret reference: # externalSecret: # name: "redis-credentials" # key: "password"文档同时提供了 connection URL 的替代写法:
postgresql: enabled: false url: "postgresql://user:password@host:5432/database?sslmode=require"redis: enabled: false url: "redis://:password@host:6379/0"以上代码块中的 host、端口、库名、用户名和密码都是文档示例占位值,替换为你自己的实例信息即可。
3. 需要留意的差异:chart 模板并不引用这些外部值
按文档上述写法配置前,建议先确认 chart 的渲染行为:仓库中 chart 的模板文件(deployment.yaml、secret.yaml 等)没有引用.Values.postgresql/.Values.redis的host、url、auth等字段——它们只通过condition决定是否部署 Bitnami 子 chart。也就是说,enabled: false生效,但示例里的host/url等值不会被模板消费。
chart 实际把数据库连接注入容器的方式,是 values.yaml 注释中说明的"环境变量 + Kubernetes Secret"路线:
activepiecesEnvVariables是一张 "secret 名 → 要注入的环境变量名列表" 的映射,模板会把它渲染成valueFrom.secretKeyRef注入容器(见 deployment.yaml);- 外部 PostgreSQL 对应
activepieces-db-secrets,默认注入以下变量名:AP_POSTGRES_DATABASE、AP_POSTGRES_HOST、AP_POSTGRES_PORT、AP_POSTGRES_PASSWORD、AP_POSTGRES_USERNAME、AP_POSTGRES_USE_SSL、AP_POSTGRES_POOL_SIZE、AP_POSTGRES_SSL_CA; - 外部 Redis 对应
activepieces-redis-secrets,默认注入:AP_REDIS_TYPE、AP_REDIS_HOST、AP_REDIS_PORT、AP_REDIS_PASSWORD、AP_REDIS_USE_SSL、AP_REDIS_USER。
values.yaml 的注释原文要求:"Each var name must exist as a key in the corresponding secret."即你需要在集群中自己创建名为activepieces-db-secrets和activepieces-redis-secrets的 Secret,且 Secret 的 key 必须与上表变量名一致,例如 key 为AP_POSTGRES_HOST的值指向你的外部 PostgreSQL 地址。values.yaml 注释中另提到可以用deploy/scripts/apply-secrets.sh --secret-name <name>来填充这些 Secret,但该脚本在当前仓库中不存在,请以手动创建 Secret 的方式理解这一步。
因此,接入外部 PostgreSQL 与 Redis 的可执行主路径是:
- 保持
postgresql.enabled: false、redis.enabled: false; - 创建 Secret
activepieces-db-secrets,key 覆盖你实际需要的AP_POSTGRES_*(至少AP_POSTGRES_HOST、AP_POSTGRES_PORT、AP_POSTGRES_DATABASE、AP_POSTGRES_USERNAME、AP_POSTGRES_PASSWORD); - 创建 Secret
activepieces-redis-secrets,key 覆盖你实际需要的AP_REDIS_*(至少AP_REDIS_HOST、AP_REDIS_PORT、AP_REDIS_PASSWORD); - 确认
activepiecesEnvVariables中这两个映射保留默认列表,不做删改。
文档示例(第 2 步的host/url/externalSecret写法)与本节机制属于同一文档集内给出的两种表述,按"文档示例与仓库模板现状"对待:先按主路径验证,再判断你所使用的 chart 版本是否支持示例写法。
编写 my-values.yaml
文档 Quick Start 第 3 步:创建你自己的my-values.yaml,可以以仓库里的 values.yaml 作为参考。chart 对必需值有合理默认值、可选项留空,但生产环境应自定义核心值。
如果你后续要激活 license key,文档要求写入:
activepiecesConfig: AP_EDITION: "ee" AP_EXECUTION_MODE: "SANDBOX_CODE_ONLY"文档对此给出明确警告:activepiecesConfig把明文值直接写进 pod,而activepiecesEnvVariables渲染在它之后、从你创建的 Secret 取值,同名变量以 Secret 为准。chart 默认把AP_EDITION和AP_EXECUTION_MODE列在activepieces-config-secrets的注入名单下,所以这两个变量只能在一处设置:要么从activepiecesConfig移除并改放进那个 Secret,要么反之,不要两边都写。另外AP_EDITION=ee搭配默认执行模式会在启动时被拒绝,应用无法启动——这就是文档示例把两者成对写出的原因。
安装
按文档 Quick Start,进入 chart 所在目录后执行:
# 更新 chart 依赖(Bitnami 子 chart 与 secret generator 的 Chart.lock 依赖) helm dependency update # 安装 helm install activepieces deploy/activepieces-helm -f my-values.yaml安装成功后,升级与卸载也有对应命令:
# 升级 helm upgrade activepieces deploy/activepieces-helm -f my-values.yaml kubectl rollout status deployment/activepieces # 卸载 helm uninstall activepieces # 清理持久卷(可选) kubectl delete pvc -l app.kubernetes.io/instance=activepieces验证部署
文档给出的验证命令:
# 检查 deployment 状态 kubectl get pods kubectl get services辅助命令(来自文档 Troubleshooting 一节):
# 查看日志 kubectl logs deployment/activepieces -f # 本地端口转发测试 kubectl port-forward svc/activepieces 4200:80 --namespace default # 查看全部资源 kubectl get all --namespace defaultPod 的探针配置在 values.yaml 中:liveness 探测/api/v1/health,readiness 探测/v1/health,Pod Ready 与否可以结合kubectl get pods的状态直接判断。
常见问题与边界
文档 Troubleshooting 列出的排查项:
- Pod won't start:用
kubectl logs deployment/activepieces查日志; - Database connection:核对 PostgreSQL 凭证与连通性——对应本文场景,先确认
activepieces-db-secrets中各AP_POSTGRES_*key 的取值与外部实例一致、网络可达; - Frontend URL:确保
frontendUrl可被外部访问; - Webhooks not working:检查 ingress 配置与 DNS 解析。
文档 Production Checklist 中与本场景直接相关的两项:frontendUrl设置成实际域名、PostgreSQL 与 Redis 使用强密码(或使用自动生成)。
最后重申本文开头的差异点:外部库连接信息以"Secret key 与环境变量名一一对应"这一机制为准;如果kubectl logs显示容器未收到预期的AP_POSTGRES_*变量,优先检查对应 Secret 的 key 是否拼写正确、是否恰好与activepiecesEnvVariables列表中的名字一致。
【免费下载链接】activepiecesAI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents项目地址: https://gitcode.com/GitHub_Trending/ac/activepieces
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考