البيئات
بيئات 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 عند الاستنساخ، والترقية المعاملاتية الكاملة "الكل أو لا شيء" عبر تطبيقات متعددة (فهي بأفضل جهد لكل تطبيق، مع تقرير أخطاء لكل تطبيق).