在 Azure 上托管 n8n#
本托管指南向您展示如何在 Azure 上自托管 n8n。它使用 n8n 与 Postgres 作为数据库后端,使用 Kubernetes 管理必要的资源和反向代理。
前提条件#
您需要安装 Azure 命令行工具
自托管知识先决条件
自托管 n8n 需要技术知识,包括:
- 设置和配置服务器和容器
- 管理应用资源和扩展
- 保护服务器和应用
- 配置 n8n
n8n 建议专家用户使用自托管。错误可能导致数据丢失、安全问题和停机。如果您在管理服务器方面经验不足,n8n 建议使用 n8n Cloud。
Latest 和 Next 版本
n8n 几乎每周都会发布新的次要版本。latest
版本用于生产环境。next
是最新的发布版本。您应该将 next
视为测试版:它可能不稳定。如需报告问题,请使用论坛。
当前 latest
:1.107.3
当前 next
:1.108.0
托管选项#
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-claim0-persistentvolumeclaim.yaml
清单中定义。
专用存储类
如果您对存储类有专门或更高的要求,请在文档中阅读更多 Azure 提供的选项。
Postgres 环境变量#
Postgres 需要设置一些环境变量以传递给在容器中运行的应用程序。
示例 postgres-secret.yaml
文件包含您需要用自己的值替换的占位符。Postgres 在创建数据库时将使用这些详细信息。
postgres-deployment.yaml
清单然后使用该清单文件中的值发送到应用程序 pod。
配置 n8n#
为文件存储创建卷#
虽然对于运行 n8n 来说不是必需的,但使用持久卷对以下情况是必需的:
- 使用与文件交互的节点,例如二进制数据节点。
- 如果您希望在重启之间持久化手动 n8n 加密密钥。这会在启动期间将包含密钥的文件保存到文件存储中。
n8n-claim0-persistentvolumeclaim.yaml
清单创建这个卷,n8n 部署在 n8n-deployment.yaml
清单的 volumes
部分中挂载该卷。
1 2 3 4 5 6 |
|
Pod 资源#
Kubernetes 允许您可选地指定应用程序容器需要的最小资源和它们可以运行的限制。上面克隆的示例 YAML 文件在 n8n-deployment.yaml
文件的 resources
部分中包含以下内容:
1 2 3 4 5 6 7 |
|
这定义了每个容器最少 250mb,最大 500mb,并让 Kubernetes 处理 CPU。您可以更改这些值以匹配您自己的需求。作为指导,以下是 n8n 云服务的资源值:
- Start:320mb RAM,10 毫核 CPU 可突发
- Pro(1万次执行):640mb RAM,20 毫核 CPU 可突发
- Pro(5万次执行):1280mb RAM,80 毫核 CPU 可突发
可选:环境变量#
您可以使用环境变量配置 n8n 设置和行为。
创建一个 n8n-secret.yaml
文件。请参阅环境变量了解 n8n 环境变量详细信息。
部署#
两个部署清单(n8n-deployment.yaml
和 postgres-deployment.yaml
)向 Kubernetes 定义 n8n 和 Postgres 应用程序。
清单定义以下内容:
- 将定义的环境变量发送到每个应用程序 pod
- 定义要使用的容器镜像
- 使用
resources
对象设置资源消耗限制 - 之前定义的
volumes
和volumeMounts
用于定义在容器中挂载卷的路径。 - 扩展和重启策略。示例清单定义每个 pod 的一个实例。您应该更改此设置以满足您的需求。
服务#
两个服务清单(postgres-service.yaml
和 n8n-service.yaml
)使用 Kubernetes 负载均衡器将服务暴露给外部世界,分别使用端口 5432 和 5678。
发送到 Kubernetes 集群#
使用以下命令将所有清单发送到集群:
1 |
|
名称空间错误
您可能会看到关于找不到 "n8n" 名称空间的错误消息,因为该资源尚未准备就绪。您可以再次运行相同的命令,或者首先使用以下命令应用名称空间清单:
1 |
|
设置 DNS#
n8n 通常在子域名上运行。在您的提供商处为子域名创建 DNS 记录,并将其指向 n8n 服务的 IP 地址。从您要使用的集群的 服务和入口 菜单项下的 外部 IP 列中查找 n8n 服务的 IP 地址。您需要在 URL 中添加 n8n 端口 "5678"。
使用 AKS 的静态 IP 地址
阅读此教程了解如何在 AKS 中使用静态 IP 地址的更多详细信息。
删除资源#
使用以下命令删除由清单创建的资源:
1 |
|
后续步骤#
🚀 与作者交流

📚 教程 💡 案例 🔧 技巧

⚡ 快答 🎯 定制 🚀 支持