template-gallery) في كل pod من Ayakaleaf Pro؛ أما خدمة filestore في الـ pod نفسه فتخزّن ملفات القوالب وتعرض معايناتها. الفئات والصلاحيات والنشر موضّحة في القوالب.
الإعداد
1
ConfigMap
30-config.yaml (additions)
2
مستخدم للقوالب (اختياري)
يستطيع المسؤولون النشر دائمًا. للسماح لمستخدم غير مسؤول بإدارة المعرض، أنشئ المستخدم، واقرأ معرّفه من MongoDB وضعه في الـ ConfigMap:
3
التطبيق وإعادة التشغيل
عدة نسخ متماثلة
- يجب أن تكون ملفات القوالب في S3: فإذا كانت الملفات على القرص الخاص بكل نسخة متماثلة (replica)، فستعرض كل عقدة معرضًا مختلفًا. ويستخدم إعداد التوسّع الأفقي بالفعل حاوية التخزين
overleaf-template-files. - يأخذ النشر ملف PDF الناتج عن آخر عملية ترجمة للمشروع، والذي لا يوجد إلا على النسخة المتماثلة التي أجرت الترجمة. يُبقي ملف تعريف الارتباط الثابت (sticky cookie) الخاص بموازن الأحمال المستخدمَ على تلك النسخة المتماثلة، لذا انشر من جلسة المتصفح نفسها التي أجريت منها الترجمة.
الاختبار على Kubernetes
على Kubernetes 1.37 مع ثلاث نسخ متماثلة خلف HAProxy، ومع ملفات القوالب في حاوية S3 overleaf-template-files (Garage)، تنجح اختباراتنا الشاملة (end-to-end) لمعرض القوالب (41 حالة): نشر مشروع مُترجَم من قائمة File، وتقديم ملف PDF وصور المعاينة وملف ZIP للمصدر من حاوية التخزين؛ وإنشاء مشاريع من قالب؛ والفئات والبحث والفرز وصفحات المعرض؛ وتحرير القوالب واستبدالها وحذفها؛ وصلاحيات المسؤولين والمستخدمين العاديين ومستخدم القوالب المحدّد في OVERLEAF_TEMPLATES_USER_ID (مع قراءة معرّفه من MongoDB كما هو موضّح أعلاه)؛ والطلبات المشوّهة.
