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

구성도

물리 구성
| 장비 | CPU / RAM | OS | 역할 |
|---|---|---|---|
| KT 모뎀 | - | - | ISP 인터넷 연결 |
| OPNsense | - | OPNsense | 방화벽 / 포트포워딩 / VLAN 격리 / Unbound DNS / BGP 피어 |
| UM880 Pro | Ryzen 8845HS / 64GB | Proxmox VE | k3s 노드(VM) + Gitea + 서비스 VM |
| WTR-Pro | Ryzen 5825U / 64GB | Proxmox VE | k3s 노드(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/24 | k3s 클러스터 전용 |
- 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/3 | VM | control-plane / etcd (HA 쿼럼) |
| worker-1 | VM | app + ops |
| worker-2 | VM | database |
| worker-3 | VM | ops |
| worker-4 | VM | app + ops |
| worker-5 | VM | database + 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로 운영합니다.