تخطَّ إلى المحتوى

عمليات Production

ستتعلم كيف تفكر كمهندس يشغل Kubernetes في Production: ما الذي تراجعه قبل release؟ ماذا تفعل أثناء incident؟ وكيف توثق rollback و runbooks؟

Production ليس “التطبيق يعمل الآن”. Production يعني أن لديك طريقة لتحديثه، مراقبته، تأمينه، استرجاعه، وتفسير قرارات الموارد والصلاحيات.

flowchart LR
Plan[Plan] --> Deploy[Deploy]
Deploy --> Observe[Observe]
Observe --> Respond[Respond]
Respond --> Learn[Postmortem]
Learn --> Plan
المحورسؤال قبل الإطلاق
Rolloutهل لدينا readinessProbe و rollback واضح؟
Resourcesهل requests/limits مبنية على قياسات؟
Securityهل RBAC و secrets و image source مقبولة؟
Networkingهل Ingress/TLS/NetworkPolicy مختبرة؟
Dataهل backup و restore مجربان؟
Observabilityهل لدينا metrics و logs و alerts؟

runbook.md لأي خدمة يجب أن يحتوي:

# Service: web-api
## What it does
API for user-facing web requests.
## Dashboards
- Latency
- Error rate
- CPU and memory
## Common commands
kubectl -n prod get deploy web-api
kubectl -n prod rollout status deploy/web-api
kubectl -n prod logs deploy/web-api --tail=100
## Rollback
kubectl -n prod rollout undo deploy/web-api
## Dependencies
- PostgreSQL
- Redis
- External payment API
Terminal window
kubectl -n prod get deploy,po,svc,ingress
kubectl -n prod rollout status deploy/web-api
kubectl -n prod top pods
kubectl -n prod logs deploy/web-api --tail=100
kubectl -n prod describe deploy web-api
kubectl -n prod get events --sort-by=.metadata.creationTimestamp

ارجع الإصدار بسرعة إذا تحقق أحد هذه الشروط:

الشرطمثال
error rate مرتفع بعد release5xx زادت بعد deployment
latency تضاعفتp95 أصبح أكبر من SLO
Pods الجديدة غير readyrollout عالق
data migration فشلأخطاء في logs أو health check
Terminal window
kubectl -n prod rollout undo deployment/web-api
kubectl -n prod rollout status deployment/web-api
flowchart TD
A[Alert] --> B[تأكيد التأثير]
B --> C[تحديد آخر تغيير]
C --> D{هل rollback آمن؟}
D -->|نعم| E[Rollback]
D -->|لا| F[Mitigation]
E --> G[Verify]
F --> G
G --> H[Postmortem]
الخطأالنتيجةالحل
لا توجد readinessProbetraffic يصل قبل جاهزية التطبيقأضف readiness حقيقي
لا توجد limits/requestsscheduling سيء وطرد غير متوقعأضف resources مبنية على metrics
rollback غير مجربتأخير أثناء incidentجرب rollback في staging
backup بلا restore testثقة كاذبةنفذ restore دوري
صلاحيات واسعةخطر أمني كبيرleast privilege و مراجعات RBAC

Lab: Runbook و rollback لتطبيق web

المستوى: مبتدئ الوقت: 45 دقيقة الأدوات: kubectl

الهدف: إنشاء runbook قصير، تنفيذ rollout، ثم rollback موثق.

  • Deployment باسم web من دروس الأساسيات.
  1. سجل الحالة الحالية:
Terminal window
kubectl get deployment web
kubectl rollout history deployment/web
  1. نفذ تحديث:
Terminal window
kubectl set image deployment/web nginx=nginx:1.28
kubectl rollout status deployment/web
  1. اجمع أدلة التشغيل:
Terminal window
kubectl get pods -l app=web
kubectl logs deployment/web --tail=20
kubectl describe deployment web
  1. نفذ rollback:
Terminal window
kubectl rollout undo deployment/web
kubectl rollout status deployment/web
  1. اكتب في runbook: الأمر، expected output، ومتى تستخدمه.
deployment "web" successfully rolled out
deployment.apps/web rolled back
deployment "web" successfully rolled out

لا تحذف Deployment لو ستستخدمه في الدروس التالية. إن أردت التنظيف:

Terminal window
kubectl delete deployment web

الربط بالمشروع النهائي

Section titled “الربط بالمشروع النهائي”

Capstone لن يكتمل بمجرد تشغيل YAML. يجب أن تقدم runbook، checklist، rollback workflow، monitoring plan، وشرح قرارات resources وsecurity.