Files
obsidian/services/n8n.md

3.4 KiB

title, updated, tags
title updated tags
n8n 2026-07-11
services
n8n
oidc
gitea
helm

개요

워크플로 자동화. K3s n8n 네임스페이스.

Gitea OIDC SSO

n8n-oidc 사용 — n8n external hooks 방식, enterprise 불필요.

구성 요소

리소스 내용
ConfigMap n8n-oidc-hooks hooks.js (n8n-oidc 프로젝트 원본)
Secret n8n-oidc-secret OIDC_CLIENT_ID, OIDC_CLIENT_SECRET
ConfigMap n8n-app-config OIDC 관련 env vars

환경변수 (n8n-app-config)

EXTERNAL_HOOK_FILES=/opt/n8n-oidc/hooks.js
OIDC_ISSUER_URL=https://gitea.inouter.com
OIDC_REDIRECT_URI=https://n8n.inouter.com/auth/oidc/callback
OIDC_SCOPES=openid profile email
N8N_ADDITIONAL_NON_UI_ROUTES=auth
EXTERNAL_FRONTEND_HOOKS_URLS=/assets/oidc-frontend-hook.js

Gitea OAuth2 앱

  • name: n8n
  • redirect URI: https://n8n.inouter.com/auth/oidc/callback
  • confidential client: yes
  • Gitea admin → Settings → Applications 에서 관리

배포 구조 — Helm 완전 편입 (2026-07-11 정리 완료)

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를 그대로 실행해도 안전함.

  • 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_SECRETvalueFrom.secretKeyRefn8n-oidc-secret 참조. (각 entry는 raw toYaml이라 valuevalueFrom이든 표준 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 → 커밋/푸시.

동작

  1. n8n 로그인 페이지에 "Sign in with SSO" 버튼 표시
  2. 클릭 → Gitea authorize → 콜백 → JIT user provisioning (첫 유저 = owner)
  3. SSO 우회: https://n8n.inouter.com/signin?showLogin=true 로 로컬 로그인

볼륨 마운트

volumes:
  - name: oidc-hooks
    configMap:
      name: n8n-oidc-hooks
volumeMounts:
  - name: oidc-hooks
    mountPath: /opt/n8n-oidc/hooks.js
    subPath: hooks.js
    readOnly: true

관련