${OVERLEAF_SITE_URL}/git/<project id>؛ ويمرّر Pod Ayakaleaf Pro هذه الطلبات إلى git-bridge، ويستدعي git-bridge بدوره الـ Pod للحصول على محتوى المشروع وسجلّه. يؤدي تفعيله أيضًا إلى تفعيل خادم MCP، وهو مطلوب للمزامنة مع GitHub وGitLab وGitea وDropbox.
توسّع هذه الصفحة التثبيت ذا النسخة المتماثلة الواحدة من استخدام Kubernetes. بالنسبة إلى عدة نسخ متماثلة، راجع التوسع الأفقي.
1
انشر git-bridge
45-git-bridge.yaml
10.96.100.80 عنوانًا حرًا داخل نطاق CIDR الخاص بخدمات الكتلة (القيمة الافتراضية في kubeadm هي 10.96.0.0/12).2
وجّه Ayakaleaf Pro إليه
أضف ما يلي إلى
30-config.yaml:30-config.yaml (additions)
3
استنسخ مشروعًا
أنشئ رمز مصادقة Git في Account Settings، ثم:استخدم
git اسمًا للمستخدم والرمز كلمةً للمرور.لماذا يبدو ملف التعريف (manifest) بهذا الشكل
- عنوان ClusterIP ثابت بوصفه
GIT_BRIDGE_HOST. يمرّر nginx داخل صورة Ayakaleaf Pro المسار/git/باستخدام محلّل (resolver) مضبوط على127.0.0.11، وهو خادم DNS المدمج في Docker. لا يوجد خادم DNS هناك في Kubernetes، لذا يفشل اسم مضيف مثلgit-bridgeمع الخطأ502والرسالة “git-bridge could not be resolved” في/var/log/nginx/error.log. أما عنوان IP فلا يحتاج إلى بحث. overleaf-internal. يحتاج git-bridge إلى المنفذين3000(الواجهة البرمجية لـ web) و3100(السجل) في Pod Ayakaleaf Pro. يُبقي Service منفصل من نوع ClusterIP هذين المنفذين داخل الكتلة؛ أما إضافتهما إلى الـ Service من نوع NodePort فستنشرهما على كل عقدة.enableServiceLinks: false. سيجعل الـ Service git-bridgeنظام Kubernetes يضيفGIT_BRIDGE_PORT=tcp://10.96.100.80:8000إلى الـ Pod؛ ويقرأ git-bridge المتغيرGIT_BRIDGE_PORTعلى أنه منفذ الاستماع الخاص به فيتوقف معMalformedJsonException ... path $.port.- نسخة متماثلة واحدة مع وحدة تخزين خاصة بها. يحتفظ git-bridge بمستودع git لكل مشروع مُستنسخ على القرص، ويجب ألا يعمل مرتين. احتفظ بنسخة احتياطية من وحدة التخزين الخاصة به.
الاختبار على Kubernetes
على Kubernetes 1.37 مع ثلاث نسخ متماثلة خلف HAProxy وgit-bridge بوصفه شقيقًا (sibling) لـoverleaf-0، نجحت اختباراتنا الشاملة للتكامل مع Git (19 حالة)، وكذلك بعد نقل git-bridge إلى المنفذ 8001 بحيث يتعيّن على nginx استخدام GIT_BRIDGE_HOST وGIT_BRIDGE_PORT: رموز Git في إعدادات الحساب، وأمر الاستنساخ في المحرر، والاستنساخ والدفع والسحب، والملفات الثنائية والمجلدات، وإعادة التسمية والحذف، ورفض عمليات الدفع غير المحدّثة، والوصول حسب الدور (يمكن للمحررين المدعوين والمحررين عبر الرابط الدفع، ولا يمكن للمشاهدين والمراجعين إلا الاستنساخ، ويُرفض المستخدمون الذين ليس لديهم وصول)، ورفض الرموز الخاطئة والمحذوفة، وإبقاء المسارات الداخلية لـ git-bridge خلف nginx، والحسابات المعلّقة. أما رموز مصادقة Git نفسها (التوليد، والإدراج، والحد الأقصى لكل مستخدم، والحذف، وانتهاء الصلاحية، والتحقق الذي يطلبه git-bridge من web، ورموز الحسابات المعلّقة والمحذوفة) فقد نجحت على نسخة متماثلة واحدة (16 حالة).
أسئلة وأجوبة
يُرجع git clone الخطأ 502.
يُرجع git clone الخطأ 502.
الإجابة: تحقّق من
GIT_BRIDGE_HOST: يجب أن يكون عنوان IP الخاص بالـ Service git-bridge، وليس اسمه، راجع ما سبق. يُظهر الأمر kubectl -n overleaf exec deploy/overleaf -- tail /var/log/nginx/error.log السبب.
