edge gateway: "APISIX = SafeLine WAF 전용" 표현 정정

kappa 피드백 + kubectl 실측 기반 정정. 이전 기록의 "SafeLine WAF 전용 리버스
프록시" 또는 "SafeLine WAF 전용" 표현은 오해의 소지가 있음.

실측 사실 (2026-04-10 kubectl get svc + ApisixRoute + HTTPRoute):
- APISIX (svc apisix-gateway): MetalLB VIP 192.168.9.50, gateway 80/443 +
  admin 9180. 독립 LoadBalancer. Deployment replica 2.
  ApisixRoute 1건: juiceshop/juiceshop → juiceshop.keepanker.cv → juiceshop
  svc (chaitin-waf plugin 으로 SafeLine 통합 테스트)
- Traefik (svc traefik): MetalLB VIP 192.168.9.53, 80/443.
  HTTPRoute 14건 (argocd/gitea/grafana/n8n/nocodb/sftpgo/openmemory/searxng/
  kroki/safeline-mgt/vault-ui + api/namecheap + api/vultr + bunnycdn-mcp)
  + 5 legacy IngressRoute (vlogs/outline/vault-mcp/vault-mcp-http/bunnycdn-mcp)

→ **두 gateway 는 동등한 병렬 독립 LoadBalancer**. APISIX 는 Traefik 뒤의
리버스 프록시가 아니라 자체 MetalLB VIP 를 가진 별개 외부 인입 채널.
"SafeLine WAF 전용" 이 아니라, 2026-03-25 메인 라우팅이 Traefik 으로 이전된
이후 현재 APISIX route 가 SafeLine 테스트용 1건만 남은 상태일 뿐 — 범용
gateway 로 언제든 새 route 추가 가능.

정정 대상:
- infra/apisix.md — 서울 섹션 헤더/용도/축소 문구
- infra/infra-hosts.md — 게이트웨이 한 줄 요약
- infra/k3s-migration.md — 게이트웨이 열 + Phase 0 + Namespace 표
- infra/gateway-api.md — 전환 이력 2026-03-25 줄
- infra/crowdsec-safeline.md — waf-kr BunnyCDN Pull Zone 섹션 머리말

부수적으로 2026-04-10 에 발견된 heimdall kubectl 부재 문제 해결
(kubectl + helm + kubeconfig 복원) + tofu cloud-init 자동화 추가 —
commit bd5e4cb (ops-agents-tofu).
This commit is contained in:
kappa
2026-04-10 00:36:19 +09:00
parent ae696f3e33
commit fb5a34ebcc
5 changed files with 10 additions and 10 deletions

View File

