본문으로 건너뛰기

네트워킹

Lumie 인프라의 네트워킹 계층은 Traefik(애플리케이션 Ingress), Teleport(인프라 접근), cert-manager(TLS 자동화), CoreDNS(클러스터 DNS), Flannel(CNI)으로 구성됩니다.

Kong 게이트웨이는 K3s 내장 Traefik으로 대체되었습니다. Traefik 상세 설정을 참고하세요.


진입점 분리

클러스터에는 두 개의 독립적인 외부 진입점이 있습니다:

Traefik (애플리케이션)

  • 대상 도메인: lumie-edu.com, dev.lumie-edu.com, dev.lumie-infra.com (API 전용, 베어 / → 404)
  • DNS: Cloudflare 프록시 → OCI NLB 예약 IP 168.107.42.253 (2026-05-24 이후)
  • 노드: 워커 4개 (svclb DaemonSet)
  • 포트: 80(→443 리다이렉트), 443
  • TLS: cert-manager + Let's Encrypt
  • StripPrefix 미들웨어로 /api/<module>/<module> 변환

Teleport (인프라)

  • 대상 도메인: lumie-infra.com, *.lumie-infra.com (apex+와일드카드)
  • DNS: OCI 0213 NLB 158.180.89.154 직접 연결 (Cloudflare 미경유)
  • 노드: 마스터 단일 노드 (hostNetwork 모드)
  • 포트: 443 (멀티플렉스: HTTPS, SSH, Kubernetes API)
  • TLS: cert-manager 발급 인증서 (teleport-tls Secret)
  • 프록시 대상: ArgoCD, Zot UI, Docs, Headlamp, Gitea, SSH 접근 등

마스터 노드에서 443 포트는 Teleport가 단독 점유합니다. Traefik의 svclb DaemonSet은 마스터에서 제외(enablelb 레이블 제거)됩니다.


cert-manager

TLS 인증서 발급·갱신을 자동화합니다. Let's Encrypt ACME 프로토콜을 사용합니다.

ClusterIssuer

# letsencrypt-prod: HTTP-01 챌린지 (Traefik 경유, ingressClass: traefik)
# letsencrypt-prod (dns01 solver): DNS-01 챌린지 (Cloudflare, lumie-infra.com 와일드카드)

Ingress에 어노테이션을 추가하면 cert-manager가 자동으로 인증서를 발급합니다:

annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
# 인증서 상태 확인
kubectl get certificate -A

# Certificate 상세 정보
kubectl describe certificate lumie-frontend-tls -n lumie-frontend

Flannel (CNI)

K3s 기본 CNI입니다. VXLAN 터널링으로 노드 간 Pod 네트워크를 구성합니다.

구분CIDR
Pod 네트워크10.42.0.0/16
Service 네트워크10.43.0.0/16

NetworkPolicy 미지원: Flannel은 NetworkPolicy를 지원하지 않습니다. 트래픽 격리는 Kyverno 정책으로 보완합니다.


CoreDNS

클러스터 내부 DNS 서비스입니다.

# 서비스 접근 형식
<service-name>.<namespace>.svc.cluster.local

# 예시
lumie-backend.lumie-backend.svc.cluster.local
minio.minio.svc.cluster.local
redis.lumie-cache.svc.cluster.local

VCN 피어링 (OCI 계정 간)

OCI-0214(마스터+워커 1,2)와 OCI-0213(워커 3,4) 간 프라이빗 통신은 Remote VCN Peering(DRG)으로 구성됩니다. 계정 간 트래픽은 공인 인터넷을 경유하지 않습니다.


관련 문서