diff --git a/infra/apisix.md b/infra/apisix.md index 77d4a6c..88191b7 100644 --- a/infra/apisix.md +++ b/infra/apisix.md @@ -1,6 +1,6 @@ --- title: APISIX 설정 및 운영 -updated: 2026-03-14 +updated: 2026-03-15 --- ## 아키텍처 @@ -17,18 +17,21 @@ BunnyCDN(inouter, ID 5316471) → apisix-osaka(172.233.93.180) → 백엔드 ### 서울 (incus-hp2) ``` -BunnyCDN(actions, ID 5330178) → OpenWrt(220.120.65.245) → incus-hp2 APISIX(10.179.99.126) → 백엔드 +인터넷 → OpenWrt(:80/:443) → hp2(:9080/:9443, incus proxy device) → APISIX(10.179.99.126) → 백엔드 ``` -- 용도: 고객 웹사이트 리버스 프록시 + 일부 인프라 서비스 -- upstream: incus-kr2 내부(10.179.99.x), K3s Traefik -- 고객 도메인: fkwm.kr, igv.kr, inbest.kim, ntf.kr, sarm.kim, tonghakbus.com, yonghak.com, cando.kr, iksung.kim, leewell.com 등 +- 용도: KR존 리버스 프록시 +- upstream: K3s Traefik (192.168.9.134/214/135:443) +- 라우트: nocodb.inouter.com (nocodb, nocodb-nuxt) +- SSL: cert-manager wildcard `*.inouter.com` 인증서 +- SafeLine WAF 연동 (chaitin-waf 플러그인) +- Admin API: `incus exec apisix -- curl http://127.0.0.1:9180/apisix/admin` ### BunnyCDN Pull Zone 매핑 | Zone | Origin | 방향 | 주요 Hostnames | |---|---|---|---| | inouter (5316471) | 172.233.93.180 | → 오사카 | anvil.it.com, hcv.inouter.com, gitea, n8n, kroki | -| actions (5330178) | 220.120.65.245 | → 서울 | actions.it.com, nocodb.inouter.com, nas.inouter.com | +| actions (5330178) | 220.120.65.245 | → 서울 | actions.it.com (nocodb는 BunnyCDN 우회, 직접 연결) | ## ironclad.it.com 라우트 @@ -54,9 +57,11 @@ APISIX 라우트 ID: twilio-jp-inouter-com → [[twilio]] APISIX 라우트 hcv-inouter-com → K3s Traefik (192.168.9.134/214/135:443, roundrobin, scheme https). upstream ID: hcv-inouter-com. [[vault]] UI/API 서빙. BunnyCDN pull zone inouter (ID 5316471)에 hostname 추가 완료 (2026-03-12). K3s 노드 IP 변경 반영 (2026-03-14). -## nocodb.inouter.com 라우트 (서울 이전 완료) +## nocodb.inouter.com 라우트 -트래픽 흐름: Cloudflare DNS → BunnyCDN (pull zone **actions**, ID 5330178) → OpenWrt(220.120.65.245) → incus-hp2 APISIX(10.179.99.126, 라우트 nocodb) → K3s Traefik (192.168.9.134/214/135:443, roundrobin, scheme https) → nocodb svc:8080 (namespace tools). +트래픽 흐름: Cloudflare DNS (A 220.120.65.245, BunnyCDN 우회) → OpenWrt(:443) → hp2(:9443, incus proxy device) → APISIX(10.179.99.126, 라우트 nocodb/nocodb-nuxt) → K3s Traefik (192.168.9.134/214/135:443, roundrobin, scheme https) → nocodb svc:8080 (namespace tools). + +BunnyCDN WAF가 NocoDB JS를 오탐 차단하여 CDN 우회 처리 (2026-03-15). ## CrowdSec 로그 연동 diff --git a/infra/infra-hosts.md b/infra/infra-hosts.md index 5d7a77b..7599b7b 100644 --- a/infra/infra-hosts.md +++ b/infra/infra-hosts.md @@ -1,6 +1,7 @@ --- title: 인프라 호스트 및 네트워크 -updated: 2026-03-14 +updated: 2026-03-15 +tags: [infra, network, kr-zone, openwrt] --- ## SSH 접속 정보 @@ -24,7 +25,8 @@ updated: 2026-03-14 | 서비스 | 위치 | 접근 방법 | |--------|------|-----------| -| [[apisix]] | apisix-osaka + kr1 | SSH 직접 접속 / Admin API | +| [[apisix]] (오사카) | apisix-osaka (Linode) | SSH 직접 접속 / Admin API | +| [[apisix]] (서울) | hp2 incus 컨테이너 (10.179.99.126) | incus exec apisix / Admin API(:9180) | | NocoDB | K3s 클러스터 (kr2), namespace tools | kubectl, nocodb.inouter.com | | Anvil, Ironclad | K8s 클러스터 (kr1) | kubectl | | Prometheus, Grafana | jp1 (monitoring) | incus exec --project monitoring | @@ -39,6 +41,37 @@ updated: 2026-03-14 - **kr1**: default, inbest, karakeep, security - **kr2**: default +## KR존 네트워크 토폴로지 + +``` +인터넷 + └── OpenWrt 라우터 (공인 IP: 220.120.65.245, 내부: 192.168.9.1) + ├── incus-kr1 (192.168.9.214) + ├── incus-kr2 (192.168.9.135) + └── incus-hp2 (192.168.9.134) ← K3s control-plane + └── APISIX (incus 컨테이너, 10.179.99.126) + +외부 트래픽 흐름: + 인터넷 → OpenWrt → APISIX(10.179.99.126:9080/9443) → K3s/Traefik → pods + +내부 트래픽 흐름: + LAN → K3s/Traefik(192.168.9.x:80/443) → pods 직접 +``` + +- **게이트웨이**: OpenWrt 라우터 (root@192.168.9.1) +- **OpenWrt 포트포워딩**: + - TCP 80 → hp2(192.168.9.134):9080 + - TCP 443 → hp2(192.168.9.134):9443 + - UDP 443 → hp2(192.168.9.134):9443 (QUIC/HTTP3) +- **hp2 incus proxy device** (9080/9443 → APISIX 컨테이너): + - proxy-http: tcp:0.0.0.0:9080 → tcp:127.0.0.1:9080 + - proxy-https: tcp:0.0.0.0:9443 → tcp:127.0.0.1:9443 + - proxy-quic: udp:0.0.0.0:9443 → udp:127.0.0.1:9443 +- **APISIX etcd**: apisix-etcd (incus 컨테이너, 10.179.99.101) +- **OVN 네트워크**: ovn1 (10.165.246.0/24) — hp2↔kr2 간 오버레이 +- **DNS rebind 예외**: inouter.com (OpenWrt dnsmasq) +- 공인 IP `220.120.65.245`는 OpenWrt 라우터의 IP + ## 네트워크 대역 네트워크 대역: 100.0.0.0/8 (Tailscale VPN), 10.253.0.0/16 (incus-jp1 내부), 10.19.0.0/16 (incus-kr1 내부), 10.179.99.0/24 (incus-kr2 내부), 10.42.0.0/16 (k8s 파드), 10.43.0.0/16 (k8s 서비스 ClusterIP), 172.17.0.0/16 (Docker 브릿지, 무시), 192.168.9.0/24 (kaffa 로컬 LAN)