n8n Helm Chart
Kubernetes 上に n8n ワークフロー自動化ツールをデプロイするHelmチャートです。
Raspberry Pi などのベアメタル上で動作する Kubernetes クラスタ(ARM64)を想定した構成です。
特徴
n8nio/n8n 公式マルチアーキテクチャイメージ(linux/arm64 / Raspberry Pi 4以降対応)
- シングルコンテナ構成(軽量・シンプル)
- データ永続化(PVC)
- SQLite(デフォルト)/ PostgreSQL 選択可能
- Basic認証・暗号化キー管理(Secret)
- Ingress / HPA / PDB / NetworkPolicy 対応
前提条件
- Kubernetes 1.19 以上
- Helm 3.x
- PersistentVolume プロビジョナー(
persistence.enabled: true の場合)
インストール
カスタム値を指定してインストール
チャート構成
| リソース |
説明 |
| Deployment |
n8n 本体(シングルコンテナ、strategy: Recreate) |
| Service |
LoadBalancer / ClusterIP(ポート 5678) |
| PVC |
n8n データ(ワークフロー・認証情報・SQLite DB)永続化 |
| Secret |
暗号化キー・Basic認証パスワード・DBパスワード |
| Ingress |
オプション(nginx ingress controller 対応) |
| HPA |
オプション(※SQLiteモード時はスケールアウト非推奨) |
| PDB |
Pod Disruption Budget |
| NetworkPolicy |
オプション |
設定リファレンス
イメージ
| パラメータ |
デフォルト |
説明 |
image.registry |
docker.io |
レジストリ |
image.repository |
n8nio/n8n |
イメージ名 |
image.tag |
2.19.2 |
イメージタグ |
image.pullPolicy |
IfNotPresent |
Pull ポリシー |
サービス
| パラメータ |
デフォルト |
説明 |
service.type |
LoadBalancer |
Service タイプ |
service.port |
5678 |
公開ポート |
n8n 設定
| パラメータ |
デフォルト |
説明 |
n8n.host |
n8n.local |
ホスト名(Webhook URL 生成に使用) |
n8n.protocol |
http |
プロトコル(http / https) |
n8n.webhookUrl |
"" |
Webhook ベース URL(未設定時は host/protocol から生成) |
n8n.timezone |
Asia/Tokyo |
タイムゾーン |
n8n.logLevel |
info |
ログレベル(error/warn/info/verbose/debug) |
n8n.encryptionKey |
"" |
暗号化キー(空の場合は初回インストール時に自動生成、以降は既存値を維持) |
n8n.existingSecret |
"" |
既存 Secret 名(指定時は Secret を自動作成しない) |
Basic認証
| パラメータ |
デフォルト |
説明 |
n8n.basicAuth.enabled |
false |
Basic認証の有効化 |
n8n.basicAuth.user |
admin |
ユーザー名 |
n8n.basicAuth.password |
"" |
パスワード(空の場合は自動生成) |
n8n.basicAuth.existingSecret |
"" |
既存 Secret 名 |
実行履歴の管理
| パラメータ |
デフォルト |
説明 |
n8n.executions.pruneData |
true |
古い実行データを削除する |
n8n.executions.pruneDataMaxAge |
336 |
保持する最大時間数(336h = 14日) |
n8n.executions.pruneDataMaxCount |
10000 |
保持する最大件数 |
データベース
| パラメータ |
デフォルト |
説明 |
n8n.database.type |
sqlite |
DB種別(sqlite / postgresdb) |
n8n.database.postgresdb.host |
postgres.default.svc.cluster.local |
PostgreSQL ホスト |
n8n.database.postgresdb.port |
5432 |
PostgreSQL ポート |
n8n.database.postgresdb.database |
n8n |
データベース名 |
n8n.database.postgresdb.user |
"" |
ユーザー名 |
n8n.database.postgresdb.password |
"" |
パスワード |
n8n.database.postgresdb.existingSecret |
"" |
既存 Secret 名 |
永続化
| パラメータ |
デフォルト |
説明 |
persistence.enabled |
true |
PVC による永続化 |
persistence.storageClass |
"" |
StorageClass(空の場合はデフォルト) |
persistence.accessMode |
ReadWriteOnce |
アクセスモード |
persistence.size |
5Gi |
ストレージサイズ |
persistence.existingClaim |
"" |
既存 PVC 名 |
リソース(Raspberry Pi 向けデフォルト)
| パラメータ |
デフォルト |
resources.requests.cpu |
250m |
resources.requests.memory |
256Mi |
resources.limits.cpu |
1000m |
resources.limits.memory |
512Mi |
セキュアCookieの自動設定
N8N_SECURE_COOKIE は Ingress の設定に基づいて自動的に決定されます。手動設定は不要です。
| 条件 |
N8N_SECURE_COOKIE |
ingress.enabled: false(LoadBalancer / HTTP直接アクセス) |
false |
ingress.enabled: true かつ ingress.tls 未設定 |
false |
ingress.enabled: true かつ ingress.tls 設定済み |
true |
データ永続化について
n8n のデータ(ワークフロー定義・認証情報・実行履歴・SQLite DB)は /home/node/.n8n に保存されます。
重要: persistence.enabled: false の場合、Pod 再起動でデータがすべて失われます。本番環境では必ず true にしてください。
データベースの選択
SQLite(デフォルト)
シンプルな構成向け。スケールアウト不可(replicaCount: 1 固定推奨)。
Deployment の strategy: Recreate により、旧 Pod が停止してから新 Pod が起動します。
PostgreSQL
本番・高可用性構成向け。複数レプリカが可能になります。
Ingress の設定例
バージョン履歴
| バージョン |
n8n |
変更内容 |
| 2.19.2 |
2.19.2 |
初回リリース |
| 2.19.2-b |
2.19.2 |
暗号化キーを lookup で既存 Secret から維持、helm upgrade での再生成を防止 |
| 2.19.2-a |
2.19.2 |
N8N_SECURE_COOKIE を Ingress/TLS 設定から自動判定(HTTP/LoadBalancer 環境対応) |
ライセンス
n8n は Sustainable Use License のもとで配布されています。
このHelmチャートは Apache-2.0 ライセンスです。