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

Helm / متقدم: التوافق والثقة ودليل التسليم / الدرس 13

تعريفات الموارد والقدرات ودورة حياة التوسعات

افصل تثبيت التوسعة عن استخدام مواردها وافهم لماذا لا تثبت فحوص القدرات والتصيير المحلي سلوك المتحكم.

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

أهداف الدرس

  • تمييز تعريفات CRD ومواردها المخصصة والمتحكمات.
  • شرح دورة حياة مجلد crds الخاصة في Helm 3.
  • مراجعة فروع القدرات دون خلط الاكتشاف بالسياسة.

حدد أجزاء التوسعة الثلاثة

يضيف CustomResourceDefinition نوع API، ويكون المورد المخصص مثالا من ذلك النوع، ثم يفسره متحكم ويتصرف بناء عليه. لا يثبت تثبيت المخطط وجود متحكم عامل إلا إذا وفرته الحزمة صراحة. في توسعة CatalogPolicy افتراضية قد يُقبل كائن السياسة دون أن يؤثر في التطبيق لغياب متحكم يراقبه. افصل ملكية المخطط والمتحكم والأمثلة في التصميم. ولا ينبغي لإصدار تطبيق محدود بالنطاق أن يتولى بصمت توسعة على مستوى العنقود تستخدمها فرق أخرى.

احترم دلالة مجلد crds

في نموذج Helm 3 لا تُصير ملفات crds وتُثبت قبل القوالب العادية أثناء التثبيت. تُتجاوز التعريفات الموجودة بدلا من معاملتها كأهداف ترقية عادية. ولا يرقي Helm هذه التعريفات أو يحذفها عادة ضمن دورة الحزمة. تحمي هذه الحدود المقصودة من فقد البيانات العرضي لكنها تتطلب خطة منفصلة لتطور التوسعة. المثال الأول بنية مصدر لا تعريف يُطبق. تحمل حزمة التطبيق قوالب الأمثلة فقط، ويراجع مالك منصة صريح تطور المخطط وتوافق المتحكم مستقلا.

text فصل ملكية التوسعة والتطبيق
extension-owner/
  crds/catalogpolicies.example.test.yaml
application-chart/
  templates/catalog-policy.yaml
review record:
  schema owner, controller version, accepted resource versions

example.test نطاق تعليمي محجوز. توضح الشجرة الملكية ولا تثبت أو تتصل بتوسعة.

فسر فحوص القدرة بحدودها

يعرض Capabilities معلومات API التي تستخدمها القوالب لاختيار الناتج. يستطيع Has فحص نسخة API أو مورد في السياق الممرر. وقد يكون ذلك السياق محاكيا أثناء التصيير المحلي ويختلف عن الاكتشاف الحي. يفشل المقطع الثاني عمدا عند غياب توسعة واجبة بدلا من إسقاط كائن سياسة ضروري بصمت. لا يثبت الفحص الإيجابي صحة المتحكم أو عمل تحويل webhook أو قبول المورد المحدد. يختار كشف القدرة فرع القالب؛ ويظل القبول والسلوك ادعاءين مستقلين.

gotemplate شرط توسعة صريح
{{- if not (.Capabilities.APIVersions.Has "example.test/v1/CatalogPolicy") -}}
{{- fail "CatalogPolicy API is required by this chart configuration" -}}
{{- end -}}

هذا الحارس مقطع قالب غير كامل وغير قابل للتشغيل. يحتاج التصيير المحلي المصرح به حالة قدرات موثقة.

خطط لتطور المخطط

قد يؤثر تغيير CRD في كائنات مخزنة وتطبيقات متعددة لا في الإصدار الحامل فقط. تحتاج النسخ المقدمة والمخزنة والتحويل والتحقق دليلا منسقا للانتقال. قد يرفض مخطط أشد كائنات قُبلت سابقا، وقد تكسر نسخة محذوفة عملاء أقدم ومرشحي الرجوع. لا تحل ذلك باعتبار crds مثل templates أو بوصفة حذف وإعادة إنشاء عامة. حدد البيانات والعملاء المتأثرين وأسند الملكية لجهة مؤهلة وخطط لانتقال متوافق. يشرح المسار الحدود دون إدارة APIs أو تغيير التعريفات أو تشغيل متحكم.

راجع حالات التوسعة

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

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

تغير ملف CRD مع بقاء المخطط المثبت قديما

لماذا يحدث؟
افتُرض أن ترقية الحزمة العادية تدير تطور crds.
كيف تصلحه؟
استخدم عملية ترقية التوسعة المستقلة مع مراجعة توافق البيانات.
كيف تتجنب تكراره؟
وثق حدود دورة CRD ضمن شروط التطبيق.

قبول مورد مخصص دون أثر

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

اختفاء سياسة واجبة أثناء التصيير المحلي

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

اختبر فهمك

1. لماذا لا يصلح إصدار تطبيق ضمن نطاق كمالك ضمني لتعريف CRD مشترك؟

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

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

2. أبلغت Capabilities عن API المطلوبة. ما الذي يمنع ضمان تنفيذ CatalogPolicy؟

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

قد يكون المتحكم غائبا أو معطلا أو غير متوافق أو مختلف الإعداد، وقد يرفض التحويل أو القبول الكائن، أو تفشل التسوية بعد القبول. يثبت توفر القدرة شرطا متعلقا بـAPI في السياق الممرر فقط. يتطلب التنفيذ دليلا محددا من المتحكم والتطبيق في بيئة مصرح بها.

أهم ما تعلمته

  • لتعريفات CRD ومواردها ومتحكماتها عقود ملكية ودورة حياة مختلفة.
  • تختار Capabilities الناتج ولا تثبت تنفيذ السياسة.

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