프로젝트 소개

RavenDB Kubernetes Operator는 Kubernetes에서 RavenDB 클러스터를 배포하고 관리하는 공식 도구입니다. 단일 `RavenDBCluster` 사용자 정의 리소스로 구동되는 완전 자동화된 선언적 접근 방식을 제공하여 모든 구성 요소가 선언된 사양에 맞게 유지되어 재현 가능한 배포를 보장합니다. **설치 방법**: 이 연산자는 세 가지 설치 방식을 지원합니다: Helm(권장, 연산자와 각 클러스터에 대한 별도 차트 포함), 로컬 개발 및 테스트를 위한 `make deploy`, Operator Lifecycle Manager를 실행하는 클러스터를 위한 OLM 번들입니다. Helm 배포는 두 개의 차트로 나뉩니다: `ravendb-operator`(클러스터 전체, 한 번 설치) 및 `ravendb-cluster`(네임스페이스별, RavenDB 클러스터마다 한 번 설치). **사용자 정의 리소스**: `RavenDBCluster` CRD는 단일 소스 오브 트루스로, 노드 토폴로지, TLS 모드(Let's Encrypt 또는 자체 서명), 외부 액세스 전략, 스토리지 레이아웃, 이미지 및 부트스트랩 동작을 정의합니다. 조정이 완료되면 연산자는 StatefulSets, Services, Ingresses, Jobs 및 PVCs를 포함한 모든 기본 Kubernetes 객체를 생성하고 관리합니다. **주요 기능**: - **인증서 및 TLS 관리**: RavenDB의 내장 지원을 사용하는 Let's Encrypt 모드, 자체 서명/사용자 제공 인증서, RavenDB Setup Package의 노드별 인증서, 인증서 갱신 시 자동 시크릿 교체를 지원합니다. - **클러스터 부트스트래핑**: Pod 대기, HTTPS 연결 가능성 검증, ClusterAdmin 클라이언트 인증서 등록, 선언된 노드 토폴로지에 따른 클러스터 구성을 위해 단기 실행 Kubernetes Job을 실행합니다. - **외부 액세스**: AWS Network Load Balancer(명시적 EIP/서브넷/AZ 매핑으로 노드별), Azure Load Balancer, NGINX Ingress, HAProxy Ingress 및 Traefik Ingress를 지원합니다. - **스토리지 구성**: local-path, AWS EBS/EBS-CSI, Azure Disk/Azure Disk CSI 및 추가 볼륨(ConfigMap, Secret, PVC, emptyDir)을 지원하는 데이터, 로그 및 감사 볼륨의 선언적 구성을 제공합니다. - **롤링 업그레이드**: 사양에 정의된 순서대로 노드별 업그레이드를 조정하며, 실패 시 중단되고 문제 해결 후 자동으로 재개되는 안전 게이트를 제공합니다. 실수로 인한 버전 다운그레이드를 방지합니다. - **상태 및 상태 보고**: 수명 주기 단계(`Deploying`, `Running`, `Error`), 준비 상태, 진행 상황 및 상태 게이트에 대한 상세 조건을 노출하고 모든 조건 전환 시 Kubernetes Events를 발생시킵니다. - **개발 지원**: `make deploy`를 통한 로컬 배포, 검증 및 변경 승인 웹훅, 서버 측 적용, 증분 조정을 지원합니다. **사전 요구 사항**: Kubernetes 1.23+, kubectl, Helm, cert-manager, RavenDB 라이선스, 그리고 Let's Encrypt 설정 자료 또는 자체 서명 인증서가 필요합니다.