Skip to content

Latest commit

 

History

195 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ParkFlow — Deploy

VirtualBox + kubeadm 기반 셀프 매니지드 Kubernetes 클러스터에, MSA로 분리된 주차장 잔여석 조회 서비스를 배포하는 매니페스트 레포입니다. 앱 소스코드(services/)는 별도 레포이며, 이 레포는 컨테이너화 및 K8s 배포 담당 파트만 다룹니다.

아키텍처

5개 마이크로서비스가 gRPC로 통신하고, 서비스별로 독립된 MariaDB를 갖는 구조입니다.

서비스 역할 프로토콜 replicas
orchestration-http Saga 조율, 나머지 4개 서비스를 gRPC로 호출하는 진입점 HTTP :8000 2
parking-command-grpc 입/출차 등 쓰기(Command) — CQRS Command 측 gRPC :50017 1
parking-query-grpc 여석 조회 등 읽기(Query) — CQRS Query 측 gRPC :50018 1
vehicle-grpc 차량 정보/위치 관리 gRPC :50015 1
zone-grpc 주차 구역(Zone) 카탈로그 gRPC :50016 1

orchestration-http가 허브 역할을 하며 나머지 4개 서비스를 각각 gRPC로 호출합니다.

DB 레이어

서비스별로 완전히 분리된 DB(database per service)를 사용합니다. 5개 모두 동일한 패턴입니다.

  • MariaDB 10.6, StatefulSet(replicas 1) + Headless Service
  • volumeClaimTemplate로 PVC 5Gi 요청, storageClassName: manual
  • 클라우드 관리형 스토리지가 없는 셀프 매니지드 환경이라, PV는 전부 NFS 백엔드(마스터 노드에 구성)를 사용
  • orchestration-db, parking-command-db, parking-query-db, vehicle-db, zone-db 각각 자기 서비스에서만 연결됨

프로젝트 구조

Deploy
├── backend/     서비스별 Deployment + Service (gRPC 4개 + HTTP 1개)
├── base/        Secret (DB 계정 정보)
├── database/    MariaDB StatefulSet 5개, PV(NFS), 마이그레이션 Job
├── frontend/    프론트엔드 Deployment + Service(ClusterIP)
├── parking-bot/ 트래픽 시뮬레이터 (Go)
├── docs/        빌드/배포/봇 설정·테스트 가이드
└── README.md

기술 스택

역할 기술
오케스트레이션 Kubernetes (kubeadm, VirtualBox 셀프 매니지드)
워크로드 Deployment, StatefulSet, Job
스토리지 NFS 기반 PersistentVolume
DB MariaDB 10.6 (서비스별 독립 인스턴스)
통신 gRPC / Protocol Buffers (서비스 간), HTTP (외부 진입점)
배포 kubectl apply 수동 배포 (GitOps 미적용)

사전 준비

배포 전에 아래 Secret이 클러스터에 존재해야 합니다:

  • parking-db-secret (base/secret.yaml) — DB root/user 계정 정보
  • parking-secret — Django SECRET_KEY (django_secret_key). 이 레포엔 생성 매니페스트가 없어 별도로 kubectl create secret으로 만들어야 합니다.

두 Secret이 없으면 모든 백엔드 pod가 CreateContainerConfigError로 기동에 실패합니다.

빌드 및 배포 순서

docs/의 가이드 순서를 그대로 따라야 합니다 — 순서를 건너뛰면 의존 관계(DB → 백엔드 → 봇) 때문에 실패합니다.

  1. build_Images.md — 서비스별 이미지 빌드
  2. deploy.md — DB(NFS 구성 → PV → StatefulSet → 마이그레이션) → 백엔드 → 프론트엔드 순서로 배포
  3. setup_Parking-Bot.md — 봇 사전 데이터 주입 (parking-bot 배포는 반드시 이 단계 이후)
  4. test_Parking-Bot.md — 봇 동작 테스트

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors