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>
3.0 KiB
3.0 KiB
date, topic, areas, tags
| date | topic | areas | tags | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-03-24 | K3s PostgreSQL 백엔드 이전 (외부 etcd → Supabase → Patroni) |
|
|
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 12: kr1 합류 + 서비스 이전 (2026-03-2425)
- 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 설정