محتويات الدورة

Helm / أساسي: أسس الحزمة والتصيير / الدرس 3

أولوية القيم وحفظ الأنواع

احسم طبقات القيم عمدا وميّز الحقل الغائب والقيمة false والقائمة المستبدلة والمفتاح الافتراضي المحذوف.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح مصادر القيم المرتبة وتأثير التجاوزات المتكررة.
  • حفظ النصوص والأعداد والقيم المنطقية عبر YAML والقوالب.
  • تشخيص دمج الخرائط واستبدال القوائم دون افتراض الإلحاق.

سمّ الطبقات

القيم الافتراضية بداية عقد القيم وليست المدخل النهائي. يستطيع الأب توفير قيم للحزمة التابعة، وتتجاوز ملفات المستخدم الافتراضيات، وتكون تعيينات سطر الأوامر أعلى تحديدا. يهم ترتيب ملفات القيم المتعددة؛ فقد يستبدل ملف متأخر قرارا سابقا. سجّل المدخلات بترتيبها لا أسماءها فقط. قد يضيف سكربت قديم خيارا بعد الملف المراجع فيغير النتيجة. فضّل مجموعة صغيرة من الملفات المحفوظة بالنسخ على تواريخ أوامر غير موثقة حين يحتاج عدة أشخاص إعادة التصيير نفسه.

افهم البنية قبل القيم

يدمج Helm الخرائط، بينما تُستبدل المصفوفات عادة ولا تُلحق عناصرها. قائمة حاويتين قيمة واحدة وليست سجلا ذا مفاتيح يدمج تلقائيا حسب اسم الحاوية. ويمكن لـnull حذف مفتاح افتراضي أثناء الدمج، وهو مهم عند اختيار معالجات فحص متنافية. تحويل خريطة إلى نص قد يكسر قالبا يتوقع حقولا متداخلة. راجع البنية والمحتوى معا. تترك الطبقات التوضيحية service.port مساويا 8080 وتستبدل قائمة zones بالعنصر west وتحذف معالج الفحص الافتراضي قبل إضافة معالج مختلف.

yaml وثيقتا قيم للمقارنة اليدوية
# defaults
service:
  port: 8080
zones: [east, central]
probe:
  httpGet:
    path: /ready
    port: 8080
---
# later values file
zones: [west]
probe:
  httpGet: null
  tcpSocket:
    port: 8080

المثالان طبقتان منفصلتان وليسا ملف قيم واحدا للإرسال. الفحص المدمج المقصود يحتوي tcpSocket فقط.

احفظ أنواع القيم المفردة

قد يحتاج وسم حساب أو معرّف يبدو عدديا إلى البقاء نصا وإن احتوى أرقاما. ضع هذه القيم بين علامات اقتباس في YAML واقتبس المخرج النصي داخل القالب. أبق حقول العدد الصحيح مثل منافذ الخدمة رقمية حين يطلب مخطط Kubernetes ذلك. النص "false" ليس القيمة المنطقية false وكلاهما مختلف عن المفتاح الغائب. يضيف تحليل سطر الأوامر فرصة أخرى للتحويل؛ وقد تناسب خيارات النص الموثقة مسارا فعليا، لكن ملفات القيم المحفوظة تسهل مراجعة الأنواع المقصودة معا.

اجعل false والصفر ظاهرين

تعد دالة default في القوالب قيما متعددة، منها false والصفر، فارغة. يفيد ذلك لوسم عرض اختياري لكنه خطر حين يكون عدد نسخ صفر قرارا مقصودا. استخدم مخططا وفحص وجود صريحا عندما يختلف معنى الغياب والصفر. يمثل مثال Python هذا الفرق باختبار العضوية، ولا يعيد تنفيذ جميع قواعد دمج Helm. غرضه المحدود توضيح أن الصدق المنطقي لا يجيب هل قدم المستخدم المفتاح. حدد سلوك الغياب وnull والصفر كل على حدة قبل كتابة قيمة احتياطية.

