首页 > 云计算 > 容器服务 > 在EKS上部署、维护和迁移生产环境n8n
本文重点介绍的 CNCF 项目
n8n 易于尝试,但在生产流量下运行则更为困难。使用 SQLite 的单容器非常适合快速演示。生产环境则完全是另一回事。你需要 worker、webhook 处理器、PostgreSQL(开源关系型数据库)、Redis(内存数据结构存储系统)、对象存储、外部密钥、ingress 路由,以及一个能够保留工作流历史的升级方案。
工程团队依赖 n8n 连接内部系统、处理 webhook 并自动化关键业务数据管道。它也开始出现在 AI 工作负载中,包括自托管智能体和 RAG(检索增强生成) 管道。这些工作负载可能会对 worker、密钥管理和状态处理带来更大压力。我们在 Amazon EKS 上部署了 n8n,在真实流量下运行,随后从社区 Helm chart 迁移到 n8n 官方 Helm chart。平台保持不变,我们在切换过程中保留了数据库、队列、对象存储、IAM 角色和密钥。
社区 chart 帮助我们进入了生产环境。它支持队列模式、额外的 ingress 配置以及基于 StatefulSet 的主 Pod,这在当时符合我们的架构要求。
我们运行了大约一年。随着时间的推移,维护不受支持的功能和本地补丁变得越来越难以合理化。我们比较了可用的选项,决定迁移到官方 chart,在那里持续的维护和活跃的社区支持为我们未来的升级提供了更清晰的路径。
我们在 EKS 上以队列模式运行 n8n。在队列模式下,主实例管理工作流信息和触发器,而 worker 实例执行来自 Redis 队列的任务。专用的 webhook 处理器单独处理生产 webhook 流量。我们按流量类型拆分 ingress。公共 webhook 运行在面向互联网的负载均衡器后面,而内部 webhook 使用私有主机名。
这种分离符合我们的流量模式。Worker 处理工作流执行。PostgreSQL 存储工作流和执行数据,Redis 处理排队任务,S3 存储二进制文件。
由于多副本主 Pod 的许可属于企业版功能,我们需要一种安全、一致的方式来处理跨 Pod 的共享应用配置和加密密钥。我们将这些密钥存储在 AWS Secrets Manager 中,并使用 External Secrets Operator (ESO) 将它们同步到 Kubernetes(容器编排平台)。这将应用凭证、API(应用程序编程接口) 密钥和环境变量同步到 Kubernetes Secrets 中。
社区 chart 将主 Pod 作为 StatefulSet 运行,每个副本一个持久卷。Worker 和 webhook 处理器已经作为 Deployment 运行。当运行多个主 Pod 时,该 StatefulSet 配置避免了 AWS gp3 ReadWriteOnce (RWO) EBS 卷上的多重挂载问题。
在我们的配置中,官方 chart 使用了不同的工作负载模型,主 Pod 作为 Deployment 运行,持久化依赖单个共享 PVC。我们的 gp3 卷无法跨节点挂载到多个主 Pod,因此原地 Helm 升级不适合该部署。我们改为将迁移视为一次完整切换。
共享持久化需求是我们的主要设计决策。在继续推进之前,我们检查了磁盘上存储的内容:
PostgreSQL 保存工作流和执行数据。
Redis 保存排队任务。
S3 保存文件。
AWS Secrets Manager 保存加密密钥和应用程序密钥。
我们发现主 Pod 卷上没有任何需要持久化的内容。由于 PostgreSQL、Redis、S3 和 Secrets Manager 保存了所需的应用程序状态,替换的主 Pod 可以在不依赖 Pod 特定磁盘的情况下启动并重新连接。我们为官方 chart 部署完全禁用了主 Pod 持久化。
平台保持原位:我们在切换过程中保留了数据库、对象存储、IAM 角色和密钥。其他所有内容都根据新的 chart values 重新创建。
在生产迁移之前,我们:
在非生产环境中测试了回滚
创建了数据库快照
将密钥保存到辅助位置
未更改 n8n 镜像版本。版本升级可能触发数据库迁移,我们希望将数据库排除在切换过程之外
我们首先在非生产环境中使用恢复的数据库快照进行测试:Pod 健康、已知工作流完成、所需端点可访问。在接触实时流量之前,我们在那里验证了回滚。
Helm release 发生了变化。PostgreSQL、Redis、S3、IAM 和密钥保持不变。
关于我们如何为外部 Postgres/Redis、队列模式 + HPA、资源、ingress/webhooks、可选任务运行器构建官方 chart values 的公开示例,请参见:
github.com/husne-fairwinds/n8n-sample
Fairwinds 帮助团队管理 Kubernetes 环境,重点关注运维可靠性、安全性和可维护性。
转载声明:本文为转载整理,原文版权归原作者及原站点所有。
原文来源:CNCF Blog
原创地址:https://www.cncf.io/blog/2026/10/16/deploying-maintaining-and-migrating-production-n8n-on-eks/
原文作者:Husne Ozmen, Fairwinds;如有侵权,请联系管理员删除。