इस प्रोजेक्ट के बारे में

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 या self-signed), बाहरी पहुँच रणनीति, स्टोरेज लेआउट, इमेज और बूटस्ट्रैप व्यवहार को परिभाषित करता है। मेल-मिलाप के बाद, ऑपरेटर सभी अंतर्निहित Kubernetes ऑब्जेक्ट्स जैसे StatefulSets, Services, Ingresses, Jobs, और PVCs बनाता और प्रबंधित करता है। **मुख्य विशेषताएँ**: - **प्रमाणपत्र और TLS प्रबंधन**: RavenDB के अंतर्निहित समर्थन का उपयोग करके Let's Encrypt मोड, self-signed/bring-your-own प्रमाणपत्र, RavenDB सेटअप पैकेज से प्रति-नोड प्रमाणपत्र, और प्रमाणपत्र नवीनीकरण पर स्वचालित सीक्रेट रोटेशन समर्थित है। - **क्लस्टर बूटस्ट्रैपिंग**: पॉड्स की प्रतीक्षा करने, HTTPS पहुँच सत्यापित करने, ClusterAdmin क्लाइंट प्रमाणपत्र पंजीकृत करने और घोषित नोड टोपोलॉजी के आधार पर क्लस्टर बनाने के लिए एक अल्पकालिक Kubernetes Job चलाता है। - **बाहरी पहुँच**: AWS Network Load Balancer (स्पष्ट EIP/subnet/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` के माध्यम से स्थानीय तैनाती, validating और mutating admission webhooks, server-side apply, और वृद्धिशील मेल-मिलाप। **पूर्वापेक्षाएँ**: Kubernetes 1.23+, kubectl, Helm, cert-manager, RavenDB लाइसेंस, और Let's Encrypt सेटअप सामग्री या self-signed प्रमाणपत्र।