Deployments للتطبيقات عديمة الحالة
استخدم Deployments لإدارة التطبيقات عديمة الحالة، مع تمكين التحديثات التدريجية والتراجع عنها
Deployments للتطبيقات عديمة الحالة درس مجاني في Docker & DevOps Fundamentals على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Docker & DevOps Fundamentals، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.
تعرّفوا على Deployments في Kubernetes
مرحبًا بكم في مفهوم أساسي في Kubernetes: Deployments! فهي المورد الأساسي الذي تستخدمونه لإدارة التطبيقات عديمة الحالة.
فكروا في Deployment على أنها مخطط لتطبيقكم. فهي تخبر Kubernetes بعدد النسخ (replicas) التي تريدون تشغيلها من تطبيقكم، وكيفية تحديثها دون توقف.

ما بعد Pods وReplicaSets
لقد تعلمتم عن Pods (أصغر وحدة) وReplicaSets (التي تضمن عددًا محددًا من Pods).
تعمل Deployment فوق ReplicaSet، وتوفر طبقة تجريد أعلى من أجل:
- إنشاء ReplicaSets وتحديثها.
- طرح إصدارات جديدة من تطبيقكم.
- العودة إلى الإصدارات السابقة إذا حدث خطأ ما.
وهذا يجعل إدارة تطبيقاتكم أسهل وأكثر أمانًا بكثير.
داخل YAML الخاص بـ Deployment
مثل موارد Kubernetes الأخرى، تُعرَّف Deployments باستخدام YAML. لنلقِ نظرة على البنية الأساسية:
apiVersion: يحدد إصدار Kubernetes API (مثلapps/v1).kind: يكون دائمًاDeploymentلمورد Deployment.metadata: يحتوي على معلومات مثلnameالخاص بـ Deployment وlabelsالاختيارية.
تساعد هذه الحقول Kubernetes على تحديد عمليات النشر وتنظيمها.
تحديد النسخ والقالب
يكمن جوهر Deployment في قسم spec الخاص بها. وهنا تعرّفون ما يلي:
replicas: العدد المطلوب من Pods المتطابقة لتطبيقكم.selector: الطريقة التي تعثر بها Deployment على Pods التي تديرها (باستخدام التسميات).template: وهو في الأساس تعريف Pod يصف الحاويات ووحدات التخزين وغير ذلك لكل Pod.
يستخدم Deployment القالب template لإنشاء Pods جديدة.
Deployment الخاصة بنا لـ Nginx
إليكم ملف manifest بسيطًا لـ Deployment لخادم ويب Nginx. ويطلب هذا الملف من Kubernetes إبقاء 3 من Pods الخاصة بـ Nginx قيد التشغيل.
حاولوا فهم كل جزء!
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80إنشاء Deployment الخاصة بكم
بعد إعداد ملف YAML الخاص بـ Deployment (مثل nginx-deployment.yaml)، يمكنكم إنشاء Deployment في عنقود Kubernetes باستخدام الأمر kubectl apply.
بعد ذلك، ستضمن Kubernetes إنشاء العدد المطلوب من Pods والحفاظ عليه.
kubectl apply -f nginx-deployment.yamlيمكنكم التحقق من حالتها باستخدام:
kubectl get deploymentsالتوسعة والتقليص
هل تحتاجون إلى عدد أكبر أو أقل من مثيلات تطبيقكم؟ تجعل Deployments عملية التوسعة سهلة! يمكنكم تعديل الحقل replicas في ملف YAML ثم إعادة تطبيقه، أو استخدام أمر مباشر:
kubectl scale deployment nginx-deployment --replicas=5سيطلب هذا الأمر فورًا من Deployment إنشاء Pods إضافيتين من Nginx، ليصبح المجموع 5.
تحديثات دون توقف
من أكبر فوائد Deployments قدرتها على تنفيذ التحديثات المتدرجة. فعند تحديث قالب Pod (مثل تغيير إصدار الصورة)، لا تغلق Kubernetes جميع Pods القديمة دفعة واحدة.
بل تستبدل Pods القديمة بالجديدة تدريجيًا، مما يضمن استمرار إتاحة تطبيقكم طوال عملية التحديث.
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1التراجع بسهولة
هل ارتكبت خطأً في أحد التحديثات؟ لا داعي للقلق! تحتفظ عمليات النشر بسجل لمراجعاتك، مما يتيح لك التراجع بسهولة إلى إصدار سابق ومستقر.
يُسمى هذا التراجع، وهو شبكة أمان أساسية لعمليات النشر.
kubectl rollout undo deployment/nginx-deploymentيمكنك أيضًا التحقق من السجل باستخدام kubectl rollout history deployment/nginx-deployment.
حان وقت اختبار عمليات النشر
يقوم مطوّر بتحديث Deployment لـ Nginx من الصورة nginx:1.14.2 إلى nginx:1.16.1. ما الفائدة الأساسية من استخدام Deployment في Kubernetes لهذا التحديث؟
عمليات النشر: أهم النقاط
أحسنت! لقد تعلمت عن Deployments في Kubernetes، وهي مورد قوي لإدارة تطبيقاتك عديمة الحالة.
- تدير Deployments كائنات ReplicaSets، التي تدير بدورها Pods.
- تحدد الحالة المطلوبة، بما في ذلك عدد
replicas. - تشمل الميزات الأساسية التوسعة بسهولة، والتحديثات التدريجية دون توقف، والتراجع المباشر إلى الإصدارات السابقة.
بعد ذلك، سنستكشف Services لإتاحة الوصول إلى تطبيقاتك!
الأسئلة الشائعة
هل درس «Deployments للتطبيقات عديمة الحالة» مجاني؟
نعم — نص درس «Deployments للتطبيقات عديمة الحالة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Docker & DevOps Fundamentals، انتقل إلى CoddyKit PRO. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.
ماذا ستتعلم في «Deployments للتطبيقات عديمة الحالة»؟
استخدم Deployments لإدارة التطبيقات عديمة الحالة، مع تمكين التحديثات التدريجية والتراجع عنها تتمرن على Docker & DevOps Fundamentals مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Docker & DevOps Fundamentals؟
لا تُشترط خبرة سابقة. Docker & DevOps Fundamentals على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «Deployments للتطبيقات عديمة الحالة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Docker & DevOps Fundamentals هذا؟
نعم. كل درس في Docker & DevOps Fundamentals يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Deployments للتطبيقات عديمة الحالة
- Services للوصول عبر الشبكة
- ConfigMaps وSecrets
- Ingress والتوجيه الخارجي