أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالعروض
أحمد حايس

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

المنصة مبنية على الوضوح، التطبيق، والنتيجة النافعة: شرح مرتب يساعدك تفهم الأدوات، تكتب كودًا أفضل، وتستخدم الذكاء الاصطناعي بوعي داخل العمل الحقيقي.

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • العروض
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع
محتاج مسار سريع؟
ابدأ من الدوراتتواصل معناالأسئلة الشائعة

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالعروضالمدونةالدخول

Kyverno بالعربي: امنع أخطاء Kubernetes قبل الـ Deploy

📅 ٢٤ أبريل ٢٠٢٦⏱ 5 دقائق قراءة
Kyverno بالعربي: امنع أخطاء Kubernetes قبل الـ Deploy

Kyverno بالعربي: امنع أخطاء Kubernetes قبل الـ Deploy

هتعرف هنا إزاي تمنع خطأ شائع في Kubernetes قبل ما يدخل الكلاستر: container من غير resource limits. النتيجة العملية: أعطال أقل، مراجعات أسرع، وقرار أوضح بين Audit وEnforce.

مستوى القارئ: متوسط. الافتراض إنك بتستخدم Kubernetes بالفعل، وعندك فريق بينشر YAML أو Helm charts على بيئات staging وproduction.

المشكلة باختصار

الطريقة الشائعة إن الفريق يراجع ملفات Kubernetes يدويًا في pull request. الطريقة دي بتفشل لما عدد الخدمات يزيد، أو لما chart جاهز من طرف ثالث يدخل من غير مراجعة كافية. اللي بيحصل فعلاً إن deployment صغير من غير memory limit يشتغل عادي، وبعد يوم ضغط يزاحم خدمات تانية على نفس node.

لو عندك 40 microservice وكل واحدة بتعمل deploy مرتين في الأسبوع، فأنت قدام 80 فرصة أسبوعيًا لخطأ config بسيط. حتى لو المراجعة اليدوية بتاخد 5 دقائق لكل PR، ده حوالي 6 ساعات ونصف شهريًا على فحص قابل للأتمتة.

رفوف خوادم حديثة تمثل بيئة Kubernetes تحتاج سياسات قبول قبل النشر

الفكرة: Policy-as-Code بدل المراجعة اليدوية

Kyverno هو admission controller لكلاستر Kubernetes. بمعنى بسيط: أي object جديد، مثل Pod أو Deployment، يعدي على بوابة فحص قبل ما Kubernetes يقبله. لو الـ object مخالف للسياسة، Kyverno يرفضه أو يسجل مخالفة حسب الوضع اللي اخترته.

مثال قريب: عندك باب شركة عليه موظف أمن. الموظف مش بيصلح الكارت، لكنه يقرر هل الكارت صالح للدخول أم لا. Kyverno يعمل نفس الشيء مع YAML. هو لا يكتب architecture بدل الفريق، لكنه يمنع config واضح إنه خطر.

علميًا، Kyverno يستخدم سياسات declarative داخل Kubernetes، ويدعم validation وmutation وgeneration. في validation تحديدًا، تقدر تختار Audit لتسجيل المخالفة فقط، أو Enforce لمنع الإنشاء أو التحديث المخالف. هذا مذكور في توثيق Kyverno الرسمي لقواعد التحقق.

مثال عملي: امنع Pods بدون memory وCPU limits

ركز في السياسة دي. هي تمنع أي Pod في namespaces محددة لو container مفيهوش requests وlimits للـ CPU والذاكرة. ابدأ بها على staging بوضع Audit لمدة أسبوع، وبعدها حوّلها إلى Enforce لو عدد المخالفات بقى مفهوم.

YAML
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-container-resources
spec:
  validationFailureAction: Audit
  background: true
  rules:
    - name: require-requests-and-limits
      match:
        any:
          - resources:
              kinds:
                - Pod
              namespaces:
                - staging
                - production
      validate:
        message: "كل container لازم يحتوي على CPU/memory requests وlimits."
        pattern:
          spec:
            containers:
              - name: "*"
                resources:
                  requests:
                    cpu: "?*"
                    memory: "?*"
                  limits:
                    cpu: "?*"
                    memory: "?*"

