تحديث تطبيق حيّ دون قطع الخدمة تحدٍّ حقيقي. يحلّه الـ Deployment عبر التحديثات المتدرّجة. درس متوسّط.
⚠️ الأوامر تمثيلية؛ شغّلها على عنقودك للتأكّد.
كيف يعمل التحديث المتدرّج؟
حين تغيّر صورة الـ Deployment، لا يستبدل Kubernetes كل الـ pods دفعةً واحدة. بل ينشئ pods بالنسخة الجديدة تدريجيًا ويزيل القديمة، مع إبقاء الخدمة متاحة طوال العملية — بمساعدة فحوص الجاهزية التي تمنع توجيه الترافيك لنسخة غير جاهزة.
الخطوة 1: أطلق التحديث
غيّر الصورة إلى نسخة جديدة:
kubectl set image deployment/hello hello=nginx:1.28
أو عدّل image في ملفّ YAML وأعد kubectl apply -f deployment.yaml (النهج الإعلاني المفضّل).
الخطوة 2: تابع الطرح
kubectl rollout status deployment/hello
يعرض لك تقدّم التحديث حتى اكتماله، فتتأكّد أنّ النسخة الجديدة تعمل.
الخطوة 3: التراجع عند الخطأ
إن تبيّن أنّ النسخة الجديدة معطوبة، تراجع فورًا إلى النسخة السابقة المستقرّة:
kubectl rollout undo deployment/hello
هذه شبكة الأمان التي تجعل التحديثات المتكرّرة آمنة.
الخطوة 4: راجع سجلّ الإصدارات
kubectl rollout history deployment/hello
يعرض الإصدارات السابقة، فيمكنك التراجع إلى إصدار محدّد إن لزم.
نصيحة
اجعل فحوص الجاهزية والحياة مضبوطة جيّدًا؛ فهي ما يضمن ألّا يوجّه Kubernetes الترافيك إلى نسخة جديدة قبل جاهزيّتها — جوهر «دون توقّف».
الخطوات التالية
بهذا أتقنت دورة النشر الكاملة: إعداد، نشر، كشف، وتحديث. تاليًا: تشخيص المشكلات الشائعة، بدءًا من Pod عالق في CrashLoopBackOff.