Files
obsidian/services/n8n.md

2.6 KiB

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

개요

워크플로 자동화. 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 + 수동 패치 혼재 (주의)

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 patchHelm 값 외부에서 수동 추가됨. helm get values n8n에는 이 내용이 전혀 안 보임.

  • 드리프트 위험: helm upgrade를 values 변경 없이 재실행하면 Deployment가 chart 템플릿대로 재렌더링되면서 수동 patch (envFromn8n-oidc-secret secretRef 등)가 되돌아갈 수 있음. OIDC 관련 변경 후에는 반드시 kubectl -n n8n get deployment n8n -o yaml로 envFrom/volumeMounts 유지 여부 확인할 것.
  • envFrom 순서(2026-07-11 기준): configMapRef n8n-app-configsecretRef n8n-app-secretsecretRef n8n-oidc-secret

동작

  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

관련