عن المشروع

مشغّل RavenDB Kubernetes هو الأداة الرسمية لنشر وإدارة عناقيد RavenDB على Kubernetes. يوفّر نهجاً آلياً بالكامل وتصريحياً يعتمد على مورد مخصص واحد يسمى `RavenDBCluster`، لضمان بقاء كل مكوّن متوافقاً مع المواصفات المُعلنة لعمليات نشر قابلة للتكرار. **طرق التثبيت**: يدعم المشغّل ثلاث طرق للتثبيت: Helm (موصى بها، مع مخططات منفصلة للمشغّل ولكل عنقود)، و `make deploy` للتطوير والاختبار المحلي، وحزم OLM للعناقيد التي تشغّل مدير دورة حياة المشغّلات. توزيعة 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 (لكل عقدة مع تعيين صريح لعنوان EIP/الشبكة الفرعية/منطقة التوفر)، وموازن تحميل Azure، و NGINX Ingress، و HAProxy Ingress، و Traefik Ingress. - **تكوين التخزين**: تكوين تصريحي لوحدات تخزين البيانات والسجلات والتدقيق مع دعم للمسار المحلي، و AWS EBS/EBS-CSI، و Azure Disk/Azure Disk CSI، ووحدات تخزين إضافية (ConfigMap و Secret و PVC و emptyDir). - **الترقيات المتدحرجة**: تنظيم ترقيات عقدة تلو الأخرى بالترتيب المحدد في المواصفات، مع بوابات أمان تتوقف عند الفشل وتستأنف تلقائياً بمجرد إصلاح المشكلات. يمنع تخفيض الإصدارات عن طريق الخطأ. - **تقرير الصحة والحالة**: يكشف مرحلة دورة الحياة (`Deploying`، `Running`، `Error`)، وشروطاً مفصلة للجاهزية والتقدم وبوابات الصحة، ويصدر أحداث Kubernetes عند كل انتقال للحالة. - **دعم التطوير**: نشر محلي عبر `make deploy`، وخطافات قبول للتحقق والتعديل، وتطبيق من جانب الخادم، ومصالحات تدريجية. **المتطلبات الأساسية**: Kubernetes 1.23+، و kubectl، و Helm، و cert-manager، ورخصة RavenDB، ومواد إعداد Let's Encrypt أو شهادات ذاتية التوقيع.