Argo CD / الأتمتة والدورة والثقة / الدرس 10
صحة المورد المخصص كعقد ذي نسخة
فسر الشروط والجيل المرصود دون جعل الغائب سليماً.
في هذه الصفحة
أهداف الدرس
- شرح دور Lua وحدود تقييم الصحة.
- تصميم حالات القديم والغائب والمتقدم والفاشل.
يحتاج النوع المخصص معنى مجاله
تنتمي دلالة status لمتحكم النوع ونسخة API، ولا يستنتج Argo CD كل الجاهزية من حقل Ready. ParcelPolicy نوع افتراضي يفترض observedGeneration وready لهذا الدرس فقط. قد تختلف أسماء الحالات والأسباب والانتقالات فعلياً. راجع CRD ومتحكمها قبل المنطق؛ تخفي Healthy الدائمة عدم اليقين وقد تطلق اعتماداً مبكراً. لا يبرر اسم حقل مألوف تجاهل معنى الفشل أو غياب الملاحظة، ويجب أن يوضح العقد ما الذي يثبته المتحكم بالفعل لا ما يتمنى صاحب التطبيق أن يعنيه.
قد يختلف القصد الحالي والملاحظة القديمة
قد يحدد metadata.generation جيل المواصفة ويذكر status ما رآه المتحكم. قد تخص جاهزية أقدم قصد الأمس. العقد خاص بالنوع فلا تعمم observedGeneration. افصل الغياب والتأخر والفشل الصريح والنجاح الحالي. يجب أن يبقى التقييم محدوداً دون طلب خارجي أو تغيير لمجرد قراءة الحالة. لا تكفي مقارنة وقت آخر تحديث دون فهم الجيل؛ ربما يكتب المتحكم رسالة جديدة عن مواصفة قديمة. لذلك تحتاج قاعدة القبول وصفاً للملاحظة التي تربط الجاهزية بالنسخة المقصودة من الحالة المرغوبة.
اقرأ وظيفة صحة توضيحية محدودة
تعيد Lua المقترحة Progressing حتى تحقق الجيل ثم Healthy إذا كانت ready حقيقية. لا تُثبت ولا تمثل قاعدة عامة. تستلم الفحوص obj وتعيد حالة ورسالة اختيارية وفق release-3.1. الوصول للمكتبات القياسية مقيد افتراضياً، ولا يحتاج هذا الفحص البسيط فتحها كعلاج شامل. يحتاج النوع الحقيقي قرار فشل وغياب أجيال وتجهيزات ممثلة. لا تعني الصياغة التعليمية أن تغيير إعداد تحكم مسموح تلقائياً؛ يجب أن يراجع مالك التخصيص أثرها في التطبيق ومراحله التابعة قبل تطبيق مستقل مصرح.
local hs = { status = "Progressing", message = "Awaiting current observation" }
if obj.status ~= nil and obj.metadata ~= nil then
if obj.status.observedGeneration == obj.metadata.generation then
if obj.status.ready == true then
hs.status = "Healthy"
hs.message = "Current synthetic readiness observed"
end
end
end
return hs
خاص بالحقول الافتراضية ولا ينفذ أو يضبط. يحتاج النوع الحقيقي قرارات فشل وغياب جيل وحالات ممثلة؛ ليس تخصيصاً عاماً كاملاً.
اختبر ثابتاً في نموذج محلي منفصل
يرفض Python الكامل الغائب والقديم قبل قبول الحالي. يمثل ثابتاً لا Lua أو تجميع Argo CD أو المتحكم. لا يثبت نجاحه ملاءمة النص لـ CRD حقيقية. تحتاج الاختبارات الفعلية أداة مدعومة وبيئة مناسبة مصرحاً بها. احفظ الفشل الصريح والغياب والجيل القديم وready false والحالي true حتى لا يضعف تغيير متحكم العقد. لا يشمل النموذج معنى كل حالة لهذه المصفوفة، لكنه يظهر سبب أهمية الحداثة وحدود الادعاء المحلي دون تشغيل أي مورد.
def ready(generation, status):
return bool(status is not None and status.get("observedGeneration") == generation and status.get("ready") is True)
print(ready(4, None))
print(ready(4, {"observedGeneration": 3, "ready": True}))
print(ready(4, {"observedGeneration": 4, "ready": True}))
False
False
True
تُقيم قواميس فقط ولا تنفذ Lua أو تتحقق من تخصيص أو ترصد متحكماً.
قد تغير القاعدة سلوك الإصدار
قد يتجاوز التخصيص فحصاً قائماً ويؤثر في موجات وملخصات. عامله كشيفرة تسليم مراجعة. اجعل الرسائل مفيدة بلا حمولة حساسة وتجنب wildcard هائلاً يخمّن أنواعاً مستقلة. راجع القاعدة والتجهيز عند تغير API. يبقى المستخدم منفصلاً؛ لا تثبت صحة المورد كل إنشاء ملصق أو تكامل خارجي. يجب أن يسجل التغيير سبب تعريف الجاهزية الجديد وما لم يعد مقاساً أو ما أضيف قياسه، كي لا يكون تحسين اللون الظاهر إضعافاً غير معلن لبوابة يعتمد عليها عمل لاحق.
الأخطاء الشائعة وإصلاحها
يعاد status غائب كـ Healthy.
- لماذا يحدث؟
- اختلط غياب الفشل بدليل إيجابي حالي.
- كيف تصلحه؟
- مثل الانتظار أو المجهول ضمن العقد المدعوم.
- كيف تتجنب تكراره؟
- اختبر الغائب والقديم والكاذب والفاشل.
تسمح جاهزية جيل قديم بالاعتماد.
- لماذا يحدث؟
- حُذفت الحداثة من قاعدة النوع.
- كيف تصلحه؟
- راجع عقد جيل المتحكم قبل القبول.
- كيف تتجنب تكراره؟
- اربط الحالات بنسخ API والمتحكم.
يفترض wildcard حقولاً واحدة لكل نوع.
- لماذا يحدث؟
- دُمجت واجهات مختلفة في قاعدة غير متحققة.
- كيف تصلحه؟
- استخدم منطقاً صغيراً نوعياً وحالات ممثلة.
- كيف تتجنب تكراره؟
- حدد المالك ونطاق التجاوز.
اختبر فهمك
1. ready=true للجيل ثلاثة وmetadata أربعة. ماذا يقرر النموذج؟
اعرض الحل المشروح
يرفض لأن الملاحظة لا تصف القصد الحالي. هذه قاعدة افتراضية معلنة لا قانون كل Kubernetes. افحص عقد المتحكم الحقيقي قبل تطبيق مثيلها.
2. هل يثبت اختبار Python تخصيص Lua ناجحاً؟
اعرض الحل المشروح
لا. يتحقق المحلي وقيمه فقط. تحتاج صياغة Lua والإعداد والتجميع والحالة الفعلية تحققاً مناسباً مصرحاً مستقلاً. التزم بمستوى الدليل الذي جُرب.
أهم ما تعلمته
- تحتاج الصحة دليلاً حالياً خاصاً بالنوع.
- المنطق سلوك تسليم مراجع لا تنسيق لون فقط.