About this project

The RavenDB Kubernetes Operator is the official tool for deploying and managing RavenDB clusters on Kubernetes. It provides a fully automated, declarative approach driven by a single `RavenDBCluster` custom resource, ensuring every component stays aligned with the declared specification for reproducible deployments. **Installation Methods**: The operator supports three installation approaches: Helm (recommended, with separate charts for the operator and each cluster), `make deploy` for local development and testing, and OLM bundles for clusters running Operator Lifecycle Manager. The Helm distribution is split into two charts: `ravendb-operator` (cluster-wide, installed once) and `ravendb-cluster` (per-namespace, installed once per RavenDB cluster). **Custom Resource**: The `RavenDBCluster` CRD is the single source of truth, defining node topology, TLS mode (Let's Encrypt or self-signed), external access strategy, storage layout, images, and bootstrap behavior. Once reconciled, the operator creates and manages all underlying Kubernetes objects including StatefulSets, Services, Ingresses, Jobs, and PVCs. **Key Features**: - **Certificate and TLS Management**: Supports Let's Encrypt mode using RavenDB's built-in support, self-signed/bring-your-own certificates, per-node certificates from a RavenDB Setup Package, and automatic secret rotation upon certificate renewal. - **Cluster Bootstrapping**: Runs a short-lived Kubernetes Job to wait for pods, validate HTTPS reachability, register the ClusterAdmin client certificate, and form the cluster based on the declared node topology. - **External Access**: Supports AWS Network Load Balancer (per-node with explicit EIP/subnet/AZ mapping), Azure Load Balancer, NGINX Ingress, HAProxy Ingress, and Traefik Ingress. - **Storage Configuration**: Declarative configuration of data, log, and audit volumes with support for local-path, AWS EBS/EBS-CSI, Azure Disk/Azure Disk CSI, and additional volumes (ConfigMap, Secret, PVC, emptyDir). - **Rolling Upgrades**: Orchestrates node-by-node upgrades in the order defined in the spec, with safety gates that stop on failure and automatically resume once issues are fixed. Prevents accidental version downgrades. - **Health and Status Reporting**: Exposes a lifecycle phase (`Deploying`, `Running`, `Error`), detailed conditions for readiness, progression, and health gates, and emits Kubernetes Events on every condition transition. - **Development Support**: Local deployment via `make deploy`, validating and mutating admission webhooks, server-side apply, and incremental reconciliations. **Prerequisites**: Kubernetes 1.23+, kubectl, Helm, cert-manager, a RavenDB License, and Let's Encrypt setup materials or self-signed certificates.