홈 인프라
개인 학습 목적으로 작은 규모의 인프라 환경을 구성해보았습니다.
Kubernetes와 GitOps를 활용해서 포트폴리오 프로젝트의 배포를 자동화해보는 경험을 해봤어요.
Kubernetes
로컬 Docker Desktop
ArgoCD
GitOps 배포
GitHub Actions
Self-Hosted Runner
Harbor
Private Registry
전체 아키텍처
devops 아키텍처 다이어그램

클릭하여 확대
GitHub Actions → Self-Hosted Runners → Harbor → ArgoCD → Kubernetes로 이어지는 기본적인 CI/CD 파이프라인
CI/CD 파이프라인
상세 CI/CD 파이프라인 시퀀스

클릭하여 확대
Frontend, Backend 각각의 빌드 파이프라인과 Docker 이미지 생성, 자동 배포 프로세스
Frontend Pipeline
- • Code Push → GitHub Actions Trigger
- • Self-Hosted Runner에서 빌드
- • Next.js 빌드 실행
- • Docker 이미지 생성
- • Harbor Registry에 푸시
- • ArgoCD 자동 배포
Backend Pipeline
- • Code Push → GitHub Actions Trigger
- • Self-Hosted Runner에서 빌드
- • NestJS 빌드 실행
- • Docker 이미지 생성
- • Harbor Registry에 푸시
- • ArgoCD 자동 배포
인프라 구성
Kubernetes
- • Docker Desktop Kubernetes
- • 단일 노드 클러스터
- • 기본 리소스 관리
ArgoCD
- • Git Repository 모니터링
- • 자동 동기화 및 배포
- • Helm Charts 관리
- • 기본 롤백 기능
Harbor Registry
- • Private Container Registry
- • 기본 인증 및 권한
- • 이미지 저장 및 관리
- • 로컬 네트워크 접근
Self-Hosted Runners
- • Kubernetes 내부 실행
- • Docker Socket 마운트
- • 고정 Runner (프런트/백 각각 replicas: 1)
- • 기본 actions-runner-controller
SSL/TLS 인증서
- • cert-manager 설치
- • Let's Encrypt 통합
- • 기본 자동 갱신
기본 구성
- • NGINX Ingress Controller
- • 기본 HPA 설정
- • 단순한 리소스 관리