안녕하세요, 이중혁입니다

배우고 경험한 기술들을 하나씩 정리하는 공간

홈 인프라

개인 학습 목적으로 작은 규모의 인프라 환경을 구성해보았습니다.
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 파이프라인 시퀀스

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 설정
  • • 단순한 리소스 관리