--- date: 2026-04-16 topic: pgpool-II 전면 전환 + pgcat 퇴역 areas: - infra/postgresql-ha.md tags: [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」 로 교체