فهم Deployments
تعلّم كيف تعمل Deployments على أتمتة إدارة الوحدات وReplicaSets للتطبيقات عديمة الحالة
فهم Deployments درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ما هي Deployments؟
مرحبًا! تعني إدارة التطبيقات في Kubernetes إدارة الـ Pods الخاصة بها. لكن إدارة الـ Pods الفردية أو حتى ReplicaSets مباشرةً قد تصبح معقدة.
إن Deployment كائن ذو مستوى أعلى يبسّط إدارة التطبيقات عديمة الحالة. ويمكنكم اعتباره مدير تطبيقكم.
- يحدد الحالة المطلوبة لتطبيقكم.
- يضمن الحفاظ على تلك الحالة حتى في حال تعطل بعض الـ Pods.
- يؤتمت عمليات التحديث والتراجع.
لماذا نستخدم Deployments؟
توفر Deployments مزايا مهمة لتشغيل التطبيقات بشكل موثوق في Kubernetes:
- الإدارة المؤتمتة: تتولى إنشاء الـ Pods وتوسيع نطاقها وحذفها.
- المعالجة الذاتية: إذا تعطل Pod، تستبدله Deployment تلقائيًا للحفاظ على عدد النسخ المطلوب.
- التحديثات التصريحية: تصفون الحالة الجديدة المطلوبة، وتتولى Deployment تحديد كيفية الوصول إليها، مثل طرح الإصدارات الجديدة تدريجيًا.
وهي الطريقة الموصى بها لإدارة التطبيقات عديمة الحالة.
الدور الأساسي لـ Deployment
تدير Deployment في جوهرها ReplicaSets. وتتمثل مهمة ReplicaSet في ضمان تشغيل عدد محدد من نسخ الـ Pod في جميع الأوقات.
لذلك تستخدم Deployment كائنات ReplicaSets لتحقيق هدفها: ضمان تشغيل العدد الصحيح من الـ Pods السليمة لتطبيقكم وفقًا لتعريفكم.
يجعل هذا التجريد تعريف دورة حياة تطبيقكم والحفاظ عليها أسهل بكثير.
بنية YAML الخاصة بـ Deployment
مثل معظم كائنات Kubernetes، تُعرّف Deployments باستخدام YAML. فيما يلي الأقسام الأساسية التي ستجدونها عادةً:
apiVersionوkind: يحددان نوع الكائن (Deployment).metadata: اسم Deployment وتسمياته وغير ذلك.spec: التعريف الأساسي، ويشمل:replicas: العدد المطلوب من الـ Pods.selector: كيفية عثور Deployment على الـ Pods التي تديرها.template: المخطط الذي تُنشأ وفقًا له الـ Pods.
قالب الـ Pod
يُعد الحقل template داخل spec الخاص بـ Deployment مهمًا للغاية. فهو في الأساس تعريف كامل لـ Pod.
ستستخدم أي Pods تنشئها هذه Deployment هذا القالب. وهذا يعني أنكم تحددون ما يلي:
- صور الحاويات المستخدمة.
- المنافذ المطلوب كشفها.
- متغيرات البيئة.
- طلبات الموارد وحدودها.
- وغير ذلك الكثير!
تؤدي التغييرات في هذا القالب إلى بدء تحديثات التطبيق.
إنشاء Deployment بسيط
لنعرّف Deployment لخادم ويب Nginx بسيط. نريد 3 نسخ.
لاحظوا أن selector.matchLabels يجب أن يطابق template.metadata.labels. فهذا يخبر Deployment بالـ Pods التي تملكها.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80تطبيق Deployment
لإنشاء هذه Deployment في عنقود Kubernetes الخاص بكم، مثل Minikube، استخدموا الأمر kubectl apply. احفظوا YAML السابق باسم nginx-deployment.yaml.
سيُنشئ kubectl كائن Deployment. ثم تكتشف وحدة تحكم Deployment هذا الكائن وتتخذ الإجراء المناسب، فتنشئ ReplicaSet، التي تنشئ بدورها 3 من Pods الخاصة بـ Nginx.
kubectl apply -f nginx-deployment.yamlفحص Deployment
بعد التطبيق، يمكنكم التحقق من حالة Deployment والـ Pods التي تديرها:
kubectl get deployments: يعرض Deployment الخاصة بكم.kubectl get replicasets: يعرض ReplicaSet التي أنشأتها Deployment.kubectl get pods -l app=nginx: يعرض الـ Pods التي تديرها Deployment عبر محدد التسميات الخاص بها.kubectl describe deployment my-nginx-deployment: يوفر معلومات تفصيلية عن Deployment، بما في ذلك الأحداث.
kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment my-nginx-deploymentالحفاظ على الحالة المطلوبة
تتمثل إحدى أقوى ميزات Deployments في قدرتها على الحفاظ على الحالة المطلوبة. فإذا عرّفتم replicas: 3، فستضمن Deployment تشغيل 3 Pods دائمًا.
حاولوا حذف أحد Pods الخاصة بـ Nginx يدويًا باستخدام (kubectl delete pod <pod-name>). ستلاحظون أن Deployment تنشئ بسرعة Pod جديدًا لاستبداله! هذه هي المعالجة الذاتية عمليًا.
تحقق سريع
ما نوع التطبيق الذي تُستخدم Deployment لإدارته بشكل أساسي؟
مراجعة: فهم Deployments
أحسنتم! لقد خطوتم خطواتكم الأولى مع Deployments في Kubernetes.
- Deployments كائنات عالية المستوى لإدارة التطبيقات عديمة الحالة.
- تؤتمت إنشاء الـ Pods وتوسيع نطاقها ومعالجتها ذاتيًا من خلال إدارة ReplicaSets.
- تعرّفون Deployment باستخدام بيان YAML، مع تحديد العدد المطلوب من
replicasوtemplateللـ Pods. - ينشئ
kubectl applyDeployment، ويساعدكمkubectl get/describeعلى مراقبتها.
بعد ذلك، سنتعمق في ReplicaSets وكيف تضمن العدد المطلوب من الـ Pods!
الأسئلة الشائعة
هل درس «فهم Deployments» مجاني؟
نعم — نص درس «فهم Deployments» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «فهم Deployments»؟
تعلّم كيف تعمل Deployments على أتمتة إدارة الوحدات وReplicaSets للتطبيقات عديمة الحالة تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «فهم Deployments»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- فهم Deployments
- توسيع التطبيقات باستخدام ReplicaSets
- التحديثات التدريجية والتراجع
- استراتيجيات النشر: Blue-Green وCanary