أنا أحاول إعداد منصة Discourse لمنظمتي على Kubernetes. ومع ذلك، هناك بعض المشكلات التي أواجهها.
عندما أحاول نشر الصورة المُهيأة مسبقًا على Kubernetes، يحاول النظام تنفيذ عمليات مثل git pull pups و git pull discourse، وهو ما لا يعمل لأنني أعمل على شبكة خاصة دون أي وصول إلى الإنترنت، ونتيجة لذلك لا يتم تشغيل الحاوية. هل توجد طريقة لتجاوز هذه الأجزاء حتى أتمكن من النشر؟
هل أنت متأكد من أنك تنشر صورة تم إنشاؤها مسبقًا؟ يبدو أنك قمت برفع الصورة الخاطئة إلى سجل الصور الخاص بك.
أوه، هل هذا صحيح؟ أنا أستخدم الصورة التي تم إنشاؤها بواسطة ./launcher bootstrap app
إذن أنت تقول إنه لا ينبغي أن تحتوي الصورة النهائية التي تم إعدادها مبدئيًا على أي من هذه التبعيات؟
لا، لن تحتوي. بعد عملية التمهيد، ستكون هناك صورة local_discourse/app. هذه هي الصورة التي تحتاج إلى دفعها إلى السجل واستخدامها في أماكن أخرى.
لدي استفسار أخير، يبدو أنني قمت بدفع الصورة الخاطئة، خطأ مني. إذن بعد دفع الصورة الفعلية، يمكنني تغيير متغيرات البيئة أثناء نشر ك8س، أليس كذلك؟ مثل DISCOURSE_DB_HOST وما شابه؟ لأن لدي مجموعة مستقلة من قواعد بيانات PostgreSQL ومجموعة مستقلة من Redis!
لقد مررت بذلك، وفعلت ذلك. لا تقلق، هذه خطأ شائع جداً. لهذا السبب سألت ![]()
حسناً، الأمر معقد.
بينما يمكنك بسهولة تجاوز هذه المتغيرات، فقط أضف متغير البيئة ENV اللازم إلى تشغيل الحاوية، أثناء التمهيد نقوم بتشغيل عمليات الترحيل. إذا حاولت توجيه الصورة إلى قاعدة بيانات مختلفة بعد تمهيد قاعدة البيانات، فإن مخطط قاعدة البيانات سيكون خاطئاً تماماً. القيام بذلك سيجعلك تدخل في منطقة unsupported-install.
لذا، لدي بالفعل مثيل من Discourse قيد التشغيل، لكنه يعمل على بنية معدنية خالصة (bare metal). أريد نقله إلى Kubernetes والربط بقاعدة البيانات نفسها التي كان يستخدمها المثيل على البنية المعدنية الخالصة.
أو إذا أمكن، هل يمكنني إعادة التمهيد (bootstrap) مع توجيه DISCOURSE_DB_HOST وDISCOURSE_DB_NAME إلى نفس قاعدة البيانات التي يستخدمها النظام المادي (bare metal)؟
هذا يجب أن يعمل!
قد ترغب في إيقاف حاوية Discourse الحالية المتصلة بقاعدة البيانات أثناء القيام بذلك، لأن عمليات الترحيل قد تجعلها تتصرف بطريقة معطلة.
إذا قمت بإنشاء قاعدة بيانات جديدة فارغة وتثبيت النظام عليها، فهل من الممكن نقل البيانات من خلال واجهة المستخدم (باستخدام واجهة مستخدم مثيل Discourse القديم والمثيل الجديد) مثل /admin/backups؟ أود تجنب تلف قاعدة البيانات القديمة لأنها مستخدمة من قبل عدد كبير من المستخدمين.
لا يمكنك الهجرة من واجهة المستخدم.
راجع إدخال الهجرة بعد النشر. يتيح لك هذا هجرة قاعدة البيانات بحيث تعمل مع الحاوية القديمة والحاوية الجديدة على حد سواء، ثم إجراء هجرات نهائية بعد النشر.
حسنًا، جربت ما قلته (دفعت الصورة المهيأة)، ويبدو أنني ما زلت أحصل على نفس الخطأ.
fatal: unable to access 'https://github.com/discourse/pups.git/': Failed to connect to github.com port 443: Connection timed out
أنا على شبكة خاصة لذا لا يمكنني الوصول إلى github.com
هذا يعني أنك دفعت الصورة الخاطئة، مرة أخرى.
يمكنني تغيير ملف /etc/hosts الداخلي لمحاكاة الموارد التي تريدها… ثم إضافة ما هو مطلوب.
أسهل من ذلك… أضف مودم/راوتر مع اتصال 4G/بطاقة SIM. اجعل الشبكة تتعرف على هذا الجهاز كالموجه الافتراضي لشبكتك الداخلية… اتصل… قم بالعمل… افصل الاتصال.
الأمر بسيط جدًا.
تحياتي
كيث جون هاتشيسون - Ceiteach Seán Mac Úistin
شركة Bringing Data to Life Pty. Ltd. (BD2L)
في هذه المرة، يبدو أنني متأكد جدًا
. هل هناك احتمال أن يحدث خطأ أثناء تشغيل الأمر
./launcher bootstrap app
علاوة على ذلك، جربت حتى استخدام صورة Discourse الحالية التي تعمل على العتاد المادي وتستضيف موقع Discourse الحالي لدينا، واستخدمتها على k8s، لكنها أيضًا تفشل بنفس الخطأ المذكور أعلاه.
حتى على جهازك المحلي، عندما أقوم بتشغيل
docker run local_discourse/app
بدون اتصال بالإنترنت، يبدو أنني أحصل على الخطأ المذكور أعلاه