홈랩 전체 구성

현재 구성 안내

이 글은 2026년 5월 기준입니다. 이후 바뀐 것은 아래 두 글에 있습니다.

  • k3s 노드가 8노드 → 5노드(control-plane 1 + worker 4, HA 아님)로 줄었습니다 → K3s 노드 축소
  • 발열 때문에 랙과 수납장을 바꿨습니다홈랩 랙 교체

미니 PC 1대와 NAS 1대로 구성한 홈랩입니다. Proxmox 위에 k3s 클러스터(이 글을 쓴 2026년 5월에는 8노드 HA, 지금은 5노드)를 올리고, GitOps(ArgoCD)로 서비스를 배포하며, 관측 스택(Prometheus/Grafana/Loki/Tempo)으로 운영 상태를 추적합니다. 네트워크는 OPNsense로 격리하고, Cilium BGP로 클라우드 LB 없이 외부 트래픽을 유입합니다.

사진

구성도

물리 구성

장비CPU / RAMOS역할
KT 모뎀--ISP 인터넷 연결
OPNsense-OPNsense방화벽 / 포트포워딩 / VLAN 격리 / Unbound DNS / BGP 피어
UM880 ProRyzen 8845HS / 64GBProxmox VEk3s 노드(VM) + Gitea + 서비스 VM
WTR-ProRyzen 5825U / 64GBProxmox VEk3s 노드(VM) + TrueNAS(VM) + PBS

두 장비는 각각 2.5GbE 2개를 802.3ad 본딩(bond0) 으로 묶고, 그 위에 VLAN별 브리지를 올립니다.

네트워크 구성

OPNsense로 내부망을 VLAN으로 격리합니다.

VLAN대역용도
VLAN1 (LAN)192.168.1.0/24관리망, Proxmox/스위치 접근
VLAN40 (SVC)192.168.4.0/24k3s 클러스터 전용
  • 802.3ad 본딩: 2.5GbE 2개를 묶어 다중 세션 처리량과 링크 이중화를 확보합니다. 단일 연결은 802.3ad 특성상 한 링크(~2.5G)에 묶이고, 여러 세션이 동시에 흐를 때 두 링크로 분산됩니다(iperf3 단일 2.48G → 4스트림 4.02G).

외부 트래픽 유입 (Cilium BGP + Envoy Gateway)

클라우드 로드밸런서가 없는 홈랩이라, Cilium이 OPNsense에 BGP로 LoadBalancer IP 경로를 광고해 외부에서 서비스에 접근할 수 있게 합니다. 외부 요청은 OPNsense를 거쳐 Envoy Gateway 로 들어오고, Gateway가 도메인별로 알맞은 서비스로 라우팅합니다.

Internet
  → OPNsense (방화벽 / NAT)
    → Cilium BGP (LoadBalancer IP, ECMP)
      → Envoy Gateway (Gateway API, L7 라우팅)
        → k3s Service → Pod

k3s HA 클러스터

이 시점에는 Proxmox VM으로 8노드 HA 클러스터를 운영했습니다. 지금은 control-plane 1 + worker 4, 5노드이고 HA가 아닙니다 → K3s 노드 축소.

노드종류역할
server-1/2/3VMcontrol-plane / etcd (HA 쿼럼)
worker-1VMapp + ops
worker-2VMdatabase
worker-3VMops
worker-4VMapp + ops
worker-5VMdatabase + ops + GPU
  • API 고가용성: kube-vip로 API 서버 가상 IP(192.168.4.10)를 제공해, control-plane 한 대가 빠져도 클러스터 접근이 유지됩니다.
  • CNI: Cilium (eBPF). kubeProxyReplacement로 kube-proxy를 대체해 서비스 로드밸런싱을 eBPF로 처리하고, BGP Control Plane으로 LoadBalancer IP를 외부에 광고합니다.
  • 스토리지: Longhorn으로 노드 간 복제되는 분산 블록 스토리지를 구성, Pod가 노드를 옮겨도 볼륨이 따라갑니다.

스토리지

  • TrueNAS (VM): WTR-Pro에 VM으로 올려, HDD를 RAID-Z2로 묶고 NFS/SMB로 공유합니다. 디스크는 SATA 컨트롤러 패스스루와 by-id 개별 연결을 혼합해 연결했습니다.
  • Longhorn: k3s 워크로드용 분산 블록 스토리지. 복제본을 노드 간에 두어 단일 노드 장애에도 데이터 가용성을 유지합니다.
  • PBS (Proxmox Backup Server): VM 백업.

GitOps & 배포

  • Gitea: 자체 호스팅 Git 서버 겸 OCI 컨테이너 레지스트리.
  • ArgoCD: Git 매니페스트를 단일 소스로 선언적 배포. 클러스터 상태를 Git과 동기화합니다.
  • Terraform / Ansible: Proxmox VM 프로비저닝과 노드 부트스트랩을 코드화(IaC)해, 노드 재구축 시 수동 작업을 제거했습니다.

관측 (Observability)

  • Prometheus: 노드·Pod 메트릭 수집(Pull).
  • Grafana: 메트릭·로그·트레이스 통합 시각화.
  • Loki / Tempo: 로그 / 분산 트레이스 수집.
  • 알림: 임계치 초과 시 텔레그램으로 통지(Grafana Alerting + Alertmanager).

운영 중인 서비스

Vaultwarden(비밀번호 관리), Immich(사진), Home Assistant(홈 오토메이션), n8n(워크플로 자동화), Jellyfin(미디어), Gitea 등을 k3s 위에서 GitOps로 운영합니다.