在 Google Cloud 上托管 n8n
本托管指南将向您展示如何在 Google Cloud (GCP) 上自行托管 n8n。它使用 n8n 和 Postgres 作为数据库后端,并使用 Kubernetes 管理必要的资源和反向代理。
先决条件
- gcloud命令行工具
- gke -gcloud-auth-plugin (首先安装 gcloud CLI)
自托管知识前提条件
自托管 n8n 需要技术知识,包括:
- 设置和配置服务器和容器
- 管理应用程序资源和扩展
- 保护服务器和应用程序
- 配置 n8n
n8n 建议资深用户选择自托管。错误操作可能导致数据丢失、安全问题和宕机。如果您缺乏服务器管理经验,n8n 推荐使用
n8n Cloud 。最新版本和下一个版本
n8n 几乎每周都会发布一个新的次要版本。此版本仅供生产使用。这是最新版本。您应该将其视为测试版本:它可能不稳定。如需报告问题,请使用
论坛。当前:1.102.4当前:1.103.1
托管选项
Google Cloud 提供了几种适合托管 n8n 的选项,包括 Cloud Run(针对运行容器进行了优化)、Compute Engine(虚拟机)和 Kubernetes Engine(使用 Kubernetes 运行的容器)。
本指南使用 Google Kubernetes Engine (GKE) 作为托管选项。使用 Kubernetes 需要一些额外的复杂性和配置,但它是随着需求变化而扩展 n8n 的最佳方法。
本指南中的大部分步骤都使用 Google Cloud UI,但您也可以使用
gcloud 命令行工具来执行所有步骤。创建项目
GCP 鼓励您创建项目,以便合理地组织资源和配置。请从 Google Cloud Console 为您的 n8n 部署创建一个新项目:选择项目下拉菜单,然后点击
“新建项目”按钮。然后选择新创建的项目。在执行本指南中的其他步骤时,请确保您选择了正确的项目。启用 Kubernetes Engine API
GKE 默认未启用。在顶部搜索栏中搜索“Kubernetes”,然后在结果中选择“Kubernetes Engine”。
选择
ENABLE为该项目启用 Kubernetes Engine API。创建集群
在
GKE 服务页面中,选择“集群” > “创建” 。请确保选择“标准”集群选项,n8n 不支持“Autopilot”集群。您可以将集群配置保留为默认设置,除非您需要更改任何具体设置(例如位置)。设置 Kubectl 上下文
本指南中的其余步骤要求您将 GCP 实例设置为 Kubectl 上下文。您可以打开集群实例的详细信息页面并选择
“连接”来查看其连接详细信息。显示的代码片段显示了 gcloud CLI 工具的连接字符串。在 gcloud CLI 中粘贴并运行该代码片段,即可将本地 Kubernetes 设置更改为使用新的 gcloud 集群。克隆配置存储库
Kubernetes 和 n8n 需要一系列配置文件。您可以从此
仓库克隆这些文件到本地。以下步骤介绍了文件配置以及如何添加您的信息。使用以下命令克隆存储库:
1 | |
并将目录更改为您克隆的存储库的根目录:
1 | |
配置 Postgres
对于更大规模的 n8n 部署,Postgres 提供了比 SQLite 更强大的数据库后端。
创建用于持久存储的卷
为了在 Pod 重启之间维护数据,Postgres 部署需要一个持久卷。在 GCP 上运行 Postgres 需要特定的 Kubernetes 存储类。您可以阅读
本指南了解详细信息,但清单会为您创建存储类。您可能需要更改> >键下要创建存储的区域。默认情况下,它们设置为。1 2 3 4 5 6 7 | |
Postgres 环境变量
Postgres 需要设置一些环境变量来传递给容器中运行的应用程序。
示例文件包含需要替换为您自己的值的占位符。Postgres 将在创建数据库时使用这些详细信息。
然后,清单使用该清单文件中的值发送到应用程序容器。
配置 n8n
创建用于文件存储的卷
虽然对于运行 n8n 来说并非必需,但使用持久卷对于以下情况是必需的:
- 使用与文件交互的节点,例如二进制数据节点。
- 如果您想在重启之间保留手动 n8n 加密密钥。这会在启动期间将包含密钥的文件保存到文件存储中。
清单创建了这一点,并且 n8n 部署在清单的部分中挂载了该声明。
1 2 3 4 5 6 | |
Pod 资源
Kubernetes 允许您选择性地指定应用程序容器所需的最小资源以及它们可以运行的限制。上面克隆的示例 YAML 文件在和文件部分包含以下内容:1 2 3 4 5 6 7 | |
这定义了每个容器的最小 250MB 空间,最大 500MB 空间,并允许 Kubernetes 处理 CPU。您可以根据自己的需求更改这些值。以下是 n8n 云产品的资源值,仅供参考:
- 起始配置:320mb RAM,10 millicore CPU
- Pro(10k 次执行) :640mb RAM,20 millicore CPU(可突发)
- Pro(50k 次执行) :1280mb RAM,80 millicore CPU(可突发)
可选:环境变量
您可以使用环境变量配置 n8n 设置和行为。
创建一个文件。有关 n8n 环境变量的详细信息,请参阅
环境变量。部署
两个部署清单(和)向 Kubernetes 定义了 n8n 和 Postgres 应用程序。
清单定义如下:
- 将定义的环境变量发送到每个应用程序pod
- 定义要使用的容器镜像
- 使用对象设置资源消耗限制
- 前面定义并定义容器中挂载卷的路径。
- 扩缩和重启策略。示例清单定义了每个 Pod 的一个实例。您可以根据需要进行更改。
服务
这两个服务清单(和)分别使用端口 5432 和 5678 通过 Kubernetes 负载均衡器向外界公开服务。
发送到 Kubernetes 集群
使用以下命令将所有清单发送到集群:
1 | |
命名空间错误
您可能会看到一条错误消息,提示找不到“n8n”命名空间,因为该资源尚未准备好。您可以再次运行相同的命令,或者先使用以下命令应用命名空间清单:
1 | |
设置 DNS
n8n 通常在子域上运行。请向您的提供商为子域创建 DNS 记录,并将其指向 n8n 服务的 IP 地址。在您要使用的集群的
“服务和入口”菜单项的“端点”列下找到 n8n 服务的 IP 地址。GKE 和 IP 地址
阅读此 GKE 教程,了解有关保留 IP 地址如何与 GKE 和 Kubernetes 资源配合使用的更多详细信息。删除资源
使用以下命令删除清单创建的资源:
1 | |