Loading...

البيئات

بيئات blue/green (preprod ⇄ prod)

شغّل نسخة preprod من تطبيقك، واختبرها بالمدة التي تريدها دون المساس بالإنتاج، ثم بدّل الدومين المباشر إليها فورًا، مع تراجع بنفس السرعة.

العودة إلى مساعدة المنصة

كيف يعمل

  • يتكوّن المشروع من بيئتين: prod (مباشر) وpreprod. كل منهما تطبيق عادي بنطاق فرعي اختباري خاص ca-*.cdn.com.tr.
  • Promote ينقل دومين الإنتاج من prod إلى preprod خلال ثوانٍ دون انقطاع؛ وRollback يعيده بنفس السرعة.
  • ضمن تبويب Platforms للحساب → Managed Container Apps، لوحة "بيئات Blue/Green" (أعلى تطبيقاتك مباشرة) تحتوي على Create preprod وPromote وRollback.

إنشاء واختبار preprod

  • اضغط "Create preprod" على تطبيق prod: يستنسخ الصورة والـ env والأسرار والموارد وفحص الصحة إلى تطبيق preprod جديد.
  • انشر تطبيق preprod واختبره على نطاقه الفرعي بالمدة التي تريدها؛ يبقى الإنتاج دون تغيير.
  • عند الجاهزية اضغط Promote لجعل preprod مباشرًا؛ وإن حدث خطأ يعيدك Rollback إلى التطبيق السابق فورًا.
  • إذا كان المستودع متصلًا مع النشر التلقائي، ففضِّل خط أنابيب النشر: كل دفعة تنشر Staging تلقائيًا ولا يتغيّر الإنتاج إلا عند الترقية (Promote) (راجع دليل "خط أنابيب النشر").

الحالة (قاعدة البيانات والملفات الثابتة) وقابلية التراجع

  • shared: يستخدم preprod نفس قاعدة البيانات/Redis المُدارة ونفس buckets التخزين الكائني مثل prod (دون نسخ). مناسب لتغييرات الكود/الواجهة.
  • clone: يحصل preprod على MySQL مُدارة خاصة به مع نسخة من بيانات prod، وهو آمن لتغييرات البيانات/المخطط.
  • isolated: يبدأ preprod نظيفًا.
  • يأخذ Promote أولًا لقطة تلقائية لقاعدة البيانات؛ ويستعيدها Rollback، لذا تغييرات البيانات قابلة للتراجع أيضًا. يمكن مشاركة الملفات الثابتة على وحدة تخزين دائمة (RWX) لإبقاء الرفعات متسقة.
  • قبل نقل أي شيء تقارن الترقية كل الروابط ذات الحالة (إضافات MySQL/Redis/Postgres/NATS، القرص الدائم، object storage) بين الإنتاج والمرشح. عند أي اختلاف ترفض وتعرض كل مورد كـ SAME/DIFFERENT.
  • للمتابعة تختار صراحة: `cdnctl container apps promote --data-strategy preserve-production` يحافظ على كل روابط الإنتاج وينقل الصورة المختبرة فقط (موصى به)؛ `--data-strategy promote-with-data` يجعل بيانات المرشح بياناتِ الإنتاج مع تسجيل القرار.

أنشئ بيئة ما قبل الإنتاج واختبرها

  • اختر وضع الحالة وانقر على Create preprod (تطبيق واحد، أو "from all apps" للحساب بأكمله). فهو يستنسخ صورة كل تطبيق وبيئته وأسراره وموارده وفحص سلامته في تطبيق preprod جديد.
  • انشر تطبيق (تطبيقات) preprod واختبرها على نطاقاتها الفرعية ca-* الخاصة بها للمدة التي تحتاجها — يبقى الإنتاج نشطًا ودون أي تغيير طوال الوقت.
  • عندما تصبح جاهزًا، انقر على Promote؛ وإذا بدا أي شيء خاطئًا بعد الانتقال إلى المباشر، انقر على Rollback فتعود حركة المرور إلى التطبيقات السابقة فورًا.

الحالة (قاعدة البيانات والملفات الثابتة) — ما تشاركه preprod مع الإنتاج

  • المشترَك (الافتراضي): تستخدم preprod نفس قاعدة بيانات/Redis المُدارة وحاويات تخزين الكائنات مثل الإنتاج، عبر مراجع آمنة بين التطبيقات (دون نسخ). الأنسب لتغييرات الكود/الواجهة.
  • الاستنساخ: تحصل preprod على قاعدة MySQL مُدارة خاصة بها مع نسخة من بيانات الإنتاج — آمن لاختبار تغييرات البيانات أو المخطط؛ وبيانات الإنتاج تبقى دون مساس. (نسخ بيانات Postgres غير مدعوم بعد — ستبدأ فارغة.)
  • المعزول: تبدأ preprod نظيفة، بإضافاتها الجديدة الخاصة بها.
  • يمكن مشاركة الملفات الثابتة على وحدة تخزين دائمة (CephFS RWX) لتبقى الملفات المرفوعة متسقة عبر البيئات.

القابلية للتراجع والقيود

  • حركة المرور — مع ربط نطاقك الخاص: يربط Promote النطاق بالتطبيق الجديد أولًا، ثم يحرّر القديم (دون فجوة)؛ وRollback هو التبديل نفسه بالعكس — ثوانٍ، لا إعادة بناء.
  • حركة المرور — الإنتاج على نطاقه الفرعي ca-*.cdn.com.tr فقط: يطرح Promote صورة Staging المُختبَرة على تطبيق الإنتاج بتحديث متدرّج دون فجوة (تظل الحاوية القديمة تخدم حتى تصبح الجديدة جاهزة). تبقى الروابط ثابتة؛ والإعدادات (البيئة/الأسرار) لا تنتقل مع الصورة عن قصد.
  • البيانات: يأخذ Promote لقطة تلقائية لقاعدة البيانات أولًا، ويستعيدها Rollback، بحيث يمكن التراجع أيضًا عن تغييرات البيانات التي تمت بعد الانتقال إلى المباشر.
  • النطاق: كل شيء يحدث داخل حساب واحد، لذا لا تتأثر ملكية DNS ولا شهادة الإنتاج أبدًا.
  • غير متاح (بعد): الترقية بين الحسابات، ونسخ بيانات Postgres عند الاستنساخ، والترقية المعاملاتية الكاملة "الكل أو لا شيء" عبر تطبيقات متعددة (فهي بأفضل جهد لكل تطبيق، مع تقرير أخطاء لكل تطبيق).