Files
obsidian/history/2026-03-24-k3s-postgresql-migration.md
kappa 2356b86d36 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>
2026-04-10 12:09:21 +09:00

3.0 KiB

date, topic, areas, tags
date topic areas tags
2026-03-24 K3s PostgreSQL 백엔드 이전 (외부 etcd → Supabase → Patroni)
infra/k3s-migration.md
infra/infra-hosts.md
infra/postgresql-ha.md
infra/metallb.md
infra/gateway-api.md
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 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 설정