infra/apisix: K3s 내부 etcd 복귀 + destructive sync 가이드 + CRD 전환 기록

apisix.md:
- 서울 APISIX etcd: 외부 통합 → K3s 내부 apisix-etcd StatefulSet (2026-04-08)
- routes/ssls는 ApisixRoute/ApisixTls CRD로 전환 (etcd 직접 PUT 금지)
- destructive sync 동작과 객체별 관리 방법 정리
- helm values nesting 버그 회귀 방지 노트
- plugin_metadata, global_rules는 GatewayProxy CR로 관리
- ApisixRoute 예시 추가

postgresql-ha.md:
- APISIX 서울이 외부 통합 etcd 사용 안 함을 반영
- 통합 etcd는 Patroni DCS + osaka APISIX 전용
- /apisix/seoul stale prefix 삭제 절차 추가
This commit is contained in:
Heimdall
2026-04-08 09:25:24 +00:00
parent ac81018695
commit eadd6ab991
2 changed files with 78 additions and 24 deletions

View File

@@ -140,18 +140,29 @@ pgcat는 풀링 전용으로만 쓰고, leader 탐지는 OpenWrt HAProxy에 위
Patroni failover 발생 → pgcat가 옛 primary IP(`10.100.2.5`)를 hardcoded 참조 → nocodb 마이그레이션 시 `cannot execute UPDATE in a read-only transaction` 에러로 4시간 가량 CrashLoopBackOff. n8n은 마이그레이션이 없어서 표면화되지는 않았으나 동일한 잠재 문제 존재. 위의 단일 백엔드 구조로 변경하여 항구 해결.
## APISIX etcd 통합 (2026-04-06)
## APISIX etcd 사용 현황
기존 각 사이트별 독립 etcd를 통합 etcd 클러스터로 이전.
| 사이트 | etcd | prefix | 비고 |
|--------|------|--------|------|
| osaka | 통합 클러스터 (192.168.9.100, ...) | `/apisix/osaka` | Docker APISIX (waf-apisix), [[apisix#오사카-apisix-osaka]] |
| sandbox-tokyo | (미가동) | `/apisix/tokyo` | 2026-04-08 NixOS 전환으로 APISIX 자체 폐기, etcd 데이터만 보존 |
| 서울 K3s | **K3s 내부 apisix-etcd StatefulSet** (apisix.apisix.svc:2379) | `/apisix` | 2026-04-08 외부 통합에서 K3s 내부로 복귀 |
| 사이트 | 기존 etcd | 이전 후 | prefix |
|--------|----------|---------|--------|
| osaka | Docker waf-etcd (로컬) | 통합 클러스터 (192.168.9.100) | `/apisix/osaka` |
| sandbox-tokyo | Docker apisix-etcd (로컬) | 통합 클러스터 (10.253.101.233) | `/apisix/tokyo` (2026-04-08 NixOS 전환으로 sandbox-tokyo APISIX 자체가 미가동) |
| 서울 K3s | StatefulSet 3노드 (K3s 내부) | 통합 클러스터 (192.168.9.100) | `/apisix/seoul` |
### 2026-04-06 → 2026-04-08 변경 이력
- 데이터 이전: `etcdctl make-mirror --prefix /apisix/ --dest-prefix /apisix-{site}/`
- K3s 내 apisix-etcd StatefulSet + PVC 삭제 완료
1. **2026-04-06**: 서울 K3s APISIX의 K3s 내부 apisix-etcd StatefulSet을 삭제하고 외부 통합 etcd로 이전 (`/apisix/seoul` prefix). 통합 운영 + 컴포넌트 수 절감 의도.
2. **2026-04-08**: 다시 K3s 내부로 복귀. Patroni DCS와 같은 etcd 클러스터를 공유할 때 장애 전파 위험(Patroni 이슈 → APISIX 라우팅 영향)이 비직관적이라 격리. 외부 통합 etcd의 `/apisix/seoul/*` 20개 키 삭제 완료. **현재 외부 통합 etcd는 Patroni DCS + osaka APISIX 전용.**
### Stale prefix 삭제 명령 (참고)
```bash
# HTTP API v3 사용 (heimdall에서 직접 호출)
KEY=$(echo -n "/apisix/seoul/" | base64)
RANGE_END=$(echo -n "/apisix/seoul0" | base64)
curl -s -X POST "http://192.168.9.100:2379/v3/kv/deleterange" \
-H "Content-Type: application/json" \
-d "{\"key\":\"$KEY\",\"range_end\":\"$RANGE_END\"}"
```
## 관련 문서