طبّقها بهذا الشكل:

Bash
kubectl apply -f require-container-resources.yaml
kubectl get clusterpolicy require-container-resources
kubectl get policyreport -A

بعد أسبوع، لو المخالفات اتصلحت، غيّر validationFailureAction إلى Enforce. المكسب هنا إن أي deploy مخالف هيتوقف قبل ما يضغط على node. التكلفة إن بعض الـ charts القديمة هتحتاج values إضافية، وبعض فرق التطوير هتشتكي أول يومين لأن الخطأ بقى ظاهرًا بدل ما يكون مخفيًا.

سيناريو واقعي بالأرقام

افترض إن عندك متجر إلكتروني بـ 50K زائر يوميًا، وخدمة search بتستهلك ذاكرة بشكل متذبذب. من غير limits، pod واحد ممكن يسحب 1.5GB بدل 400MB وقت indexing، فيضغط على node عليها checkout وpayment. مش لازم الخدمة تقع فورًا؛ أحيانًا تبدأ latency تزيد من 180ms إلى 900ms، وبعدها تكتشف المشكلة من التنبيهات.

بالسياسة السابقة، أي deployment جديد لازم يصرّح بالـ requests والـ limits. حتى لو الرقم مش مثالي من أول مرة، وجوده يخلي scheduler عنده معلومة أفضل، ويخلي المراجعة الفنية تدور حول رقم واضح بدل سؤال عام: هل الخدمة آمنة؟

شاشة تطوير تعرض ملفات إعدادات تمثل مراجعة سياسات Kubernetes قبل تطبيقها

Audit ولا Enforce؟

أفضل طريقة تبدأ بها هي Audit. ده يسمح للتطبيقات الحالية تكمل شغلها، وفي نفس الوقت يديك تقرير بالمخالفات. الـ trade-off هنا واضح: Audit لا يمنع الخطر فورًا، لكنه يقلل احتمالية تعطيل الفريق. Enforce يمنع الخطأ فورًا، لكنه ممكن يكسر deploy مهم لو السياسات لم تتدرج.

قاعدة عملية: استخدم Audit لمدة 7 إلى 14 يومًا على سياسة جديدة. لو عدد المخالفات أقل من 5 لكل فريق، حوّلها إلى Enforce. لو المخالفات أكبر من كدا، المشكلة غالبًا مش في الأداة؛ المشكلة إن standards نفسها مش واضحة للفرق.

متى لا تستخدم هذه الطريقة

لا تبدأ بـ Kyverno لو الكلاستر نفسه غير مستقر، أو لو الفريق لا يملك baseline واضح للـ resources. السياسة الصارمة فوق بنية غير مفهومة هتزود الضوضاء. كمان لو أنت على Kubernetes v1.30 أو أحدث وتحتاج validation بسيطة جدًا بـ CEL فقط، راجع ValidatingAdmissionPolicy الأصلي في Kubernetes؛ قد يكون كافيًا لبعض الحالات الخفيفة.

استخدم Kyverno لما تحتاج reporting، background scans، exceptions، أو سياسات أوسع من validation البسيطة. أما لو المطلوب شرط واحد داخلي وسهل، فالأداة الأخف قد تكون أفضل.

المصادر

  • Kyverno Validate Rules: يشرح Audit وEnforce وسلوك validation.
  • Kyverno ClusterPolicy Overview: يشرح ترتيب mutation وvalidation داخل السياسات.
  • Kubernetes Validating Admission Policy: بديل declarative مبني على CEL ومناسب لبعض حالات validation.
  • Kyverno ValidatingPolicy: يوضح الفرق بين ValidatingPolicy وValidatingAdmissionPolicy.

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

افتح أكثر namespace عليه deploys متكررة، وشغّل السياسة السابقة بوضع Audit لمدة أسبوع. بعد ما تشوف PolicyReport، اختار أهم مخالفة واحدة وحوّلها إلى Enforce بدل ما تحاول تقفل كل شيء مرة واحدة.

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة