انتقل إلى المحتوى الرئيسي

المختبر 3.3 - عمليات النشر والتحديثات المتدرجة

الأهداف​

في نهاية هذا المختبر، ستكون قادرًا على:

  • إنشاء وإدارة عمليات النشر
  • تنفيذ التحديثات المتدرجة
  • إدارة التراجعات
  • توسيع عمليات النشر

التمرين 1: إنشاء عملية نشر​

الخطوة 1: إنشاء ملف YAML​

قم بإنشاء deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
labels:
app: web
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80

الخطوة 2: التطبيق​

kubectl apply -f deployment.yaml

الخطوة 3: التحقق​

# عرض عملية النشر
kubectl get deployment

# عرض مجموعات النسخ المتماثلة التي تم إنشاؤها
kubectl get replicasets

# عرض البودات
kubectl get pods -l app=web

التمرين 2: التحديث المتدرج​

الخطوة 1: تحديث الصورة​

# التحديث إلى nginx:1.21
kubectl set image deployment/web-deployment nginx=nginx:1.21

# مراقبة العملية
kubectl rollout status deployment/web-deployment

الخطوة 2: مراقبة مجموعات النسخ المتماثلة​

# عرض مجموعات النسخ المتماثلة
kubectl get replicasets -w

# في نافذة طرفية أخرى، عرض البودات
kubectl get pods -l app=web -w

ملاحظة: يتم إنشاء مجموعة نسخ متماثلة جديدة، ويتم استبدال البودات تدريجيًا.


التمرين 3: التراجع​

الخطوة 1: عرض التاريخ​

# تاريخ التحديثات
kubectl rollout history deployment/web-deployment

# تفاصيل مراجعة معينة
kubectl rollout history deployment/web-deployment --revision=2

الخطوة 2: تنفيذ التراجع​

# التراجع إلى الإصدار السابق
kubectl rollout undo deployment/web-deployment

# التحقق
kubectl rollout status deployment/web-deployment

الخطوة 3: التراجع إلى مراجعة محددة​

# التراجع إلى المراجعة 1
kubectl rollout undo deployment/web-deployment --to-revision=1

التمرين 4: التوسيع​

الخطوة 1: التوسيع اليدوي​

# زيادة إلى 5 نسخ
kubectl scale deployment web-deployment --replicas=5

# التحقق
kubectl get pods -l app=web

الخطوة 2: التوسيع عبر التحرير​

# تحرير عملية النشر
kubectl edit deployment web-deployment

# تعديل replicas: 5 إلى replicas: 2
# حفظ والخروج

التمرين 5: الإيقاف والاستئناف​

# إيقاف التحديث
kubectl rollout pause deployment/web-deployment

# إجراء التعديلات
kubectl set image deployment/web-deployment nginx=nginx:1.22

# التحقق (لا شيء يتغير)
kubectl get pods -l app=web

# استئناف التحديث
kubectl rollout resume deployment/web-deployment

# المراقبة
kubectl rollout status deployment/web-deployment

التنظيف​

kubectl delete deployment web-deployment

أسئلة للتفكير​

  1. ما الفرق بين عملية النشر ومجموعة النسخ المتماثلة؟
  2. كيف يعمل التحديث المتدرج؟
  3. لماذا يتم استخدام التراجع؟
  4. متى يتم استخدام الإيقاف/الاستئناف؟

الخطوات التالية​

المختبر 3.4: تكوين فحوصات الصحة
الفصل 3.8: فحوصات الصحة


تم إنشاء المختبر في: ديسمبر 2024