Об этом проекте

Оператор RavenDB Kubernetes — это официальный инструмент для развертывания и управления кластерами RavenDB на Kubernetes. Он обеспечивает полностью автоматизированный декларативный подход, управляемый одним пользовательским ресурсом `RavenDBCluster`, гарантируя, что каждый компонент остается в соответствии с заявленной спецификацией для воспроизводимых развертываний. **Методы установки**: Оператор поддерживает три подхода к установке: Helm (рекомендуется, с отдельными чартами для оператора и каждого кластера), `make deploy` для локальной разработки и тестирования, а также OLM-пакеты для кластеров, работающих с Operator Lifecycle Manager. Дистрибутив Helm разделен на два чарта: `ravendb-operator` (устанавливается один раз в кластере) и `ravendb-cluster` (устанавливается один раз на каждый кластер RavenDB в пространстве имен). **Пользовательский ресурс**: CRD `RavenDBCluster` является единственным источником истины, определяющим топологию узлов, режим TLS (Let's Encrypt или самозаверяющие сертификаты), стратегию внешнего доступа, структуру хранилища, образы и поведение начальной загрузки. После применения оператор создает и управляет всеми нижележащими объектами Kubernetes, включая StatefulSets, Services, Ingresses, Jobs и PVCs. **Ключевые особенности**: - **Управление сертификатами и TLS**: Поддерживает режим Let's Encrypt с использованием встроенной поддержки RavenDB, самозаверяющие/собственные сертификаты, сертификаты для каждого узла из пакета настройки RavenDB, а также автоматическую ротацию секретов при обновлении сертификатов. - **Начальная загрузка кластера**: Запускает короткоживущую задачу Kubernetes для ожидания готовности подов, проверки доступности HTTPS, регистрации клиентского сертификата ClusterAdmin и формирования кластера на основе объявленной топологии узлов. - **Внешний доступ**: Поддерживает AWS Network Load Balancer (для каждого узла с явным сопоставлением EIP/подсети/зоны доступности), 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 при каждом изменении условий. - **Поддержка разработки**: Локальное развертывание с помощью `make deploy`, проверяющие и изменяющие допускающие вебхуки, server-side apply и инкрементальные сверки. **Предварительные требования**: Kubernetes 1.23+, kubectl, Helm, cert-manager, лицензия RavenDB, а также материалы для настройки Let's Encrypt или самозаверяющие сертификаты.