n8n: 2.29.10 업그레이드 이력 기록, Helm 드리프트 해소 반영

This commit is contained in:
kaffa
2026-07-11 13:39:35 +09:00
parent c6171f73df
commit 464db158a5
2 changed files with 85 additions and 6 deletions

View File

@@ -1,7 +1,7 @@
---
title: n8n
updated: 2026-07-11
tags: [services, n8n, oidc, gitea]
tags: [services, n8n, oidc, gitea, helm]
---
## 개요
@@ -9,8 +9,10 @@ tags: [services, n8n, oidc, gitea]
워크플로 자동화. K3s `n8n` 네임스페이스.
- URL: https://n8n.inouter.com
- 이미지: `n8nio/n8n:latest`
- 이미지: `n8nio/n8n:2.29.10` (2026-07-11 업그레이드, [[../history/2026-07-11-n8n-upgrade-2.29.10-helm-native|이력]])
- DB: `pgpool.db.svc.cluster.local:9999` (Patroni 직결, [[../infra/postgresql-ha|postgresql-ha]] 참조)
- 텔레메트리: `N8N_DIAGNOSTICS_ENABLED=false` (비활성 — 아웃바운드 차단 환경에서 재시도 폭주로 자체 IP 차단 유발했던 이력 있음)
- 리소스: `limits.memory: 1Gi` / `requests.memory: 512Mi` (2.29.10부터 512Mi로는 OOM)
## Gitea OIDC SSO
@@ -42,12 +44,14 @@ EXTERNAL_FRONTEND_HOOKS_URLS=/assets/oidc-frontend-hook.js
- confidential client: yes
- Gitea admin → Settings → Applications 에서 관리
### 배포 구조 — Helm + 수동 패치 혼재 (주의)
### 배포 구조 — Helm 완전 편입 (2026-07-11 정리 완료)
n8n은 Helm release(`n8n-2.0.1`, chart 자체는 OIDC 애드온 미지원)로 설치되어 있으나, OIDC 관련 리소스(`n8n-oidc-secret`, `n8n-oidc-hooks` ConfigMap, `n8n-app-config`의 OIDC 관련 키, hooks volume mount, `envFrom` 항목)는 설치 후 `kubectl apply`/`kubectl patch`**Helm 값 외부에서 수동 추가**됨. `helm get values n8n`에는 이 내용이 전혀 안 보임.
n8n은 Helm release(`n8n-2.0.1`, OCI 차트 `oci://8gears.container-registry.com/library/n8n`). **한때 OIDC 관련 리소스가 `kubectl apply`/`patch`로 Helm 값 외부에서 수동 추가되어 있어 `helm upgrade` 시 드리프트(설정 유실) 위험이 있었으나, 2026-07-11 업그레이드 작업 중 전부 Helm values로 편입 완료** ([[../history/2026-07-11-n8n-upgrade-2.29.10-helm-native|이력]]). 이제 `helm upgrade`를 그대로 실행해도 안전함.
- **드리프트 위험**: `helm upgrade`를 values 변경 없이 재실행하면 Deployment가 chart 템플릿대로 재렌더링되면서 수동 patch (`envFrom``n8n-oidc-secret` secretRef 등)가 **되돌아갈 수 있음**. OIDC 관련 변경 후에는 반드시 `kubectl -n n8n get deployment n8n -o yaml`로 envFrom/volumeMounts 유지 여부 확인할 것.
- `envFrom` 순서(2026-07-11 기준): `configMapRef n8n-app-config``secretRef n8n-app-secret``secretRef n8n-oidc-secret`
- `main.config`: 임의 키가 재귀적으로 `KEY_UPPER_SNAKE` env var로 변환됨(`toEnvVars` helper, `n8n-app-config` ConfigMap 생성). OIDC 관련 키(`external_hook_files`, `oidc_issuer_url` 등) 전부 이 안에 선언되어 있음.
- `main.extraEnv`: `OIDC_CLIENT_ID`/`OIDC_CLIENT_SECRET``valueFrom.secretKeyRef``n8n-oidc-secret` 참조. (각 entry는 raw `toYaml`이라 `value``valueFrom`이든 표준 EnvVar 구조 그대로 지원)
- `main.extraVolumes`/`main.extraVolumeMounts`: `n8n-oidc-hooks` ConfigMap → `/opt/n8n-oidc/hooks.js` 마운트.
- **values.yaml 실물 파일**: `kaffa/helm-charts` repo `values/n8n.yaml`. 업그레이드/설정 변경 시 이 파일 수정 → `helm upgrade n8n oci://8gears.container-registry.com/library/n8n --version 2.0.1 -n n8n -f values/n8n.yaml` → 커밋/푸시.
### 동작