From 192a6772852ea947a52827b2cb58638884a17f2f Mon Sep 17 00:00:00 2001 From: heimdall Date: Thu, 9 Apr 2026 02:18:26 +0000 Subject: [PATCH] =?UTF-8?q?infra-hosts:=202026-04-09=20=EC=A0=95=ED=95=A9?= =?UTF-8?q?=EC=84=B1=20=EC=A0=90=EA=B2=80=20=E2=80=94=20Incus=203=ED=98=B8?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=A0=84=EC=88=98=20=EA=B0=B1=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Helm 릴리스 9개 → 18개로 확장 (apisix-ingress, metallb, n8n, nfs-provisioner, sftpgo, sshpiper, synology-iscsi, traefik, vector, vlogs, vm-stack 추가). nfs-provisioner status=failed 명시 - ArgoCD Applications 10개 → 5개로 정정 (anvil/ironclad/n8n/nocodb/pgcat/cloud-api-emulator 제거, smtp-relay 추가). 정확한 ns/repo 반영 - Vault 위치 정정: K3s vault ns → jp1 incus default 컨테이너 vault (10.253.101.58) - Incus 컨테이너 전수 갱신: * jp1 default: etcd/socks5-proxy/netbis-cf-bouncer/vault 신규 추가, baserow/iac-route STOPPED, vaultwarden 제거 확인 * kr1 default: etcd 제거, postgres-2 추가 * kr2 default: etcd 제거, cloudflared가 inbest로 이동, postgres-3 추가 * hp2 default: etcd 제거, anomaly-detect 추가 * hp2 inbest: 빈 프로젝트로 잔존 명시 - 호스트 자원/스토리지 풀 표 추가 (jp1 btrfs, kr1/kr2 dir, hp2 btrfs+pve-root) - PgCat ns: tools → db - BunnyCDN MCP ns: tools → mcp, namecheap-api/vultr-api ns: tools → api, smtp-relay ns: mail - 주요 네임스페이스 라이브 기준 갱신 (anvil/ironclad/system-upgrade 삭제, 신규 ns 다수 추가) --- infra/infra-hosts.md | 148 +++++++++++++++++++++++++++++-------------- 1 file changed, 99 insertions(+), 49 deletions(-) diff --git a/infra/infra-hosts.md b/infra/infra-hosts.md index faed749..d4afd4b 100644 --- a/infra/infra-hosts.md +++ b/infra/infra-hosts.md @@ -1,6 +1,6 @@ --- title: 인프라 호스트 및 네트워크 -updated: 2026-04-09 tailnet 감사 — openwrt-gw Patroni HAProxy 명시, archive 섹션 추가 +updated: 2026-04-09 정합성 점검 — Incus 3호스트 라이브 전수, ArgoCD/Helm/Vault/etcd/anomaly-detect drift 정리 tags: [infra, network, kr-zone, openwrt] --- @@ -32,7 +32,9 @@ 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, gitea, ironclad, kroki, longhorn-system, monitoring, mq, openmemory, rabbitmq-system, safeline, system-upgrade, tools, vault +주요 네임스페이스 (2026-04-09 라이브): api, apisix, argocd, cert-manager, db, democratic-csi, gitea, juiceshop, kroki, kube-system, logging, longhorn-system, mail, mcp, metallb-system, monitoring, mq, n8n, nfs-provisioner, openmemory, outline, rabbitmq-system, safeline, searxng, sftpgo, sshpiper, teleport, test, tools, vault(빈 ns, 서비스만 잔존) + +> anvil/ironclad ns는 삭제됨. system-upgrade ns도 현재 없음. vault ns는 빈 상태로 ClusterIP 서비스(`vault-external`)만 잔존 — 실제 Vault 서버는 jp1 incus 컨테이너로 이전됨 (아래 "서비스 위치" 참조). 게이트웨이: Traefik (메인) + APISIX (SafeLine WAF 전용), 2026-03-25 전환 - Traefik DaemonSet, MetalLB LoadBalancer 192.168.9.53 + Gateway API @@ -47,38 +49,48 @@ tags: [infra, network, kr-zone, openwrt] - SafeLine 실시간: SafeLine 차단 → PG NOTIFY → safeline-listener(kr2) → CrowdSec(:8088) → 즉시 IP 밴 - K3s kine: K3s → HAProxy(192.168.9.1:5432) → Patroni Leader PostgreSQL -### Helm 릴리스 +### Helm 릴리스 (2026-04-09 `helm ls -A` 기준) | Release | Namespace | Chart | App Version | |---------|-----------|-------|-------------| | apisix | apisix | apisix-2.13.0 | 3.15.0 | -| argocd | argocd | argo-cd-9.4.14 | v3.3.4 | +| apisix-ingress-controller | apisix | apisix-ingress-controller-1.1.2 | 2.0.1 | +| argocd | argocd | argo-cd-9.4.16 | v3.3.5 | | cert-manager | cert-manager | cert-manager-v1.20.0 | v1.20.0 | | gitea | gitea | gitea-12.5.0 | 1.25.4 | | longhorn | longhorn-system | longhorn-1.8.2 | v1.8.2 | -| reflector | kube-system | reflector-10.0.18 | 10.0.18 | +| metallb | metallb-system | metallb-0.15.3 | v0.15.3 | +| n8n | n8n | n8n-2.0.1 | 1.122.4 | +| nfs-provisioner | nfs-provisioner | nfs-subdir-external-provisioner-4.0.18 | 4.0.2 | +| reflector | kube-system | reflector-10.0.21 | 10.0.21 | | safeline | safeline | safeline-10.1.0 | 9.3.2 | -| rabbitmq-operator | rabbitmq-system | (kubectl apply) | - | -| vault | vault | vault-0.32.0 | 1.21.2 | +| sftpgo | sftpgo | sftpgo-0.44.0 | 2.7.1 | +| sshpiper | sshpiper | sshpiper-0.4.6 | v1.5.0 | +| synology-iscsi | democratic-csi | democratic-csi-0.15.1 | 1.0 | +| traefik | kube-system | traefik-39.0.6 | v3.6.11 | +| vector | logging | vector-0.51.0 | 0.54.0-distroless-libc | +| vlogs | logging | victoria-logs-single-0.11.31 | v1.49.0 | +| vm-stack | monitoring | victoria-metrics-k8s-stack-0.72.6 | v1.139.0 | -### ArgoCD Applications +> **주의**: `nfs-provisioner` Helm 릴리스 status=`failed` (revision 2, 2026-04-05). 실제 파드는 정상 Running이라 동작은 영향 없음. `helm history` 확인 후 정리 필요. +> +> Vault Helm 릴리스 제거됨. RabbitMQ Operator는 `rabbitmq-system` ns에서 kubectl apply 직배포 (Helm 미사용). + +### ArgoCD Applications (2026-04-09 라이브) | App | Namespace | Repo | |-----|-----------|------| -| anvil | anvil | infra-apps (anvil-hosting) | -| ironclad | ironclad | infra-apps | -| bunnycdn-mcp | tools | bunnycdn-mcp | -| cf-bouncer-manager | tools | cf-bouncer-manager | -| cloud-api-emulator | tools | cloud-api-emulator | -| n8n | tools | infra-apps | -| namecheap-api | tools | namecheap-api | -| nocodb | tools | infra-apps | -| pgcat | tools | infra-apps | -| vultr-api | tools | vultr-api | +| bunnycdn-mcp | mcp | gitea.inouter.com/kaffa/bunnycdn-mcp (path: k8s) | +| cf-bouncer-manager | tools | gitea.inouter.com/kaffa/cf-bouncer-manager (path: k8s) | +| namecheap-api | api | gitea.inouter.com/kaffa/namecheap-api (path: k8s) | +| smtp-relay | mail | gitea.inouter.com/kaffa/smtp-relay (path: k8s) | +| vultr-api | api | gitea.inouter.com/kaffa/vultr-api (path: k8s) | + +> 이전 등록되어 있던 anvil, ironclad, n8n, nocodb, pgcat, cloud-api-emulator는 모두 ArgoCD에서 제거됨. anvil/ironclad/cloud-api-emulator는 ns 자체가 삭제, n8n은 Helm 릴리스로 전환, nocodb/pgcat은 kubectl 직접 관리로 전환. ### kubectl 직접 관리 (Helm/ArgoCD 미적용) -db, kroki, mq (RabbitmqCluster CR), openmemory, system-upgrade +db (proxysql, pgcat), kroki, mq (RabbitmqCluster CR), openmemory (mcp/ui/qdrant), tools (nocodb), juiceshop, searxng, teleport, test ### TCP 튜닝 (3노드 공통) @@ -90,64 +102,102 @@ db, kroki, mq (RabbitmqCluster CR), openmemory, system-upgrade | 서비스 | 위치 | 접근 방법 | |--------|------|-----------| | [[apisix]] (오사카) | apisix-osaka (Linode, Docker) | SSH / Admin API | -| [[apisix]] (서울) | K3s 클러스터 (apisix ns, hostNetwork 3노드) | kubectl / Admin API (ClusterIP 10.43.70.216:9180, allow: 127.0.0.1/24 + 100.64.0.0/10 + 192.168.9.0/24 + 10.42.0.0/16) | -| Anvil | K3s 클러스터 (anvil ns): nginx(x2), php-fpm(x5), redis, ssh-server, proxysql | kubectl | +| [[apisix]] (서울) | K3s 클러스터 (apisix ns, Deployment x2 + ingress-controller + etcd 3/3) | kubectl / Admin API (ClusterIP 10.43.70.216:9180, allow: 127.0.0.1/24 + 100.64.0.0/10 + 192.168.9.0/24 + 10.42.0.0/16) | | ArgoCD | K3s 클러스터 (argocd ns) | kubectl / NodePort 30080 | | cert-manager | K3s 클러스터 (cert-manager ns) | kubectl | | [[gitea]] | K3s 클러스터 (gitea ns): gitea, postgresql, valkey | kubectl, gitea.inouter.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): 분산 스토리지 v1.8.2 | kubectl | -| n8n | K3s 클러스터 (tools ns) | kubectl | -| NocoDB | K3s 클러스터 (tools ns) | kubectl, nocodb.inouter.com | +| n8n | K3s 클러스터 (n8n ns, Helm) | kubectl | +| NocoDB | K3s 클러스터 (tools ns, kubectl 직접) | kubectl, nocodb.inouter.com | | OpenMemory | K3s 클러스터 (openmemory ns): mcp, ui, qdrant | kubectl | -| PgCat | K3s 클러스터 (tools ns): PostgreSQL pooler | kubectl | +| Outline | K3s 클러스터 (outline ns): outline + redis | kubectl, outline.inouter.com | +| PgCat | K3s 클러스터 (db ns): PostgreSQL pooler | kubectl | | ProxySQL | K3s 클러스터 (db ns) | kubectl | -| SafeLine WAF | K3s 클러스터 (safeline ns): detector, mgt, fvm, chaos, luigi, pg | kubectl, safeline.inouter.com | -| [[vault]] | K3s 클러스터 (vault ns): HA 3노드(vault-0/1/2), agent-injector, mcp-server | kubectl / vault CLI / MCP | -| 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 | +| SafeLine WAF | K3s 클러스터 (safeline ns): detector, mgt, fvm, chaos, luigi, database | kubectl, safeline.inouter.com | +| [[vault]] | jp1 incus default 프로젝트 컨테이너 `vault` (10.253.101.58, 2026-03-24~) | incus exec / MCP / Vault API. K3s vault ns는 빈 상태 (`vault-external` ClusterIP만 잔존, 정리 필요) | +| BunnyCDN MCP | K3s 클러스터 (mcp ns, ArgoCD) | kubectl | +| cfb-manager | K3s 클러스터 (tools ns, ArgoCD `cf-bouncer-manager`): CrowdSec-Firewall-Bouncer 관리 | kubectl | +| Namecheap API | K3s 클러스터 (api ns, ArgoCD) | kubectl | +| Vultr API | K3s 클러스터 (api ns, ArgoCD) | kubectl | +| smtp-relay | K3s 클러스터 (mail ns, ArgoCD) | kubectl | +| sftpgo | K3s 클러스터 (sftpgo ns, Helm) | kubectl, SFTP 22 | +| sshpiper | K3s 클러스터 (sshpiper ns, Helm) | kubectl | +| Teleport | K3s 클러스터 (teleport ns): auth + proxy | kubectl | +| searxng | K3s 클러스터 (searxng ns) | kubectl | +| juice-shop | K3s 클러스터 (juiceshop ns, 별도 jp1 default 프로젝트에도 컨테이너 존재) | kubectl | +| Teleport / sftpgo / sshpiper / searxng / Outline | K3s 클러스터 (각자 전용 ns) | kubectl | +| anomaly-detect | hp2 incus default 프로젝트 컨테이너 `anomaly-detect` (10.100.2.164, 2026-04-08~) | incus exec | +| Prometheus, Grafana (인프라 metric 백업) | jp1 monitoring 프로젝트 (Grafana 10.253.103.199, Prometheus 10.253.100.193) — 일상 운영은 K3s VictoriaMetrics 스택 사용 | incus exec --project monitoring | +| DB 서버 (jp1 db 프로젝트) | jp1 db 프로젝트: etcd-1 | incus exec --project db | +| DB (분산 mariadb/postgres) | mariadb-1/postgres-1 (hp2), mariadb-2/postgres-2 (kr1), mariadb-3/postgres-3 (kr2) — 각 서울 노드 default 프로젝트 | incus exec | +| etcd (relay4wd용) | jp1 db 프로젝트: etcd-1 (10.253.102.11) | etcd 2379 | +| etcd (jp1 default) | jp1 default 프로젝트: etcd (10.253.101.233, 2026-04-06~) — 용도 별도 확인 필요 | incus exec | | BunnyCDN | 외부 SaaS | BunnyCDN MCP 서버 / API | -| RabbitMQ | K3s 클러스터 (mq ns): RabbitmqCluster Operator, ironclad vhost | kubectl, Traefik TCPRoute 5672 | +| RabbitMQ | K3s 클러스터 (mq ns): RabbitmqCluster Operator + server-0 | kubectl, Traefik TCPRoute 5672 | | VictoriaMetrics | K3s 클러스터 (monitoring ns): vm-stack (vmsingle 2GB, vmagent 1GB, vmalert, Grafana) | grafana.inouter.com (admin/ironclad2026) | | [[backup]] | kr2 → NAS → R2 | systemd timer, rclone | -## Incus 프로젝트 +## Incus 프로젝트 (2026-04-09 라이브 전수) -- **jp1**: agents, db, default, monitoring -- **kr1**: default -- **kr2**: default, inbest -- **hp2**: default, inbest +3호스트 모두 SSH 접속(`ssh incus-jp1/kr2/hp2`, kaffa 계정 incus-admin 그룹) 후 `incus list --all-projects -f csv -c enpstc4`로 수집. + +호스트별 프로젝트 + 인스턴스 카운트: + +| 호스트 | 프로젝트 | 인스턴스 수 | 비고 | +|--------|---------|------------|------| +| jp1 | agents | 15 | 모두 RUNNING | +| jp1 | db | 1 | etcd-1 | +| jp1 | default | 20 | RUNNING 18 + STOPPED 2 (baserow, iac-route) | +| jp1 | monitoring | 2 | grafana, prometheus | +| kr1 | default | 4 | brokkr, heimdall, mariadb-2, postgres-2 | +| kr2 | default | 2 | mariadb-3, postgres-3 | +| kr2 | inbest | 7 | cloudflared 포함 | +| hp2 | default | 5 | anomaly-detect 포함 | +| hp2 | inbest | 0 | 프로젝트만 존재, 인스턴스 없음 | + +스토리지 풀: jp1=`btrfs-pool` (btrfs, /dev/sda1 268G/109G used), kr1=`default` (dir, NVMe 937G/115G used), kr2=`default` (dir, NVMe 937G/115G used), hp2=`default` (btrfs, `/dev/mapper/pve-root` 126G/63G used — Proxmox 잔재 LVM 레이아웃). + +호스트 자원: jp1=Xeon E5-2670 32core/31GiB, kr1=28core/62GiB+GTX 1080 Ti, kr2=Ryzen 9 6900HX 16core/30GiB, hp2=Xeon E5-2670 32core/188GiB. ### jp1 컨테이너 -**agents 프로젝트**: anvil, awl, blacksmith, cloak, courier, flux, forge, irondesk, irondesk-openmemory, openclaw, rabbitmq, smelt, stamp, tally, web +**agents 프로젝트** (15): anvil, awl, blacksmith, cloak, courier, flux, forge, irondesk, irondesk-openmemory, openclaw, rabbitmq, smelt, stamp, tally, web -**db 프로젝트**: etcd-1 (10.253.102.11) +**db 프로젝트** (1): etcd-1 (10.253.102.11) -**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 +**default 프로젝트** (20): +- RUNNING 컨테이너: crowdsec (10.253.100.240), cs-cf-worker-bouncer (10.253.100.131), dev-web (10.253.102.169), **etcd** (10.253.101.233, 2026-04-06 신규), hey (10.253.103.80), infra-tool (10.253.100.183), **netbis-cf-bouncer** (10.253.103.33, 2026-04-03 신규), pricing-api (10.253.102.142), **socks5-proxy** (10.253.102.12, 2026-03-21 신규), ssh-test (10.253.102.82), sshpiper (10.253.100.34), telegram-web-client (10.253.102.124), tor-server (10.253.101.178), **vault** (10.253.101.58, 2026-03-24 신규 — K3s 이전 후 인프라 정본), voice-api (10.253.101.7) +- RUNNING VM: gitea-runner (10.253.103.203, +docker0), juice-shop (10.253.100.202, +docker0), k8s (10.253.103.124, +flannel/cni0) +- STOPPED: baserow (CONTAINER APP, 2026/01/05 마지막 시작), iac-route (CONTAINER, 2026/03/04) -**monitoring 프로젝트**: grafana (10.253.103.199), prometheus (10.253.100.193) +> **vaultwarden 컨테이너 제거됨** (이전 정본에는 있었음). 별도 확인 필요. +> +> 신규 추가된 `vault`, `socks5-proxy`, `netbis-cf-bouncer`, `etcd`(default proj)는 Obsidian의 별도 운영 문서가 아직 없을 수 있음 — 필요 시 `infra/` 하위에 추가. + +**monitoring 프로젝트** (2): grafana (10.253.103.199), prometheus (10.253.100.193) ### kr1 컨테이너 -**default 프로젝트**: brokkr (10.100.3.54), etcd (10.100.3.7), heimdall (10.100.3.92), mariadb-2 (10.100.3.64) +**default 프로젝트** (4): brokkr (10.100.3.54), heimdall (10.100.3.92), mariadb-2 (10.100.3.64), **postgres-2** (10.100.3.185) + +> 이전 정본의 `etcd (10.100.3.7)`는 라이브에 존재하지 않음. K3s kine이 Patroni로 이전된 시점(2026-04-05) 전후에 정리된 것으로 추정. **postgres-2**가 새로 추가됨 (Patroni HA 멤버 추정). ### kr2 컨테이너 -**default 프로젝트**: etcd (10.100.1.198), mariadb-3 (10.100.1.162), cloudflared (10.100.1.95) -- safeline VM: 셧다운 (K3s safeline ns로 이전, 삭제 예정) +**default 프로젝트** (2): mariadb-3 (10.100.1.162), **postgres-3** (10.100.1.83) -**inbest 프로젝트**: mariadb10, nginx, php5, php8, phpmyadmin, sftp +> 이전 정본의 `etcd (10.100.1.198)`, `cloudflared (10.100.1.95)`는 default에 없음. cloudflared는 **inbest 프로젝트로 이동**(아래). etcd는 제거됨. safeline VM 언급도 더 이상 유효하지 않음 (이미 삭제됨). + +**inbest 프로젝트** (7): **cloudflared** (10.100.1.95), mariadb10 (10.100.1.148), nginx (10.100.1.121), php5 (10.100.1.174), php8 (10.100.1.3), phpmyadmin (10.100.1.60), sftp (10.100.1.158) ### hp2 컨테이너 -**default 프로젝트**: etcd (10.100.2.11), jarvis (10.100.2.162), mariadb-1 (10.100.2.234), postgres-1 (10.100.2.5), trader (10.100.2.9) +**default 프로젝트** (5): **anomaly-detect** (10.100.2.164, 2026-04-08 신규), jarvis (10.100.2.162), mariadb-1 (10.100.2.234), postgres-1 (10.100.2.5), trader (10.100.2.9) + +> 이전 정본의 `etcd (10.100.2.11)`는 라이브에 없음. APISIX etcd가 K3s StatefulSet으로 통합된 시점(2026-04-06) 전후에 정리된 것으로 추정. **anomaly-detect**가 새로 추가됨. + +**inbest 프로젝트** (0): 프로젝트만 존재, 인스턴스 없음 (default profile만 사용 중). kr2 inbest와 페어 구성을 고려해 만들어둔 빈 프로젝트로 보임. ## GPU