这个项目能做什么

RavenDB Kubernetes Operator 是用于在 Kubernetes 上部署和管理 RavenDB 集群的官方工具。它提供了一种完全自动化、声明式的方法,由单个 `RavenDBCluster` 自定义资源驱动,确保所有组件与声明规范保持一致,从而实现可复现的部署。 **安装方法**:该 Operator 支持三种安装方式:Helm(推荐,分别提供 Operator 和每个集群的 chart)、`make deploy`(用于本地开发和测试),以及用于运行 Operator Lifecycle Manager 的集群的 OLM bundle。Helm 发行版拆分为两个 chart:`ravendb-operator`(集群范围,仅安装一次)和 `ravendb-cluster`(按命名空间,每个 RavenDB 集群安装一次)。 **自定义资源**:`RavenDBCluster` CRD 是唯一的事实来源,定义节点拓扑、TLS 模式(Let's Encrypt 或自签名)、外部访问策略、存储布局、镜像和引导行为。一旦完成协调,Operator 会创建并管理所有底层 Kubernetes 对象,包括 StatefulSet、Service、Ingress、Job 和 PVC。 **主要特性**: - **证书和 TLS 管理**:支持使用 RavenDB 内置功能的 Let's Encrypt 模式、自签名/自带证书、来自 RavenDB Setup Package 的每节点证书,以及在证书续期时自动轮换 Secret。 - **集群引导**:运行一个短时 Kubernetes Job 来等待 Pod 就绪、验证 HTTPS 可达性、注册 ClusterAdmin 客户端证书,并根据声明的节点拓扑形成集群。 - **外部访问**:支持 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` 进行本地部署,支持验证和变更准入 Webhook、服务端应用(server-side apply)以及增量协调。 **先决条件**:Kubernetes 1.23+、kubectl、Helm、cert-manager、RavenDB 许可证,以及 Let's Encrypt 设置材料或自签名证书。