python الوجود مختلف عن الصدق المنطقي
values = {"replicaCount": 0, "enabled": False}
replicas = values["replicaCount"] if "replicaCount" in values else 1
print(replicas)
print(type(values["enabled"]).__name__)
الناتج المتوقع
0
bool

يحفظ البرنامج الكامل الصفر المقصود ويؤكد أن enabled منطقي. وهو نموذج لعقد المدخلات فقط.

راجع العقد الفعلي

حين تظهر قيمة غير متوقعة، افحص افتراضيات المصدر ونطاق الأب وملفات المستخدم المرتبة والتعيينات النهائية قبل تعديل القوالب. قارن القيمة الفعلية بالتعبير المستهلك لها؛ فالقيمة الصحيحة تحت مفتاح خاطئ لا تُستخدم. تجنب وضع الأسرار في تفريغ تشخيصي لأن القيم المحسوبة قد تتضمن مدخلات حساسة. استخدم مقتطفات افتراضية تحفظ الأنواع والمسارات. يزيل الإصلاح الدائم المدخل المتعارض أو يصحح العقد الموثق؛ أما إضافة تجاوز غامض فتزيد صعوبة المراجعة التالية. أدرج استبدال القوائم وحالات الصفر في مصفوفة المراجعة.

الأخطاء الشائعة وإصلاحها

تجاوز قائمة يحذف عناصر سابقة

لماذا يحدث؟
توقع المؤلف إلحاق عناصر القوائم أثناء الدمج.
كيف تصلحه؟
قدم القائمة المطلوبة كاملة أو أعد تصميم المدخل كخريطة موثقة إذا ناسب الدمج بالمفاتيح.
كيف تتجنب تكراره؟
وضح استبدال القوائم صراحة في أمثلة القيم.

تحول replicaCount من صفر إلى واحد

لماذا يحدث؟
عامل تعبير default الصفر كقيمة فارغة.
كيف تصلحه؟
استخدم عقد وجود صريحا وتحقق من النطاق العددي المسموح.
كيف تتجنب تكراره؟
راجع الغياب وnull والصفر كحالات مختلفة.

ظهور httpGet وtcpSocket معا في فحص واحد

لماذا يحدث؟
احتفظ دمج الخرائط بالمعالج الافتراضي عند إضافة آخر.
كيف تصلحه؟
أزل المعالج غير المستخدم صراحة بتجاوز null الذي تدعمه الحزمة.
كيف تتجنب تكراره؟
تحقق من البدائل المتنافية بمخطط وحالات تصيير.

اختبر فهمك

1. تحتوي الافتراضيات zones [east, central] ويحتوي ملف لاحق [west]. ماذا يتوقع المراجع؟

اعرض الحل المشروح

يتوقع القائمة اللاحقة [west] لا اتحادا من ثلاثة عناصر. افحص هل يغير حذف east وcentral موضع التطبيق أم بياناته الوصفية فقط؛ فالقالب المستهلك هو الذي يحدد الأثر. إذا أُريدت المناطق كلها فاكتب العناصر الثلاثة صراحة في الطبقة النهائية ووثق سبب ملكيتها للقائمة كاملة.

2. رمز الحساب 0017 والمنفذ 8080. كيف يختلف عقداهما؟

اعرض الحل المشروح

رمز الحساب نص تهمه الأصفار البادئة، ولذلك يُقتبس في القيم والمخرج النصي. المنفذ عدد صحيح ذو نطاق مقصود، فيُحفظ رقميا في YAML والمخرج. يستطيع المخطط رفض النوع الخاطئ مبكرا. واقتباس كل المخرجات بلا تمييز يضر عقد المنفذ بدلا من تحسين سلامته.

أهم ما تعلمته

  • تحدد المدخلات المرتبة وبنية البيانات وأنواع القيم سلوك الإعدادات معا.
  • تحمي فحوص الوجود قيمتي false والصفر المقصودتين.

المراجع الرسمية