Files
obsidian/history/2026-04-16-pgpool-full-migration.md

2.6 KiB

date, topic, areas, tags
date topic areas tags
2026-04-16 pgpool-II 전면 전환 + pgcat 퇴역
infra/postgresql-ha.md
history
pgpool
pgcat
patroni
postgresql
migration

n8n PoC 성공 확인 후 NocoDB·Outline 도 pgpool 경유로 전환. pgcat ArgoCD App + 리소스 삭제.

전환 순서 + 결과

NocoDB (tools/nocodb)

kubectl -n tools set env deploy/nocodb NC_DB="pg://pgpool.db.svc.cluster.local:9999?u=nocodb&p=nocodb&d=nocodb" → rollout restart → 200 OK. Baseline 2분 에러 0건.

Outline (outline/outline)

outline-secrets DATABASE_URL 호스트를 pgpool.db.svc.cluster.local:9999 로 변경 → rollout restart → 200 OK. PVC multi-attach 이슈로 old pod 수동 삭제 필요 (RWO volume Longhorn). Sequelize 호환 문제 없음.

주의: outline-secrets 는 ExternalSecret (Vault secret/apps/outline) 관리. K8s Secret 직접 패치는 refreshInterval(1h) 후 Vault 값으로 덮어씌워짐 → kappa 가 Vault 의 DATABASE_URL 을 갱신해야 영속.

pgpool 설정 변경

pool_passwd = '' 추가 — 이전 entrypoint 가 생성한 pool_passwd 파일이 남아 nocodb/outline 유저를 찾지 못하는 에러 해결. allow_clear_text_frontend_auth=on + pool_hba password 방식으로 pool_passwd 불필요.

통합 switchover 테스트

patronictl switchover --leader postgres-2 --candidate postgres-1 --force (TL10→11):

서비스 에러 수 HTTP
n8n 3 (transient) 200
NocoDB 0 200
Outline 0 200

write 복구 t+3ms (즉시). pgpool SHOW POOL_NODES 에서 primary 자동 갱신.

pgcat 퇴역

  1. kubectl -n argocd delete application pgcat (cascade 삭제)
  2. 잔존 리소스 수동 정리: Deployment, Service, ConfigMap (pgcat-config, pgcat-monitor), PDB
  3. helm-charts/values/pgcat.yaml git rm + push (commit 534118e)

최종 상태

n8n      → pgpool.db.svc.cluster.local:9999  ✓ 200
NocoDB   → pgpool.db.svc.cluster.local:9999  ✓ 200
Outline  → pgpool.db.svc.cluster.local:9999  ✓ 200
pgcat    → 삭제 (ArgoCD App + K8s resources + helm values)

미해결

  • Outline ExternalSecret → Vault 에서 DATABASE_URL 갱신 필요 (1h 이내 kappa 처리)
  • pgpool pool_passwd 비활성 (clear-text frontend) → 장기 AES 암호화 하드닝
  • retry_timeout=70/ttl=30 상향 작업 중단 상태 — 별도 재개

참조

  • helm-charts: a6bb681(pool_passwd 비활성) → 534118e(pgcat 퇴역)
  • PoC history: history/2026-04-16-pgpool-n8n-poc.md
  • infra/postgresql-ha.md — 「pgcat」 섹션 삭제, 「pgpool-II」 로 교체