Files
obsidian/infra/k3s-ingress-architecture.md

3.1 KiB

title, updated, tags
title updated tags
K3s 인그레스 아키텍처 2026-04-13
infra
k3s
traefik
apisix
safeline
ingress

개요

K3s 클러스터에 2개의 독립 Ingress Controller가 병렬 운영됨. 역할에 따라 트래픽 경로가 분리됨.

Ingress Controller MetalLB VIP 용도 CRD
Traefik 192.168.9.53 내부/관리 서비스 (*.inouter.com) IngressRoute (traefik.io/v1alpha1)
APISIX 192.168.9.50 WAF 보호 필요한 외부 노출 서비스 ApisixRoute (apisix.apache.org/v2)

트래픽 흐름

Traefik 경로 (내부/관리)

클라이언트 → BunnyCDN (iron-kr) → OpenWrt HAProxy (:80/:443)
  → MetalLB 192.168.9.53 → Traefik → K3s Service → Pod

대상: outline, vault, gitea, portainer, argocd, vector, vlogs 등 inouter.com 도메인 서비스

APISIX 경로 (SafeLine WAF 경유)

클라이언트 → BunnyCDN (iron-kr-waf) → OpenWrt HAProxy (:9080/:9443)
  → MetalLB 192.168.9.50 → APISIX → SafeLine WAF (chaitin-waf 플러그인)
  → K3s Service → Pod

대상: juiceshop.keepanker.cv 등 외부 도메인 서비스. WAF 보호가 필요한 서비스는 APISIX 경로로 라우팅.

APISIX + SafeLine 연동 구조

APISIX 라우트에 chaitin-waf 플러그인을 라우트별로 적용. SafeLine detector가 요청을 검사하고 차단/허용 판단.

APISIX Pod → safeline-detector:8000 (K3s ClusterIP 10.43.253.244)
  → 판단: 허용 → 백엔드 서비스로 전달
  → 판단: 차단 → APISIX가 403 반환
  • SafeLine tengine(리버스 프록시)은 replica 0으로 비활성화 — APISIX가 리버스 프록시 역할 대체
  • detector만 가동하여 순수 WAF 엔진으로 사용
  • global_rule이 아닌 라우트별 플러그인으로 적용 (plugins.chaitin-waf)
  • SafeLine 관리 UI: safeline-mgt:1443

인그레스 리소스 유형 (통일 규칙)

유형 사용 여부 비고
IngressRoute (Traefik CRD) 사용 Traefik 경로 서비스
ApisixRoute (APISIX CRD) 사용 APISIX/WAF 경로 서비스
Ingress (표준 K8s) 사용 금지 통일을 위해 CRD로 전환. ArgoCD가 마지막 Ingress였으나 IngressRoute로 전환 완료

구성 요소 상세

Traefik

  • K3s 기본 내장 ingress controller
  • DaemonSet (3노드)
  • TLS: cert-manager wildcard 인증서 (wildcard-inouter-tls 등)
  • 설정: k3s-migration 참조

APISIX (K3s 내부)

  • Deployment replica 2, etcd StatefulSet 3 replica
  • Ingress Controller: apisix-ingress-controller (GatewayProxy 모드)
  • global_rules: http-logger (CrowdSec) + limit-req (rate 20, burst 10)
  • 상세: apisix 참조

SafeLine WAF

  • detector + database + mgt + luigi + chaos + fvm
  • tengine는 replica 0 (APISIX가 대체)
  • 상세: crowdsec-safeline 참조

관련 문서