DevOps / Infra
XGEN과 홈서버를 운영하며 쌓은 Kubernetes, K3s, GitOps, TLS, Jenkins, 멀티사이트 배포, 폐쇄망 배포 트러블슈팅 기록입니다.
K3s · ArgoCD · Istio · Jenkins
학습 경로
-
Step 1
K3s 기반 플랫폼
컨테이너 빌드, Kubernetes 오브젝트, Helm 설계를 순서대로 봅니다.
- 01
XGEN K3s 인프라 완전 해부 (1) — 전체 구조와 컨테이너 빌드 전략
XGEN 2.0 AI 에이전트 플랫폼의 K3s 기반 인프라를 처음부터 끝까지 해부한다. 1편에서는 전체 아키텍처 구조, Python/Rust/Node.js 4종 Dockerfile 멀티스테이지 빌드 전략, Docker Compose 인프라 스택, K8s-Docker 경계 연결 패턴을 다룬다.
- 02
XGEN K3s 인프라 완전 해부 (2) — Kubernetes 핵심 오브젝트와 스케일링 전략
XGEN 2.0 K3s 클러스터에서 실제 운영 중인 Kubernetes 오브젝트들을 분석한다. Pod, Deployment, Service의 관계부터 RollingUpdate 무중단 배포, HPA 자동 스케일링, livenessProbe/readinessProbe 설정까지, 실제 클러스터 상태와 템플릿 코드를 기반으로 설명한다.
- 03
XGEN K3s 인프라 완전 해부 (3) — Helm 차트 설계: 하나의 Chart로 6개 서비스 배포
XGEN 2.0의 Helm 차트 아키텍처를 분석한다. 단일 Chart로 6개 마이크로서비스를 배포하는 구조, values 파일 계층화, _helpers.tpl의 4단계 config 병합 로직, 이미지 경로 자동 생성까지. helm template 명령으로 실제 렌더링 결과를 확인하며 설명한다.
- 01
-
Step 2
GitOps와 배포 자동화
Jenkins, ArgoCD, reusable workflow를 연결합니다.
- 01
XGEN K3s 인프라 완전 해부 (4) — CI/CD 파이프라인: Jenkins 빌드에서 ArgoCD 배포까지
XGEN 2.0의 CI/CD 파이프라인을 해부한다. Jenkins의 설정 3파일 분리 아키텍처, build.groovy 파이프라인 스테이지별 동작, 캐시 오류 자동 재시도, 듀얼 태깅 전략을 분석하고, ArgoCD의 App of Apps 패턴으로 단일 진입점에서 6개 서비스를 자동 배포하는 구조를 설명한다.
- 02
Reusable GitHub Actions와 Helm으로 K3s 범용 배포 플랫폼 구축하기
두 프로젝트의 CI/CD 파이프라인 복붙 문제를 해결하기 위해 Reusable GitHub Actions Workflow와 범용 Helm Chart를 설계했다. 레지스트리 없는 K3s 단일 노드 환경에서 docker save + k3s ctr images import로 이미지를 로드하고, ArgoCD ApplicationSet Git Generator로 새 앱을 자동 발견하는 구조를 구축한 과정을 정리한다.
- 03
ArgoCD 멀티 고객사 배포 아키텍처 — ApplicationSet 시행착오와 단일 진입점 설계
XGEN 2.0 플랫폼을 다수 고객사(롯데, 제주 등)에 배포하면서 ArgoCD App of Apps 패턴을 Helm 기반으로 재설계한 과정을 정리한다. ApplicationSet 도입과 철회, projects/*.yaml 단일 진입점 구조, 하드코딩 제거까지의 시행착오를 다룬다.
- 01
-
Step 3
운영과 멀티사이트
TLS, 멀티사이트 배포, 폐쇄망/홈서버 운영 문제를 다룹니다.
- 01
체험존 프로비저너: 신청 한 건으로 격리된 멀티테넌트 스택을 자동 발급하다
이메일 신청 한 건으로 XGEN 전체 스택을 격리해 자동 발급하는 셀프서비스 체험존(Trial Zone) 프로비저너를 설계하고 운영한 과정을 정리한다. Docker Compose per-tenant 격리, AWS 엣지 TLS 종료, nginx 동적 서브도메인 라우팅, 비동기 발급, TTL 회수까지 실전 트러블슈팅 중심으로 다룬다.
- 02
XGEN 멀티사이트 배포 자동화 — 하나의 코드베이스로 N개 고객사 운영하기
하나의 Helm 차트와 ArgoCD 템플릿으로 4개 사이트(온프레미스 K3s, 제주 서버, AWS EKS, 롯데이마트)를 운영하는 멀티사이트 배포 아키텍처를 설계하고 자동화한 과정을 정리한다. 사이트별 레지스트리 분리, setup-k3s.sh 자동화, MinIO에서 S3 전환, Istio 동적 생성까지.
- 03
Caddy 리버스 프록시로 홈서버 HTTPS 자동화 — Nginx 수동 설정과의 비교
홈서버에서 포트 번호 대신 도메인으로 서비스에 접속하기 위해 Caddy 리버스 프록시를 도입한 과정을 기록한다. Let's Encrypt SSL 인증서 자동 발급/갱신, TLS-ALPN-01 챌린지, Nginx 대비 설정 간소화, Docker Compose 배포와 서비스 확장 방법까지 다룬다.
- 01
대표 글
- DevOps
체험존 프로비저너: 신청 한 건으로 격리된 멀티테넌트 스택을 자동 발급하다
이메일 신청 한 건으로 XGEN 전체 스택을 격리해 자동 발급하는 셀프서비스 체험존(Trial Zone) 프로비저너를 설계하고 운영한 과정을 정리한다. Docker Compose per-tenant 격리, AWS 엣지 TLS 종료, nginx 동적 서브도메인 라우팅, 비동기 발급, TTL 회수까지 실전 트러블슈팅 중심으로 다룬다.
Docker Compose멀티테넌트 - DevOps
XGEN K3s 인프라 완전 해부 (1) — 전체 구조와 컨테이너 빌드 전략
XGEN 2.0 AI 에이전트 플랫폼의 K3s 기반 인프라를 처음부터 끝까지 해부한다. 1편에서는 전체 아키텍처 구조, Python/Rust/Node.js 4종 Dockerfile 멀티스테이지 빌드 전략, Docker Compose 인프라 스택, K8s-Docker 경계 연결 패턴을 다룬다.
K3sKubernetes - DevOps
XGEN 멀티사이트 배포 자동화 — 하나의 코드베이스로 N개 고객사 운영하기
하나의 Helm 차트와 ArgoCD 템플릿으로 4개 사이트(온프레미스 K3s, 제주 서버, AWS EKS, 롯데이마트)를 운영하는 멀티사이트 배포 아키텍처를 설계하고 자동화한 과정을 정리한다. 사이트별 레지스트리 분리, setup-k3s.sh 자동화, MinIO에서 S3 전환, Istio 동적 생성까지.
XGENKubernetes - DevOps
Reusable GitHub Actions와 Helm으로 K3s 범용 배포 플랫폼 구축하기
두 프로젝트의 CI/CD 파이프라인 복붙 문제를 해결하기 위해 Reusable GitHub Actions Workflow와 범용 Helm Chart를 설계했다. 레지스트리 없는 K3s 단일 노드 환경에서 docker save + k3s ctr images import로 이미지를 로드하고, ArgoCD ApplicationSet Git Generator로 새 앱을 자동 발견하는 구조를 구축한 과정을 정리한다.
GitHub ActionsHelm
핵심 태그
시리즈
- Rust 커머스 검색 엔진 · 4 posts
- DevOps 실전 · 2 posts
최신 글
전체 글K8s 없이 Workbench 띄우기: XGEN Workbench Docker 독립 스택과 폐쇄망 배포
Kubernetes 기반 XGEN Workbench를 단일 GPU 서버와 폐쇄망 환경에서도 운영할 수 있도록 Docker 독립 스택, DockerDriver, USB 이미지 반입, pull_policy never, GPU 세션 이미지를 정리한 과정을 다룬다.
xgen-model 멀티노드 GPU 서빙 구조: DaemonSet, Headless Service, 서버 타겟 라우팅
xgen-model을 단일 GPU Pod에서 GPU 노드 전체로 확장하기 위해 DaemonSet, Headless Service, cluster-aware API, 서버 타겟 라우팅, gpu_ids 기반 슬롯 분리를 적용한 과정을 정리한다.
XGEN MCP 폐쇄망 번들 시스템: 외부망 패키지를 .tar.gz로 묶어 원클릭 도구 세션까지 연결하기
MCP 서버를 인터넷이 막힌 폐쇄망 XGEN 환경에서 설치하고 실행하기 위해 외부망 번들 빌드, 업로드, 세션 복원, 마켓 카탈로그, 데스크톱 앱 UX를 하나의 흐름으로 연결한 구현 과정을 정리한다. stdio JSON-RPC 응답 correlation 버그와 웹/데스크톱 공통 API 설계까지 다룬다.
XGEN Workbench 분산 실행 인프라: KVM 컴퓨트 풀, GPU 워커, PriorityClass, NetworkPolicy까지
XGEN의 LLMOps/MLOps 워크벤치를 단일 Pod 실행에서 KVM 컴퓨트 풀과 GPU 워커 기반 분산 실행 구조로 확장한 과정을 정리한다. Workbench 컨트롤러, SandboxExec, Prompt Studio, 학습 Job, headless worker, GPU 메트릭, PriorityClass, NetworkPolicy, anti-affinity 설계까지 다룬다.
XGEN 데스크톱 앱 고도화: Tauri에서 로컬 Ollama, 백엔드 자동기동, MCP/RAG를 한 번에 연결하기
기존 웹 기반 XGEN 프론트엔드를 Tauri 데스크톱 앱으로 감싸는 수준을 넘어, 로컬 Ollama 자동 기동, Docker Compose 백엔드 자동 시작, MCP 라이브러리 UX, 로컬 모델 서빙 패널, RAG 문서 API 절대경로화를 하나의 앱 경험으로 묶은 과정을 정리한다.
Jenkins 자격증명 하드코딩 제거: K8s Secret + JCasC 변수 참조 전환과 부수 인프라 fix
Jenkins JCasC 설정에 박혀 있던 admin 자격증명을 K8s Secret으로 분리하고 JCasC 변수 참조로 주입하는 보안 전환을 정리한다. 함께 묶어서 처리한 Fuseki Recreate strategy, JCasC TARGET_ENV 파라미터 오버라이드, SSE 스트리밍 라우트 수정도 함께 다룬다.
XGEN MS 365 MCP 통합 — Device Code Flow 인증부터 워크플로우 노드까지
XGEN 2.0 AI Agent 플랫폼에 Microsoft 365 MCP 서버를 통합한 과정을 정리한다. Client Credentials에서 Device Code Flow로의 인증 방식 전환, K8s PVC 토큰 캐시, 프론트엔드-백엔드-인프라 3계층에 걸친 아키텍처 설계, 그리고 100개 이상의 MS 365 도구를 프리셋으로 관리하는 방법까지 다룬다.
XGEN GPU 모델 서빙 인프라 실전기 — 폐쇄망 배포부터 멀티 GPU 오버라이드까지
XGEN 플랫폼의 GPU 모델 서빙 서비스(xgen-model)를 제주 폐쇄망과 AWS EKS에 배포하면서 겪은 인프라 삽질을 정리한다. Istio/Traefik 전환, imagePullPolicy 폐쇄망 대응, GPU Recreate 배포 전략, CUDA graph 캡처 중 헬스체크 실패, 프로젝트별 gpuCount/config 오버라이드, MinIO credential 불일치, 프론트엔드 tensor_parallel_size 자동 설정까지.