15개 정본 문서에서 날짜별 변경이력, 인시던트 기록, 폐기된 구현 상세를
history/ 디렉토리로 분리. 정본은 현재 상태만 기술하는 백서 형태로 정리.
각 정본에 history 위키링크 추가.
분리된 history 파일 12건:
- apisix git push 500, k3s postgresql migration, apisix→traefik 전환
- netbis DDoS 공격, gitea 이전/분리, usb 2.5g hang + NFS hard mount
- supabase→patroni, apisix etcd 통합/분리, anomaly-detect 재설계
- patroni failover incident, zlambda nixos migration, ops-agents setup
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
kr2의 USB 2.5GbE 어댑터(Realtek RTL8157, 0bda:8157)는 커널 기본 cdc_ncm 드라이버로 잡히면 Half Duplex + MTU 1500 제한. DKMS r8152 드라이버(v2.21.4)를 설치하여 Full Duplex + Jumbo Frame 지원.
DKMS 패키지: linux-headers-$(uname -r) 설치 시 자동 빌드
udev 규칙: /etc/udev/rules.d/50-usb-realtek-net.rules — USB config를 1로 설정하여 r8152가 바인딩
커널 업데이트 시 DKMS가 자동으로 재빌드
주의사항
Jumbo Frame은 경로 전체(NIC → 스위치 → NIC)가 지원해야 함. 미지원 스위치가 중간에 있으면 프레임 드롭
ping -M do -s 8972 로 end-to-end JF 동작 확인 가능
DSM Reverse Proxy — nas.inouter.com
LAN 전용으로 Synology DSM 웹 UI 접근. nas.inouter.com 은 *.inouter.com 와일드카드 폴백으로 k3s.inouter.com (192.168.9.53, Traefik MetalLB VIP) 로 해석되고, Traefik 에서 이 호스트를 Synology NAS 로 reverse proxy 한다.
항목
값
Namespace
lan-proxies (신규 — LAN-only 리버스 프록시 전용)
Service
nas (selector 없는 ClusterIP) + EndpointSlice → 192.168.9.100:5000
Backend
Synology DSM HTTP (포트 5000, 평문)
Traefik IngressRoute
nas (web entrypoint, redirect → https), nas-tls (websecure entrypoint)
기존 wildcard wildcard-inouter-tls (cert-manager + emberstack reflector 자동 복제)
외부 노출
LAN-only — 와일드카드 *.inouter.com 가 사설 IP 192.168.9.53 로 폴백되므로 인터넷 라우팅 없음
ExternalName 대신 Service+EndpointSlice 사용 이유
요구사항은 "ExternalName Service" 였으나 Kubernetes ExternalName 은 RFC1123 DNS 호스트네임만 허용하고 IP(192.168.9.100)는 거부. 동등한 K8s-native 패턴인 selector-less Service + 수동 EndpointSlice 로 구현. CoreDNS 가 ClusterIP 를 정상 발행하고 kube-proxy 가 EndpointSlice 의 외부 IP 로 분산.
매니페스트
원본: /tmp/nas-reverse-proxy.yaml (heimdall). 핵심 발췌 — 전체 6 객체.