Skip to content

tomy8964/Redis-Operator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

쿠버네티스 기반 관리형 Redis 서비스 개발

1. 프로젝트 개요

본 프로젝트는 쿠버네티스 환경에서 Redis 인스턴스의 생성, 확장, 장애 복구 등 전체 생명주기를 자동화하고, 사용자에게 편리한 REST API를 제공하는 '관리형 Redis 서비스'를 개발하는 것을 목표로 합니다.

각 컴포넌트가 명확한 책임을 가지는 확장 가능하고 안정적인 시스템을 구축하는 데 중점을 두었습니다.

2. 전체 시스템 아키텍처

API 서버쿠버네티스 컨트롤러(Operator) 를 별도의 프로젝트로 분리하여 설계했습니다.

  • API 서버 (api-server): 사용자의 REST API 요청을 받아 검증한 뒤 내부적으로 쿠버네티스 API 서버와 통신하여 ManagedRedis Custom Resource(CR)를 관리합니다.

  • 컨트롤러 (operator): ManagedRedis CR의 변경 사항을 감시(Watch)하고, Redis Pod, Service 등 실제 쿠버네티스 리소스의 상태가 리소스에 선언된 '원하는 상태'와 일치하도록 끊임없이 조정(Reconcile)합니다.

  • 공통 모듈 (managed-redis-model): ManagedRedis Custom Resource Definition (CRD)의 스키마와 관련된 데이터 모델(Spec, Status 등)을 정의하는 공통 모듈입니다. api-serveroperator가 동일한 CRD 구조를 공유하고 일관된 데이터 처리를 할 수 있도록 돕습니다.

img.png


3. 모듈별 상세 문서

각 모듈의 내부 패키지 구조, 설계 명세, API 규격 등 상세 내용은 해당 폴더의 문서를 참조하세요.

api-server (REST API 서버)

문서 설명
README.md 패키지 구조, 기술 스택, 빌드/실행 방법
API Server 설계 명세서 및 개발 요구사항 분석, 버전 관리 전략, RBAC 권한, 성능 최적화
API_SPEC.md REST API 상세 규격 및 입출력 JSON 예시

operator (쿠버네티스 컨트롤러)

문서 설명
README.md 패키지 구조, 빌드/실행/테스트 방법
Operator 설계 명세서 및 개발 설계 철학, 구현 상세, 테스트 전략, 멱등성/Leader Election 등

managed-redis-model (공통 데이터 모델)

문서 설명
README.md 패키지 구조, 모듈 역할, 빌드 방법
CRD_DESIGN.md CRD spec/status 필드 설계 이유 및 전체 YAML 스키마

4. CRD(Custom Resource Definition) 설계 요약

실제 운영 환경에서 Redis 클러스터를 효과적으로 관리하고 사용자에게 더 많은 정보를 제공하기 위해 CRD를 설계했습니다. 전체 CRD YAML 스키마와 상세 설계 이유는 CRD_DESIGN.md를 참조하세요.


5. Use Case별 시퀀스 다이어그램

5.1. Redis 인스턴스 생성

img_2.png

5.2. Redis 인스턴스 스케일링 (Replicas 변경)

img_3.png

5.3. Redis Primary 승격 (Switchover)

img_4.png

5.4. Redis Primary Failover

img_7.png

5.5. Redis Replica Warning

img_6.png

5.6. Redis 인스턴스 삭제

img_8.png

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors