- APISIX 서울: incus 컨테이너 → K3s apisix ns (hostNetwork 3노드) 이전 반영 - 트래픽 흐름: HAProxy → hostNetwork :9080/:9443 (NodePort 아님) 정정 - 서비스 테이블 전면 갱신: 실제 K3s 파드/서비스 기반 - anvil/ironclad 컴포넌트 상세 (nginx, php-fpm, redis, proxysql 등) - gitea: postgresql + valkey 구성 - vault: HA 3노드 + agent-injector + mcp-server - openmemory: mcp, ui, qdrant - tools ns: n8n, pgcat, bunnycdn-mcp, cfb-manager, cloud-api-emulator 추가 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
8.4 KiB
title, updated, tags
| title | updated | tags | ||||
|---|---|---|---|---|---|---|
| 인프라 호스트 및 네트워크 | 2026-03-18 |
|
SSH 접속 정보
인프라 호스트 SSH 접속 정보: incus-jp1 (공인 42.125.196.116, Tailscale 100.109.123.1), incus-kr1 (공인 220.120.65.245, Tailscale 100.84.111.28), incus-hp2 (Tailscale 100.100.52.34), osaka(gw) (ssh root@100.108.39.107, 공인 172.233.93.180), Synology NAS (SSH 불가, Tailscale 100.126.100.82)
서버 상세
| SSH 호스트 | Tailscale IP | 역할 | 비고 |
|---|---|---|---|
| apisix-osaka | 100.108.39.107 | apisix API Gateway (오사카) | SSH 직접 접속 |
| 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 → APISIX hostNetwork 9080/9443 (3노드 roundrobin) |
| 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 |
| synology | 100.126.100.82 | NAS (시놀로지) |
서울 K3s 클러스터
서울존 3대(hp2, kr1, kr2)를 K3s v1.34.5+k3s1 클러스터로 구성. 모두 control-plane 역할.
| 노드 | LAN IP | OS |
|---|---|---|
| incus-hp2 | 192.168.9.134 | Debian 13 (trixie) |
| incus-kr1 | 192.168.9.214 | Debian 13 (trixie) |
| incus-kr2 | 192.168.9.135 | Debian 13 (trixie) |
주요 네임스페이스: anvil, apisix, argocd, cert-manager, db, gitea, ironclad, kroki, longhorn-system, openmemory, registry, system-upgrade, tools, vault
트래픽 흐름: 외부 → OpenWrt HAProxy (80/443) → APISIX hostNetwork (9080/9443, 3노드) → K3s 서비스 → pods
서비스 위치
| 서비스 | 위치 | 접근 방법 |
|---|---|---|
| apisix (오사카) | apisix-osaka (Linode, Docker) | SSH / Admin API |
| apisix (서울) | K3s 클러스터 (apisix ns, hostNetwork 3노드) | kubectl / Admin API (ClusterIP 10.43.70.216:9180) |
| Anvil | K3s 클러스터 (anvil ns): nginx(x2), php-fpm(x5), redis, ssh-server, proxysql | kubectl |
| ArgoCD | K3s 클러스터 (argocd ns) | kubectl / NodePort 30080 |
| cert-manager | K3s 클러스터 (cert-manager ns) | kubectl |
| gitea | K3s 클러스터 (gitea ns): gitea, postgresql, valkey | kubectl, gitea.anvil.it.com |
| Ironclad | K3s 클러스터 (ironclad ns): nginx, php-fpm, redis, ssh-server, proxysql | kubectl / NodePort 30297 |
| Kroki | K3s 클러스터 (kroki ns) | kubectl |
| Longhorn | K3s 클러스터 (longhorn-system ns): 분산 스토리지 | kubectl |
| n8n | K3s 클러스터 (tools ns) | kubectl |
| NocoDB | K3s 클러스터 (tools ns) | kubectl, nocodb.inouter.com |
| OpenMemory | K3s 클러스터 (openmemory ns): mcp, ui, qdrant | kubectl |
| PgCat | K3s 클러스터 (tools ns): PostgreSQL pooler | kubectl |
| ProxySQL | K3s 클러스터 (db ns) | kubectl |
| Registry | K3s 클러스터 (registry ns) | kubectl |
| vault | K3s 클러스터 (vault ns): HA 3노드(vault-0/1/2), agent-injector, mcp-server | kubectl / vault CLI / MCP |
| Vault (legacy) | sandbox-tokyo (Docker, vault-prod) | vault CLI |
| WireGuard | sandbox-tokyo (wg-easy Docker) | |
| BunnyCDN MCP | K3s 클러스터 (tools ns) | kubectl |
| cfb-manager | K3s 클러스터 (tools ns): CrowdSec-Firewall-Bouncer 관리 | kubectl |
| cloud-api-emulator | K3s 클러스터 (tools ns): Linode/Vultr/Namecheap API | kubectl |
| Prometheus, Grafana | jp1 (monitoring 프로젝트) | incus exec --project monitoring |
| 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 |
| BunnyCDN | 외부 SaaS | BunnyCDN MCP 서버 / API |
| backup | kr2 → NAS → R2 | systemd timer, rclone |
Incus 프로젝트
- 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) ← 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
외부 트래픽 흐름:
인터넷 → OpenWrt HAProxy(:80/:443) → APISIX hostNetwork(:9080/:9443, 3노드 roundrobin) → K3s svc → pods
내부 트래픽 흐름:
LAN → K3s/Traefik(192.168.9.x:80/443) → pods 직접
- 게이트웨이: 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 차단
- 스크립트:
/etc/cdn-filter-update.sh - nftables:
/etc/nftables.d/10-cdn-filter.nft - 크론: 매일 04:00 업데이트
- 스크립트:
- 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.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 클러스터 노드
| 노드명 | K3s Internal IP | 역할 | 호스트 위치 |
|---|---|---|---|
| incus-hp2 | 192.168.9.134 | control-plane | — |
| incus-kr1 | 192.168.9.214 | control-plane | 서울 |
| incus-kr2 | 192.168.9.135 | control-plane | 서울 |
IPv6 prefix
jp1 prefix는 2400:8905:e002:1d02
web 컨테이너
web 컨테이너 (incus agents 프로젝트, IP 10.253.100.159): Caddy :80으로 /var/www/sites 서빙, btrfs-pool/shared-sites 볼륨을 stamp과 공유. ironclad.it.com 랜딩페이지 서빙 용도.
대시보드
사용 중인 대시보드는 dashboard.inouter.com(내부용)
Xray
Xray VLESS+XHTTP 스텔스 구성
네트워크 정책
실사용: 국내 트래픽은 직접, 해외는 프록시, 광고는 차단