À propos du projet

L'opérateur Kubernetes de RavenDB est l'outil officiel pour déployer et gérer des clusters RavenDB sur Kubernetes. Il offre une approche entièrement automatisée et déclarative pilotée par une seule ressource personnalisée `RavenDBCluster`, garantissant que chaque composant reste aligné sur la spécification déclarée pour des déploiements reproductibles. **Méthodes d'installation** : L'opérateur prend en charge trois approches d'installation : Helm (recommandé, avec des charts séparés pour l'opérateur et chaque cluster), `make deploy` pour le développement et les tests locaux, et des bundles OLM pour les clusters exécutant Operator Lifecycle Manager. La distribution Helm est divisée en deux charts : `ravendb-operator` (à l'échelle du cluster, installé une fois) et `ravendb-cluster` (par namespace, installé une fois par cluster RavenDB). **Ressource personnalisée** : Le CRD `RavenDBCluster` est la source unique de vérité, définissant la topologie des nœuds, le mode TLS (Let's Encrypt ou auto-signé), la stratégie d'accès externe, la disposition du stockage, les images et le comportement d'amorçage. Une fois réconcilié, l'opérateur crée et gère tous les objets Kubernetes sous-jacents, y compris StatefulSets, Services, Ingresses, Jobs et PVC. **Fonctionnalités clés** : - **Gestion des certificats et TLS** : Prend en charge le mode Let's Encrypt utilisant le support intégré de RavenDB, les certificats auto-signés ou apportés par l'utilisateur, les certificats par nœud provenant d'un package de configuration RavenDB, et la rotation automatique des secrets lors du renouvellement des certificats. - **Amorçage du cluster** : Exécute un Job Kubernetes de courte durée pour attendre les pods, valider l'accessibilité HTTPS, enregistrer le certificat client ClusterAdmin et former le cluster en fonction de la topologie déclarée. - **Accès externe** : Prend en charge AWS Network Load Balancer (par nœud avec mappage explicite EIP/sous-réseau/AZ), Azure Load Balancer, NGINX Ingress, HAProxy Ingress et Traefik Ingress. - **Configuration du stockage** : Configuration déclarative des volumes de données, journaux et audit avec prise en charge de local-path, AWS EBS/EBS-CSI, Azure Disk/Azure Disk CSI, et volumes supplémentaires (ConfigMap, Secret, PVC, emptyDir). - **Mises à niveau progressives** : Orchestre les mises à niveau nœud par nœud dans l'ordre défini dans la spécification, avec des portes de sécurité qui s'arrêtent en cas d'échec et reprennent automatiquement une fois les problèmes résolus. Empêche les rétrogradations accidentelles de version. - **Rapports de santé et d'état** : Expose une phase de cycle de vie (`Deploying`, `Running`, `Error`), des conditions détaillées pour la préparation, la progression et les portes de santé, et émet des événements Kubernetes à chaque transition de condition. - **Support de développement** : Déploiement local via `make deploy`, webhooks d'admission validants et mutants, application côté serveur et réconciliations incrémentales. **Prérequis** : Kubernetes 1.23+, kubectl, Helm, cert-manager, une licence RavenDB, et des matériaux de configuration Let's Encrypt ou des certificats auto-signés.