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(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— DjangoSECRET_KEY(django_secret_key). 이 레포엔 생성 매니페스트가 없어 별도로kubectl create secret으로 만들어야 합니다.
두 Secret이 없으면 모든 백엔드 pod가 CreateContainerConfigError로 기동에 실패합니다.
docs/의 가이드 순서를 그대로 따라야 합니다 — 순서를 건너뛰면 의존 관계(DB → 백엔드 → 봇) 때문에 실패합니다.
- build_Images.md — 서비스별 이미지 빌드
- deploy.md — DB(NFS 구성 → PV → StatefulSet → 마이그레이션) → 백엔드 → 프론트엔드 순서로 배포
- setup_Parking-Bot.md — 봇 사전 데이터 주입 (parking-bot 배포는 반드시 이 단계 이후)
- test_Parking-Bot.md — 봇 동작 테스트