在 Azure 上托管 n8n
本托管指南将向您展示如何在 Azure 上自行托管 n8n。它使用 n8n 和 Postgres 作为数据库后端,并使用 Kubernetes 管理必要的资源和反向代理。
先决条件
您需要
Azure 命令行工具自托管知识前提条件
自托管 n8n 需要技术知识,包括:
- 设置和配置服务器和容器
- 管理应用程序资源和扩展
- 保护服务器和应用程序
- 配置 n8n
n8n 建议资深用户选择自托管。错误操作可能导致数据丢失、安全问题和宕机。如果您缺乏服务器管理经验,n8n 推荐使用
n8n Cloud 。最新版本和下一个版本
n8n 几乎每周都会发布一个新的次要版本。此版本仅供生产使用。这是最新版本。您应该将其视为测试版本:它可能不稳定。如需报告问题,请使用
论坛。当前:1.102.4当前:1.103.1
托管选项
Azure 提供了几种适合托管 n8n 的方式,包括 Azure 容器实例(针对运行容器进行了优化)、Linux 虚拟机和 Azure Kubernetes 服务(使用 Kubernetes 运行的容器)。
本指南使用 Azure Kubernetes 服务 (AKS) 作为托管选项。使用 Kubernetes 需要一些额外的复杂性和配置,但它是随着需求变化而扩展 n8n 的最佳方法。
本指南中的步骤混合使用了 Azure UI 和命令行工具,但您可以使用其中任一种来完成大多数任务。
打开 Azure Kubernetes 服务
从
Azure 门户中选择Kubernetes 服务。创建集群
在 Kubernetes 服务页面中,选择
创建>创建 Kubernetes 集群。您可以选择任何适合您需要的配置选项,然后在完成后选择
“创建” 。设置 Kubectl 上下文
本指南中的其余步骤要求你将 Azure 实例设置为 Kubectl 上下文。你可以打开群集实例的详细信息页面,然后点击“
连接”按钮,查看其连接详细信息。生成的代码片段显示了粘贴并运行到终端的步骤,用于更改本地 Kubernetes 设置以使用新的群集。克隆配置存储库
Kubernetes 和 n8n 需要一系列配置文件。您可以从此
仓库克隆这些文件。以下步骤将告诉您哪个文件配置了哪些内容以及需要更改哪些内容。使用以下命令克隆存储库:
1 | |
并将目录更改为您克隆的存储库的根目录:
1 | |
配置 Postgres
对于更大规模的 n8n 部署,Postgres 提供了比 SQLite 更强大的数据库后端。
配置持久存储的卷
为了在 Pod 重启之间维护数据,Postgres 部署需要一个持久卷。默认存储类适用于此目的,并在清单中定义。
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 地址。在您要使用的集群的
“服务和入口”菜单项的“外部 IP”列下,找到 n8n 服务的 IP 地址。您需要将 n8n 端口“5678”添加到 URL 中。使用 AKS 的静态 IP 地址
阅读本教程以获取有关如何在 AKS 中使用静态 IP 地址的更多详细信息。删除资源
使用以下命令删除清单创建的资源:
1 | |