@@ -43,11 +43,11 @@ BunnyCDN(iron-jp, ID 5555247) → apisix-osaka(172.233.93.180) → 백엔드
- 보안: SafeLine WAF + CrowdSec 연동 - 보안: SafeLine WAF + CrowdSec 연동
- upstream: incus-jp1 내부(10.253.x), K3s Traefik - upstream: incus-jp1 내부(10.253.x), K3s Traefik
### 서울 (K3s 새 클러스터, apisix 네임스페이스) — SafeLine WAF 전용 ### 서울 (K3s 새 클러스터, apisix 네임스페이스) — 독립 외부 인입 게이트웨이
``` ```
외부 → OpenWrt HAProxy(:9080/:9443) → MetalLB 192.168.9.50(80/443) → APISIX(replica 2) → K3s 서비스 외부 → OpenWrt HAProxy(:9080/:9443) → MetalLB 192.168.9.50(80/443) → APISIX(replica 2) → K3s 서비스
``` ```
- 용도: SafeLine WAF 전용 리버스 프록시 (메인 라우팅 Traefik으로 이전) - 용도: **Traefik(VIP 192.168.9.53)과 동등한 병렬 독립 LoadBalancer gateway**. "SafeLine WAF 전용" 이 아니라, 2026-03-25 에 메인 HTTP 라우팅 Traefik 으로 이전한 이후 현재 APISIX 에는 `juiceshop.keepanker.cv` 1건만 남아 있고 그것이 chaitin-waf 플러그인으로 SafeLine 통합 테스트 용도라 **결과적으로 현재만** SafeLine 테스트 전용처럼 보일 뿐 — 언제든 새 ApisixRoute 추가 가능한 범용 gateway.
- 클러스터: K3s 새 클러스터 (Supabase PostgreSQL 백엔드, kr2+kr1+hp2) - 클러스터: K3s 새 클러스터 (Supabase PostgreSQL 백엔드, kr2+kr1+hp2)
- 배포: K3s apisix 네임스페이스, **Deployment replica 2** (2026-04-04 HA 업그레이드) - 배포: K3s apisix 네임스페이스, **Deployment replica 2** (2026-04-04 HA 업그레이드)
- APISIX: 3.15.0-ubuntu - APISIX: 3.15.0-ubuntu
@@ -57,7 +57,7 @@ BunnyCDN(iron-jp, ID 5555247) → apisix-osaka(172.233.93.180) → 백엔드
- etcd: **K3s 내부 apisix-etcd StatefulSet 3 replicas** (Bitnami etcd 차트, Longhorn PVC 5Gi × 3), prefix `/apisix`. ClusterIP `apisix-etcd.apisix.svc.cluster.local:2379`. 외부 통합 etcd로 잠시 이전했다가(2026-04-06) Patroni와의 장애 격리 + 네트워크 단순화를 위해 K3s 내부로 복귀(2026-04-08). - etcd: **K3s 내부 apisix-etcd StatefulSet 3 replicas** (Bitnami etcd 차트, Longhorn PVC 5Gi × 3), prefix `/apisix`. ClusterIP `apisix-etcd.apisix.svc.cluster.local:2379`. 외부 통합 etcd로 잠시 이전했다가(2026-04-06) Patroni와의 장애 격리 + 네트워크 단순화를 위해 K3s 내부로 복귀(2026-04-08).
- Admin API: `apisix-admin` ClusterIP :9180 (`adminKey: edd1c9f034335f136f87ad84b625c8f1`). admin allow IPs: `127.0.0.1/24`, `10.42.0.0/16`(pod), `10.43.0.0/16`(svc), `192.168.9.0/24`(LAN), `100.64.0.0/10`(Tailscale) - Admin API: `apisix-admin` ClusterIP :9180 (`adminKey: edd1c9f034335f136f87ad84b625c8f1`). admin allow IPs: `127.0.0.1/24`, `10.42.0.0/16`(pod), `10.43.0.0/16`(svc), `192.168.9.0/24`(LAN), `100.64.0.0/10`(Tailscale)
- HAProxy: OpenWrt에서 :9080→192.168.9.50:80, :9443→192.168.9.50:443 (MetalLB) - HAProxy: OpenWrt에서 :9080→192.168.9.50:80, :9443→192.168.9.50:443 (MetalLB)
- 2026-03-25 메인 라우팅 역할을 Traefik으로 이전, APISIX는 SafeLine WAF 전용으로 축소 - 2026-03-25 메인 HTTP 라우팅을 Traefik 으로 이전. APISIX route 축소되어 현재 juiceshop 1건만 (SafeLine chaitin-waf 통합 테스트). **APISIX 자체는 여전히 독립 외부 LoadBalancer gateway — MetalLB VIP 별도 유지**
- 2026-04-08 ApisixRoute CRD 사용을 위해 ingress controller 복구 + K3s 내부 etcd 복귀 - 2026-04-08 ApisixRoute CRD 사용을 위해 ingress controller 복구 + K3s 내부 etcd 복귀
#### plugin_metadata (GatewayProxy CR로 관리) #### plugin_metadata (GatewayProxy CR로 관리)

