본 프로젝트는 쿠버네티스 환경에서 Redis 인스턴스의 생성, 확장, 장애 복구 등 전체 생명주기를 자동화하고, 사용자에게 편리한 REST API를 제공하는 '관리형 Redis 서비스'를 개발하는 것을 목표로 합니다.
각 컴포넌트가 명확한 책임을 가지는 확장 가능하고 안정적인 시스템을 구축하는 데 중점을 두었습니다.
API 서버와 쿠버네티스 컨트롤러(Operator) 를 별도의 프로젝트로 분리하여 설계했습니다.
-
API 서버 (
api-server): 사용자의 REST API 요청을 받아 검증한 뒤 내부적으로 쿠버네티스 API 서버와 통신하여ManagedRedisCustom Resource(CR)를 관리합니다. -
컨트롤러 (
operator):ManagedRedisCR의 변경 사항을 감시(Watch)하고, Redis Pod, Service 등 실제 쿠버네티스 리소스의 상태가 리소스에 선언된 '원하는 상태'와 일치하도록 끊임없이 조정(Reconcile)합니다. -
공통 모듈 (
managed-redis-model):ManagedRedisCustom Resource Definition (CRD)의 스키마와 관련된 데이터 모델(Spec, Status 등)을 정의하는 공통 모듈입니다.api-server와operator가 동일한 CRD 구조를 공유하고 일관된 데이터 처리를 할 수 있도록 돕습니다.
각 모듈의 내부 패키지 구조, 설계 명세, API 규격 등 상세 내용은 해당 폴더의 문서를 참조하세요.
| 문서 | 설명 |
|---|---|
| README.md | 패키지 구조, 기술 스택, 빌드/실행 방법 |
| API Server 설계 명세서 및 개발 | 요구사항 분석, 버전 관리 전략, RBAC 권한, 성능 최적화 |
| API_SPEC.md | REST API 상세 규격 및 입출력 JSON 예시 |
| 문서 | 설명 |
|---|---|
| README.md | 패키지 구조, 빌드/실행/테스트 방법 |
| Operator 설계 명세서 및 개발 | 설계 철학, 구현 상세, 테스트 전략, 멱등성/Leader Election 등 |
| 문서 | 설명 |
|---|---|
| README.md | 패키지 구조, 모듈 역할, 빌드 방법 |
| CRD_DESIGN.md | CRD spec/status 필드 설계 이유 및 전체 YAML 스키마 |
실제 운영 환경에서 Redis 클러스터를 효과적으로 관리하고 사용자에게 더 많은 정보를 제공하기 위해 CRD를 설계했습니다. 전체 CRD YAML 스키마와 상세 설계 이유는 CRD_DESIGN.md를 참조하세요.






