From 25b508b11df317457cd3b23a2a637a3f8d4867a8 Mon Sep 17 00:00:00 2001 From: kappa Date: Wed, 18 Mar 2026 12:23:29 +0900 Subject: [PATCH] =?UTF-8?q?infra:=20=EC=8B=A4=EC=A0=9C=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20=EC=83=81=ED=83=9C=EC=99=80=20=EB=8F=99=EA=B8=B0?= =?UTF-8?q?=ED=99=94=20(2026-03-18)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - relay4wd Tailscale IP 수정 (100.120.61.54 → 100.103.161.4), APISIX 3.15.0 - apisix-osaka Docker APISIX 3.15.0 + etcd v3.5.11 버전 추가 - jp1 agents 프로젝트 추가, 전체 컨테이너 목록 기재 - kr1/kr2/hp2 Incus 컨테이너 목록 추가 - OpenWrt HAProxy 3노드 roundrobin 구성으로 수정 - 네트워크 대역 정정 (kr1: 10.100.3.0/24, hp2: 10.100.2.0/24) - K3s 네임스페이스 전체 목록 갱신 - sandbox-tokyo 실행 서비스 (vault-prod, wg-easy) 추가 - 서비스 위치 테이블에 ironclad, gitea, kroki, longhorn, openmemory, registry, vault 추가 Co-Authored-By: Claude Opus 4.6 (1M context) --- infra/apisix.md | 3 +- infra/infra-hosts.md | 71 +++++++++++++++++++++++++++++++------------- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/infra/apisix.md b/infra/apisix.md index b8890f1..55e8a7e 100644 --- a/infra/apisix.md +++ b/infra/apisix.md @@ -13,7 +13,7 @@ updated: 2026-03-18 ### 서울 relay (relay4wd) - 용도: 포트 포워딩 게이트웨이 -- 호스트: relay4wd (AWS Lightsail, Tailscale 100.103.161.4, 공인 52.79.45.166), Docker APISIX 3.15.0 +- 호스트: relay4wd (AWS Lightsail, Tailscale 100.103.161.4, 공인 52.79.45.166, Debian 12), Docker APISIX 3.15.0, SSH: admin + lightsail.pem - Admin API: `http://100.103.161.4:9180` (Tailscale 100.64.0.0/10에서만 접근 가능) - Admin Key: `edd1c9f034335f136f87ad84b625c8f1` - etcd: incus-jp1 db 프로젝트 `etcd-1` (10.253.102.11:2379), prefix `/apisix-sandbox` @@ -33,6 +33,7 @@ updated: 2026-03-18 BunnyCDN(inouter, ID 5316471) → apisix-osaka(172.233.93.180) → 백엔드 ``` - 용도: Ironclad 인프라 서비스 (ironclad.it.com, n8n, twilio 등) +- Docker: APISIX 3.15.0 (waf-apisix) + etcd v3.5.11 (waf-etcd) - 보안: SafeLine WAF + CrowdSec 연동 - upstream: incus-jp1 내부(10.253.x), K3s Traefik diff --git a/infra/infra-hosts.md b/infra/infra-hosts.md index b222c05..e11645e 100644 --- a/infra/infra-hosts.md +++ b/infra/infra-hosts.md @@ -13,13 +13,13 @@ tags: [infra, network, kr-zone, openwrt] | SSH 호스트 | Tailscale IP | 역할 | 비고 | |-----------|-------------|------|------| | apisix-osaka | 100.108.39.107 | [[apisix]] API Gateway (오사카) | SSH 직접 접속 | -| incus-jp1 | 100.109.123.1 | Incus 호스트 (도쿄) | monitoring, db, default 프로젝트 | +| incus-jp1 | 100.109.123.1 | Incus 호스트 (도쿄) | agents, db, default, monitoring 프로젝트 | | incus-kr1 | 100.84.111.28 | Incus+K3s 호스트 (서울) | default, inbest 프로젝트, K3s control-plane (LAN 192.168.9.214) | | incus-kr2 | 100.119.109.41 | Incus+K3s 호스트 (서울) | default, inbest 프로젝트, K3s control-plane (LAN 192.168.9.135) | | incus-hp2 | 100.100.52.34 | Incus+K3s 호스트 (서울) | Xeon E5-2670 32코어, 188GB RAM, K3s control-plane (LAN 192.168.9.134), default, inbest 프로젝트 | | openwrt-gw | 100.66.60.66 | OpenWrt 라우터 (서울) | HAProxy: 80/443 → K3s NodePort → APISIX | -| sandbox-tokyo | 100.79.87.48 | 테스트 서버 (도쿄, Linode) | | -| relay4wd | 100.103.161.4 | APISIX Gateway (서울, AWS Lightsail) | inbest 전용, Docker APISIX 3.15.0, Debian 12, nano $5/월 | +| sandbox-tokyo | 100.79.87.48 | 테스트 서버 (도쿄, Linode) | vault-prod, wg-easy, nginx-tcp-proxy (Docker) | +| relay4wd | 100.103.161.4 | APISIX Gateway (서울, AWS Lightsail) | inbest 전용, Docker APISIX 3.15.0, Debian 12, nano $5/월, SSH: admin + lightsail.pem | | safeline-osaka | 100.100.212.6 | SafeLine WAF (오사카, Linode) | | | synology | 100.126.100.82 | NAS (시놀로지) | | @@ -33,7 +33,7 @@ tags: [infra, network, kr-zone, openwrt] | incus-kr1 | 192.168.9.214 | Debian 13 (trixie) | | incus-kr2 | 192.168.9.135 | Debian 13 (trixie) | -주요 네임스페이스: anvil, apisix, argocd, cert-manager, db +주요 네임스페이스: anvil, apisix, argocd, cert-manager, db, gitea, ironclad, kroki, longhorn-system, openmemory, registry, system-upgrade, tools, vault 트래픽 흐름: 외부 → OpenWrt HAProxy (80/443) → K3s NodePort (32020/30675) → APISIX Gateway → 서비스 @@ -52,44 +52,73 @@ tags: [infra, network, kr-zone, openwrt] | DB 서버 | jp1 (db) | incus exec --project db | | DB (분산) | etcd+mariadb+postgres 각 서울 노드 Incus 컨테이너 | incus exec | | etcd (relay4wd용) | jp1 (db), etcd-1 (10.253.102.11) | etcd 2379 | -| [[vault]] | 인프라 내부 | vault CLI / MCP | -| [[gitea]] | 자체 호스팅 (gitea.anvil.it.com) | git push → Gitea Act Runner | +| Ironclad | K3s 클러스터 (서울, ironclad ns) | kubectl | +| [[gitea]] | K3s 클러스터 (서울, gitea ns) | kubectl, gitea.anvil.it.com | +| Kroki | K3s 클러스터 (서울, kroki ns) | kubectl | +| Longhorn | K3s 클러스터 (서울, longhorn-system ns) | kubectl | +| OpenMemory | K3s 클러스터 (서울, openmemory ns) | kubectl | +| Registry | K3s 클러스터 (서울, registry ns) | kubectl | +| [[vault]] | K3s 클러스터 (서울, vault ns) + sandbox-tokyo (vault-prod Docker) | kubectl / vault CLI / MCP | +| Vault (prod) | sandbox-tokyo (Docker) | vault CLI | +| WireGuard | sandbox-tokyo (wg-easy Docker) | | | BunnyCDN | 외부 SaaS | BunnyCDN MCP 서버 / API | | [[backup]] | kr2 → NAS → R2 | systemd timer, rclone | ## Incus 프로젝트 -- **jp1**: monitoring, db, default +- **jp1**: agents, db, default, monitoring - **kr1**: default, inbest - **kr2**: default, inbest - **hp2**: default, inbest +### jp1 컨테이너 + +**agents 프로젝트**: anvil, awl, blacksmith, cloak, courier, flux, forge, irondesk, irondesk-openmemory, openclaw, rabbitmq, smelt, stamp, tally, web + +**db 프로젝트**: etcd-1 (10.253.102.11), mariadb-1 (10.253.101.133), mariadb-2 (10.253.103.48), mariadb-3 (10.253.100.132), postgres-1 (10.253.102.35), postgres-2 (10.253.101.173), postgres-3 (10.253.103.116) + +**default 프로젝트**: baserow, crowdsec (10.253.100.240), cs-cf-worker-bouncer, dev-web, gitea-runner, hey, iac-route, infra-tool, juice-shop, k8s, pricing-api, ssh-test, sshpiper, telegram-web-client, tor-server, vaultwarden, voice-api + +**monitoring 프로젝트**: grafana (10.253.103.199), prometheus (10.253.100.193) + +### kr1 컨테이너 + +**default 프로젝트**: etcd (10.100.3.7), jarvis (10.100.3.211), mariadb-2 (10.100.3.64), postgres-2 (10.100.3.185), vaultwarden (10.100.3.246) + +**inbest 프로젝트**: mysql55, nginx, php5, php8, php52, php72, phpmyadmin, ssh + +### kr2 컨테이너 + +**default 프로젝트**: etcd (10.100.1.198), mariadb-3 (10.100.1.162), postgres-3 (10.100.1.83), safeline (10.100.1.204), cloudflared (10.100.1.95) + +**inbest 프로젝트**: mariadb10, nginx, php5, php8, phpmyadmin, sftp + +### hp2 컨테이너 + +**default 프로젝트**: etcd (10.100.2.11), mariadb-1 (10.100.2.234), postgres-1 (10.100.2.5), trader (10.100.2.9) + ## KR존 네트워크 토폴로지 ``` 인터넷 └── OpenWrt 라우터 (공인 IP: 220.120.65.245, 내부: 192.168.9.1) - ├── incus-kr1 (192.168.9.214) - ├── incus-kr2 (192.168.9.135) + ├── incus-kr1 (192.168.9.214) ← K3s control-plane + ├── incus-kr2 (192.168.9.135, eno1 DHCP 192.168.9.140) ← K3s control-plane └── 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 + 인터넷 → OpenWrt HAProxy(:80/:443) → 3노드 roundrobin(:9080/:9443) → APISIX → K3s → 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 +- **게이트웨이**: OpenWrt 라우터 (root@192.168.9.1, SSH user: root) +- **OpenWrt HAProxy** (hp2 단독이 아닌 3노드 로드밸런싱): + - frontend ft_http :80 → backend bk_apisix_http (roundrobin) + - frontend ft_https :443 → backend bk_apisix_https (roundrobin) + - backend 서버: hp2(192.168.9.134:9080/9443), kr1(192.168.9.214:9080/9443), kr2(192.168.9.135:9080/9443) + - stats: :9999 (admin/admin) - **APISIX etcd**: apisix-etcd (incus 컨테이너, 10.179.99.101) - **OVN 네트워크**: ovn1 (10.165.246.0/24) — hp2↔kr2 간 오버레이 - **CDN IP 필터**: BunnyCDN + Cloudflare IP만 80/443 허용, 그 외 WAN 차단 @@ -101,7 +130,7 @@ tags: [infra, network, kr-zone, openwrt] ## 네트워크 대역 -네트워크 대역: 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.100.1.0/24 (inbest LAN, OpenWrt 광고), 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) +네트워크 대역: 100.0.0.0/8 (Tailscale VPN), 10.253.0.0/16 (incus-jp1 내부), 10.100.3.0/24 (incus-kr1 incusbr0), 10.100.1.0/24 (incus-kr2 incusbr0), 10.100.2.0/24 (incus-hp2 incusbr0), 10.179.99.0/24 (incus-kr2 APISIX 전용), 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) ## K3s 클러스터 노드