View File

@@ -279,7 +279,7 @@ Kappa 계정용 `cs-cf-worker-bouncer`와 별도 컨테이너로 분리 운영.
## iron-kr-waf BunnyCDN Pull Zone (구 waf-kr) ## iron-kr-waf BunnyCDN Pull Zone (구 waf-kr)
APISIX SafeLine WAF 전용. APISIX 외부 인입 경로 (juiceshop SafeLine 통합 테스트 용도). APISIX 자체는 독립 LoadBalancer gateway (MetalLB 192.168.9.50) 이지 "SafeLine 전용" 이 아님 — 현재 1 route 가 SafeLine 용일 뿐.
| 항목 | 값 | | 항목 | 값 |
|------|-----| |------|-----|

View File

@@ -11,8 +11,8 @@ K3s 메인 라우팅을 Traefik이 담당 (2026-03-25 APISIX에서 전환).
### 전환 이력 ### 전환 이력
- 2026-03-21: K3s Ingress → Gateway API 전환 (기존 클러스터, Traefik v3.6.9) - 2026-03-21: K3s Ingress → Gateway API 전환 (기존 클러스터, Traefik v3.6.9)
- 2026-03-24: 새 클러스터(kr2)에서 APISIX + Ingress Controller 2.0으로 구성 - 2026-03-24: 새 클러스터(kr2)에서 APISIX + Ingress Controller 2.0으로 구성
- 2026-03-25: APISIX Ingress Controller의 Gateway API 플러그인 제한으로 **Traefik으로 교체** - 2026-03-25: APISIX Ingress Controller의 Gateway API 플러그인 제한으로 **메인 HTTP 라우팅을 Traefik 으로 교체**
- APISIX는 SafeLine WAF 전용 replica 1로 축소 - APISIX 여전히 독립 LoadBalancer (MetalLB VIP 192.168.9.50) 로 운영 중, 다만 route 는 `juiceshop.keepanker.cv` 1건만 남아 SafeLine chaitin-waf 플러그인 통합 테스트 용도. Traefik 과 동등한 병렬 gateway 로 언제든 새 route 추가 가능.
## Traefik 배포 (새 클러스터) ## Traefik 배포 (새 클러스터)

View File

@@ -36,7 +36,7 @@ tags: [infra, network, kr-zone, openwrt]
> anvil/ironclad ns는 삭제됨. system-upgrade ns도 현재 없음. vault ns는 빈 상태로 ClusterIP 서비스(`vault-external`)만 잔존 — 실제 Vault 서버는 jp1 incus 컨테이너로 이전됨 (아래 "서비스 위치" 참조). > anvil/ironclad ns는 삭제됨. system-upgrade ns도 현재 없음. vault ns는 빈 상태로 ClusterIP 서비스(`vault-external`)만 잔존 — 실제 Vault 서버는 jp1 incus 컨테이너로 이전됨 (아래 "서비스 위치" 참조).
게이트웨이: Traefik (메인) + APISIX (SafeLine WAF 전용), 2026-03-25 전환 게이트웨이: 두 독립 LoadBalancer 병렬 운영 — Traefik (MetalLB VIP 192.168.9.53, 메인 라우팅 14 HTTPRoute + 5 legacy IngressRoute) + APISIX (MetalLB VIP 192.168.9.50, 2026-03-25 축소 이후 `juiceshop.keepanker.cv` 1 route · chaitin-waf SafeLine 통합)
- Traefik DaemonSet, MetalLB LoadBalancer 192.168.9.53 + Gateway API - Traefik DaemonSet, MetalLB LoadBalancer 192.168.9.53 + Gateway API
- APISIX Deployment **replica 2**, MetalLB LoadBalancer 192.168.9.50, SafeLine WAF chaitin-waf 플러그인 연동, Admin API 수동 관리 - APISIX Deployment **replica 2**, MetalLB LoadBalancer 192.168.9.50, SafeLine WAF chaitin-waf 플러그인 연동, Admin API 수동 관리
- APISIX etcd: 통합 etcd 클러스터 사용 (K3s 내 StatefulSet 삭제, 2026-04-06). prefix `/apisix-seoul` - APISIX etcd: 통합 etcd 클러스터 사용 (K3s 내 StatefulSet 삭제, 2026-04-06). prefix `/apisix-seoul`

