استكشاف الأخطاء وحلّها
تأتي معظم المفاجآت من التحصين: تعمل الصور بدون صلاحيات الجذر على نظام ملفات جذر للقراءة فقط، وهي موسومة بالإصدار لا بـ :latest. وإليك كيف تبدو كلٌّ منها وكيف تتعامل معها.
MANIFEST_UNKNOWN أو “tag not found: latest”
الصور لا تحمل وسم :latest. مرجع مجرّد يُحَلّ إلى :latest ويفشل:
docker pull ghcr.io/quenchworks/images/redis # error: latest not founddocker pull ghcr.io/quenchworks/images/redis:8.8.0 # worksاستخدم دائمًا وسم إصدار (معروض في صفحة كل صورة) أو بصمة. راجع الوسوم والإصدارات.
cosign verify أو verify-attestation يُعيد 404
تُرفَق الشهادات ببصمة بناء معيّن. التحقّق من بصمة قديمة، أو من بصمة سابقة لإعادة بناء، لا يجد شيئًا. تحقّق من وسم الإصدار بدلًا من ذلك، فهو يُحَلّ إلى البصمة المُشهَّدة الحالية:
cosign verify-attestation --type https://spdx.dev/Document/v2.3 ghcr.io/quenchworks/images/redis:8.8.0 \ --certificate-identity-regexp 'https://github.com/quenchworks/.+' \ --certificate-oidc-issuer https://token.actions.githubusercontent.comراجع التحقّق من توقيع وSBOM والمنشأ.
الحاوية تخرج عند الكتابة إلى نظام ملفاتها
نظام ملفات الجذر للقراءة فقط. التطبيقات التي تحتاج إلى الكتابة ينبغي أن تكتب إلى وحدة تخزين أو إلى /tmp (المتوفّر للكتابة). تركّب المخططات أصلًا ما يحتاجه التطبيق؛ ولأجل مسارات إضافية قابلة للكتابة، أضف وحدة تخزين بدلًا من تعطيل إعداد القراءة فقط:
extraVolumes: - name: scratch emptyDir: {}extraVolumeMounts: - name: scratch mountPath: /var/scratchرُفض الإذن على وحدة تخزين مركّبة
تعمل الحاويات بدون صلاحيات الجذر (uid 1001 لمعظم الصور؛ يوثّق المخطط أي استثناء). يمكن أن يكون PersistentVolume المُوفَّر حديثًا مملوكًا للجذر، وهو ما لا تستطيع العملية بدون صلاحيات الجذر الكتابة إليه. اضبط fsGroup كي تكون وحدة التخزين مملوكة بالمجموعة لمستخدم التشغيل:
podSecurityContext: fsGroup: 1001 # let the nonroot user own mounted volumesرفض الحاوية من Pod Security Admission
تستوفي الصور أصلًا معيار Pod Security restricted: بدون صلاحيات الجذر، ومنع تصعيد الصلاحيات، وإسقاط جميع الصلاحيات، وseccomp RuntimeDefault، ونظام ملفات جذر للقراءة فقط. إذا رُفضت الحاوية رغم ذلك، فالسبب عادةً تجاوز مرّرته (سياق أمان مخصّص، أو تركيب مضيف، أو صلاحية مُضافة). أزِل التجاوز ودَع الإعدادات الافتراضية المُحصّنة من quench-common تُطبَّق. راجع الضبط.
معمارية خاطئة
تُبنى الصور لـ linux/amd64 وlinux/arm64. وسم الإصدار فهرس متعدد المعماريات، فتسحب بيئة التشغيل المعمارية الصحيحة تلقائيًا. لا تُنشر معماريات أخرى.
Helm لا يستطيع سحب المخطط
تُنشر المخططات إلى GHCR كأدوات OCI عامة، فلا حاجة إلى تسجيل دخول للسجلّ الرسمي. إذا نسخت إلى سجلّ خاص، شغّل helm registry login مقابله أولًا، وراجع التثبيت في بيئة معزولة.