obsidian: 정본 문서에서 히스토리/인시던트 분리 완료

15개 정본 문서에서 날짜별 변경이력, 인시던트 기록, 폐기된 구현 상세를
history/ 디렉토리로 분리. 정본은 현재 상태만 기술하는 백서 형태로 정리.
각 정본에 history 위키링크 추가.

분리된 history 파일 12건:
- apisix git push 500, k3s postgresql migration, apisix→traefik 전환
- netbis DDoS 공격, gitea 이전/분리, usb 2.5g hang + NFS hard mount
- supabase→patroni, apisix etcd 통합/분리, anomaly-detect 재설계
- patroni failover incident, zlambda nixos migration, ops-agents setup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
kappa
2026-04-10 12:09:21 +09:00
parent 72750cfc9d
commit 2356b86d36
27 changed files with 554 additions and 514 deletions

View File

@@ -0,0 +1,72 @@
---
date: 2026-03-24
topic: K3s PostgreSQL 백엔드 이전 (외부 etcd → Supabase → Patroni)
areas:
- infra/k3s-migration.md
- infra/infra-hosts.md
- infra/postgresql-ha.md
- infra/metallb.md
- infra/gateway-api.md
tags: [history, k3s, migration, postgresql, supabase, metallb]
---
K3s 클러스터를 기존 외부 etcd 백엔드에서 Supabase PostgreSQL(kine)로 전환한 프로젝트. 2026-03-24~26 수행.
## 배경
기존 K3s 클러스터는 hp2(server), kr1(server), kr2(분리됨) 3노드에 외부 etcd(Incus 컨테이너 3개, `http://192.168.9.214:2379`, `http://192.168.9.135:2379`, `http://192.168.9.134:2379`)를 데이터스토어로 사용. 새 클러스터로 전환.
## 변경 사항
### Phase 0: 인프라 구성 (2026-03-24~25)
- kr2 첫 server 구성, Supabase PostgreSQL 연결
- cert-manager + 와일드카드 인증서 6개 + Reflector
- Traefik DaemonSet (hostPort 80/443) + Gateway API
- APISIX replica 1 (SafeLine WAF 테스트 라우트 1건, Ingress Controller 제거)
- HAProxy 80/443 → Traefik hostPort 복원
- Longhorn v1.8.2
### Phase 1~2: kr1 합류 + 서비스 이전 (2026-03-24~25)
- kr1 server로 합류 → 2-server HA 확보
- 전 서비스 이전 완료 (NocoDB, Gitea, n8n, ArgoCD, Grafana, SearXNG, SafeLine 등)
### Phase 3: hp2 합류 (2026-03-25)
- hp2 **agent**로 합류 (server 3대 → server 2 + agent 1 구성)
- Supabase 커넥션 절약 (agent는 DB 커넥션 불필요)
### Vault jp1 이전 (2026-03-24)
- jp1 Incus default 프로젝트, `vault` 컨테이너 (Debian 13)
- Vault v1.21.4 (raft 스토리지, 스냅샷 복원)
- vault-mcp-server v0.2.0 (Go 바이너리, systemd, port 8080)
- K3s vault 네임스페이스 → ExternalName 서비스로 전환
### Phase 4: 정리 (2026-03-25)
- 기존 etcd Incus 컨테이너 폐기 완료
- 기존 K3s server.bak 삭제 완료
### Phase 5: MetalLB 도입 + 네임스페이스 정리 (2026-03-26)
- MetalLB L2 도입 (192.168.9.50-59), K3s ServiceLB 비활성화
- NodePort 전면 제거 → LoadBalancer 전환:
- traefik: hostPort 80/443 → LoadBalancer 192.168.9.53
- apisix-gateway: NodePort 30233/31137 → LoadBalancer 192.168.9.50
- sshpiper: NodePort 31840 → LoadBalancer 192.168.9.51
- teleport-cluster: ClusterIP → LoadBalancer 192.168.9.52
- argocd-server: NodePort 30080/30443 → ClusterIP (Traefik Ingress)
- ironclad/anvil NodePort → 삭제 (오사카에서 서빙)
- HAProxy 백엔드: 3노드 roundrobin → MetalLB IP 단일 엔드포인트
- k3s.inouter.com DNS: 3노드 A 레코드 → 192.168.9.53 단일
- sshpiper 설치, Teleport 설치, api/mcp 네임스페이스 신설
- ironclad/anvil 네임스페이스 삭제
## 영향
새 클러스터 end state:
- 컨트롤 플레인: kr1 + kr2, 워커: hp2
- 데이터스토어: Supabase PostgreSQL(kine), Session mode pooler 5432
- 이후 2026-04-05에 Supabase → 로컬 Patroni PostgreSQL HA로 재이전
## 참조
- `infra/infra-hosts.md` — 현재 서버/클러스터 구성
- `infra/postgresql-ha.md` — Patroni HA 구성 (Supabase 후속)
- `infra/metallb.md` — MetalLB 설정