View File

@@ -35,7 +35,7 @@ tags: [k3s, migration, postgresql, supabase]
| Pod CIDR | 10.42.0.0/16 | | Pod CIDR | 10.42.0.0/16 |
| Service CIDR | 10.43.0.0/16 | | Service CIDR | 10.43.0.0/16 |
| tls-san | k3s.inouter.com, 192.168.9.135, 100.119.109.41 | | tls-san | k3s.inouter.com, 192.168.9.135, 100.119.109.41 |
| 게이트웨이 | Traefik (메인, DaemonSet LoadBalancer 192.168.9.53) + APISIX (SafeLine WAF 전용, LB 192.168.9.50) | | 게이트웨이 | 두 독립 LoadBalancer 병렬: Traefik (DaemonSet, MetalLB 192.168.9.53, 메인 HTTPRoute 라우팅) + APISIX (Deployment replica 2, MetalLB 192.168.9.50, 현재 juiceshop 1 route · chaitin-waf SafeLine 통합) |
| LB | MetalLB L2 (192.168.9.50-59), K3s ServiceLB 비활성화 | | LB | MetalLB L2 (192.168.9.50-59), K3s ServiceLB 비활성화 |
| 스토리지 | Longhorn v1.8.2 | | 스토리지 | Longhorn v1.8.2 |
| 인증서 | cert-manager + Google Trust Services (와일드카드 8개, Reflector) | | 인증서 | cert-manager + Google Trust Services (와일드카드 8개, Reflector) |
@@ -64,7 +64,7 @@ tags: [k3s, migration, postgresql, supabase]
- kr2 첫 server 구성, Supabase PostgreSQL 연결 - kr2 첫 server 구성, Supabase PostgreSQL 연결
- cert-manager + 와일드카드 인증서 6개 + Reflector - cert-manager + 와일드카드 인증서 6개 + Reflector
- Traefik DaemonSet (hostPort 80/443) + Gateway API - Traefik DaemonSet (hostPort 80/443) + Gateway API
- APISIX replica 1 (SafeLine WAF 전용, Ingress Controller 제거) - APISIX replica 1 (초기엔 SafeLine WAF 테스트 라우트 1건, Ingress Controller 제거). 2026-04-04 에 replica 2 HA 로 확장
- HAProxy 80/443 → Traefik hostPort 복원 - HAProxy 80/443 → Traefik hostPort 복원
- Longhorn v1.8.2 - Longhorn v1.8.2
@@ -104,7 +104,7 @@ tags: [k3s, migration, postgresql, supabase]
| Namespace | 서비스 | 비고 | | Namespace | 서비스 | 비고 |
|-----------|--------|------| |-----------|--------|------|
| kube-system | Traefik (LB .53) | 메인 라우팅 | | kube-system | Traefik (LB .53) | 메인 라우팅 |
| apisix | APISIX (LB .50) | SafeLine WAF 전용 | | apisix | APISIX (LB .50) | 독립 외부 gateway (Traefik 과 병렬). 현재 route juiceshop 1건 (SafeLine 통합 테스트) |
| sshpiper | sshpiper (LB .51) | SSH 리버스 프록시 | | sshpiper | sshpiper (LB .51) | SSH 리버스 프록시 |
| teleport | Teleport (LB .52) | 접근 관리 | | teleport | Teleport (LB .52) | 접근 관리 |
| metallb-system | MetalLB | L2 LB | | metallb-system | MetalLB | L2 LB |