65 lines
2.6 KiB
Markdown
65 lines
2.6 KiB
Markdown
---
|
|
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」 로 교체
|