kubectl apply
تطبيق ملف تعريف Kubernetes kubectl apply
kubectl apply ينشئ أو يحدّث موارد Kubernetes (Deployment، Service...) لتطابق ملف YAML المُعطى، بدل الأوامر الحتمية (imperative) خطوة بخطوة.
kubectl apply -f يقرأ ملف YAML ويقارنه بالحالة الحالية في الـ cluster، ثم يطبّق فقط الفروقات اللازمة لتصبح الحالة الفعلية مطابقة لما هو موصوف في الملف — سواء كان المورد غير موجود أصلاً (يُنشأ) أو موجوداً بإعدادات مختلفة (يُحدَّث). هذا النهج التصريحي (declarative) هو الأسلوب الموصى به في CI/CD بدل أوامر حتمية مثل kubectl create أو kubectl edit، لأنه يمكن تكراره بأمان (idempotent) وتتبعه بـ Git.
يقبل ملفاً واحداً أو مجلداً كاملاً من ملفات YAML بـ -f ./dir، ويُستخدم غالباً كخطوة نشر أخيرة في pipeline بعد بناء الصورة ودفعها لسجل الحاويات.
الصياغة
kubectl apply -f <ملف.yaml> kubectl apply -f <مجلد>/
📄 مثال
kubectl apply -f deployment.yaml kubectl apply -f service.yaml # أو كل ملفات مجلد واحد: kubectl apply -f k8s/
أهم النقاط
| العنصر | الوظيفة |
|---|---|
| -f | مسار ملف YAML واحد أو مجلد يحتوي عدة ملفات |
| السلوك التصريحي | يطبّق فقط الفروقات بين الملف والحالة الحالية، لا يعيد إنشاء كل شيء من الصفر |
| --dry-run=client | يعرض ما سيتغير دون تطبيقه فعلياً — مفيد للتحقق داخل CI قبل النشر الفعلي |
💡 نصائح عملية
- استخدم apply لا create في CI/CD — create يفشل إذا كان المورد موجوداً أصلاً، بينما apply يحدّثه بأمان
- اربط kubectl rollout status مباشرة بعد apply في خطوة الـ CI لضمان انتظار اكتمال النشر قبل اعتباره ناجحاً
⚠️ أخطاء شائعة
- تعديل موارد الـ cluster يدوياً بـ kubectl edit ثم تشغيل apply لاحقاً — الفروقات اليدوية تُستبدل بصمت بما هو في الملف
- نسيان تتبع ملفات YAML في Git، فيصبح النشر غير قابل لإعادة الإنتاج أو المراجعة
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DEVOPS الكامل بالعربي.
📚 للتعمق التقني الكامل بالإنجليزية: MDN Web Docs