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:
@@ -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로 관리)
|
||||||
|
|||||||
@@ -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 용일 뿐.
|
||||||
|
|
||||||
| 항목 | 값 |
|
| 항목 | 값 |
|
||||||
|------|-----|
|
|------|-----|
|
||||||
|
|||||||
@@ -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 배포 (새 클러스터)
|
||||||
|
|
||||||
|
|||||||
@@ -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`
|
||||||
|
|||||||
@@ -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 |
|
||||||
|
|||||||
Reference in New Issue
Block a user