From 3ed89b90bba4c7ef60aee1b97613d642575d9e4a Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 2 May 2026 09:44:55 +0900 Subject: [PATCH] docs: add README and update CLAUDE.md with README update rule - README.md: full chart documentation (install, config reference, persistence, DB options, Ingress example, version history) - CLAUDE.md: add rule requiring README update on every change Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 9 +++ README.md | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 196 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 938d5b3..728e4d9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -41,6 +41,15 @@ n8n のデータは `/home/node/.n8n` に保存されます。 - デフォルト: SQLite(`/home/node/.n8n/database.sqlite`) - 本番推奨: PostgreSQL(`n8n.database.type: postgresdb`) +## 更新時のルール + +**チャートに何らかの変更を加えた場合、必ず `README.md` を最新状態に更新してからコミットすること。** +更新内容に応じて以下を反映する: +- イメージバージョン・設定値の変更 → values の表を更新 +- テンプレート追加・削除 → チャート構成表を更新 +- 設定項目の追加・変更 → 設定リファレンス表を更新 +- 注意事項・制限事項の変更 → 該当セクションを更新 + ## リリースフローのルール ### バージョン番号の方針 diff --git a/README.md b/README.md index 00e3b21..11b222d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,188 @@ -# n8n +# n8n Helm Chart -Helm Chart to deploy n8n. \ No newline at end of file +Kubernetes 上に [n8n](https://n8n.io/) ワークフロー自動化ツールをデプロイする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` の場合) + +## インストール + +```bash +helm repo add cafepieters https://git.cafepieters.com/api/packages/helmchart/helm +helm repo update +helm install my-n8n cafepieters/n8n +``` + +### カスタム値を指定してインストール + +```bash +helm install my-n8n cafepieters/n8n \ + --set n8n.host=n8n.example.com \ + --set n8n.protocol=https \ + --set ingress.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` | + +## データ永続化について + +n8n のデータ(ワークフロー定義・認証情報・実行履歴・SQLite DB)は `/home/node/.n8n` に保存されます。 + +> **重要**: `persistence.enabled: false` の場合、Pod 再起動でデータがすべて失われます。本番環境では必ず `true` にしてください。 + +## データベースの選択 + +### SQLite(デフォルト) + +シンプルな構成向け。スケールアウト不可(`replicaCount: 1` 固定推奨)。 +Deployment の `strategy: Recreate` により、旧 Pod が停止してから新 Pod が起動します。 + +### PostgreSQL + +本番・高可用性構成向け。複数レプリカが可能になります。 + +```yaml +n8n: + database: + type: postgresdb + postgresdb: + host: postgres.default.svc.cluster.local + database: n8n + user: n8n + password: your-password +``` + +## Ingress の設定例 + +```yaml +ingress: + enabled: true + className: nginx + annotations: + cert-manager.io/cluster-issuer: letsencrypt-issuer + hosts: + - host: n8n.example.com + paths: + - path: / + pathType: Prefix + tls: + - secretName: n8n-tls + hosts: + - n8n.example.com +n8n: + host: n8n.example.com + protocol: https +``` + +## バージョン履歴 + +| バージョン | n8n | 変更内容 | +|---|---|---| +| 2.19.2 | 2.19.2 | 初回リリース | + +## ライセンス + +n8n は [Sustainable Use License](https://github.com/n8n-io/n8n/blob/master/LICENSE.md) のもとで配布されています。 +このHelmチャートは Apache-2.0 ライセンスです。