اختبار الوحدة 5 - التكوين والأسرار
تعليمات
يحتوي هذا الاختبار على 30 سؤالاً متعدد الخيارات.
السؤال 1
ما هو ConfigMap؟
عرض التفسير
الإجابة الصحيحة: كائن Kubernetes يخزن بيانات التكوين غير الحساسة
التفسير: تسمح ConfigMaps بفصل التكوين عن كود التطبيق.
السؤال 2
ما هو Secret في Kubernetes؟
عرض التفسير
الإجابة الصحيحة: كائن Kubernetes يخزن بيانات حساسة مثل كلمات المرور، الرموز، أو المفاتيح
التفسير: الأسرار تشبه ConfigMaps ولكنها مصممة لتخزين البيانات الحساسة. يتم تخزينها في base64 (بدون تشفير افتراضي).
السؤال 3
كيف يتم إنشاء ConfigMap من ملف؟
عرض التفسير
الإجابة الصحيحة: kubectl create configmap [name] --from-file=[file]
التفسير: الأمر --from-file يسمح بإنشاء ConfigMap من ملف، حيث ستكون المفتاح اسم الملف والقيمة ستكون محتوى الملف.
السؤال 4
ما هو الحد الأقصى لحجم الإدخال في ConfigMap؟
عرض التفسير
الإجابة الصحيحة: 1 MiB
التفسير: كل إدخال في ConfigMap أو Secret محدود بـ 1 MiB. لاستخدام بيانات أكبر، استخدم الأحجام.
السؤال 5
كيف يتم حقن ConfigMap كمتغير بيئة في Pod؟
عرض التفسير
الإجابة الصحيحة: envFrom: - configMapRef: name: [configmap-name]
التفسير: envFrom يسمح بحقن جميع مفاتيح ConfigMap كمتغيرات بيئة. لاستخدام مفتاح محدد، استخدم env مع valueFrom.configMapKeyRef.
السؤال 6
كيف يتم تركيب ConfigMap كحجم في Pod؟
عرض التفسير
الإجابة الصحيحة: volumes: - name: config configMap: name: [configmap-name]
التفسير: لتركيب ConfigMap كحجم، قم بتعريفه في قسم الأحجام في Pod، ثم استخدم volumeMounts لتركيبه في الحاوية.
السؤال 7
ما هو الفرق الرئيسي بين ConfigMap و Secret؟
عرض التفسير
الإجابة الصحيحة: الأسرار مصممة للبيانات الحساسة وتخزن في base64، بينما ConfigMaps للبيانات غير الحساسة
التفسير: الأسرار مخصصة للبيانات الحساسة ولكنها ليست مشفرة افتراضيًا (فقط مشفرة في base64). ConfigMaps مخصصة للبيانات غير الحساسة.
السؤال 8
كيف يتم إنشاء Secret من القيم الحرفية؟
عرض التفسير
الإجابة الصحيحة: kubectl create secret generic [name] --from-literal=[key]=[value]
التفسير: --from-literal يسمح بإنشاء Secret مباشرة من أزواج المفتاح والقيمة في سطر الأوامر.
السؤال 9
ما هي الممارسة الجيدة لإدارة الأسرار في الإنتاج؟
عرض التفسير
الإجابة الصحيحة: استخدام أدوات إدارة الأسرار الخارجية (Vault, AWS Secrets Manager) مع External Secrets Operator
التفسير: لا يجب أبدًا الالتزام بالأسرار في Git. استخدم أدوات خارجية مثل Vault أو خدمات السحابة مع External Secrets Operator لإدارة آمنة.
السؤال 10
ما هو التشفير عند الراحة (encryption at rest) للأسرار؟
عرض التفسير
الإجابة الصحيحة: ميزة تشفر الأسرار في etcd باستخدام EncryptionConfig
التفسير: التشفير عند الراحة يسمح بتشفير الأسرار في etcd عن طريق تكوين EncryptionConfig مع مزودي التشفير (AES, KMS, إلخ).
السؤال 11
ما هي الأمر الذي يسمح برؤية محتوى Secret (مفكك الشفرة)؟
عرض التفسير
الإجابة الصحيحة: kubectl get secret [name] -o jsonpath='{.data.[key]}' | base64 -d
التفسير: يتم تخزين الأسرار في base64. لرؤية المحتوى المفكك الشفرة، استخدم jsonpath لاستخراج القيمة و base64 -d لفك الشفرة.
السؤال 12
ما هو External Secrets Operator؟
عرض التفسير
الإجابة الصحيحة: مشغل Kubernetes يزامن الأسرار من أنظمة خارجية (AWS Secrets Manager, Vault, إلخ) إلى Kubernetes
التفسير: External Secrets Operator يسمح بإدارة الأسرار بطريقة مركزية في أنظمة خارجية ومزامنتها تلقائيًا إلى Kubernetes.
السؤال 13
ما هي الطريقة الموصى بها لحقن Secret في Pod؟
عرض التفسير
الإجابة الصحيحة: استخدام envFrom مع secretRef أو env مع valueFrom.secretKeyRef
التفسير: يجب حقن الأسرار عبر envFrom (جميع المفاتيح) أو env مع valueFrom.secretKeyRef (مفتاح محدد)، ولا يجب تشفيرها في الكود.
السؤال 14
ما هو الفرق بين env و envFrom؟
عرض التفسير
الإجابة الصحيحة: env يسمح بحقن متغيرات فردية، envFrom يحقن جميع مفاتيح ConfigMap/Secret
التفسير: env يسمح بالتحكم الدقيق في كل متغير، بينما envFrom يحقن تلقائيًا جميع المفاتيح كمتغيرات بيئة.
السؤال 15
ما هي الممارسة الجيدة لتصاريح حجم Secret؟
عرض التفسير
الإجابة الصحيحة: 0400 (قراءة فقط للمالك)
التفسير: يجب تركيب أحجام الأسرار كقراءة فقط (readOnly: true) مع تصاريح مقيدة (defaultMode: 0400) للأمان.
السؤال 16
ما هو ConfigMap غير قابل للتغيير؟
عرض التفسير
الإجابة الصحيحة: ConfigMap لا يمكن تعديله بعد إنشائه، مما يحسن الأداء والأمان
التفسير: ConfigMaps غير القابلة للتغيير (immutable: true) لا يمكن تعديلها، مما يقلل الحمل على API Server ويحسن الأمان.
السؤال 17
كيف يتم تحديث ConfigMap مستخدم بواسطة Pod قيد التشغيل؟
عرض التفسير
الإجابة الصحيحة: إذا تم تركيبه كحجم، يجب إعادة تشغيل Pod. إذا تم حقنه كمتغير بيئة، يجب إعادة إنشاء Pod
التفسير: يتم تحديث ConfigMaps المركبة كأحجام بشكل دوري، لكن المتغيرات البيئية المحقونة لا تتغير بدون إعادة إنشاء Pod.
السؤال 18
ما هي الأمر لإنشاء Secret من ملف؟
عرض التفسير
الإجابة الصحيحة: kubectl create secret generic [name] --from-file=[key]=[file]
التفسير: --from-file يسمح بإنشاء Secret من ملف، حيث يمكنك تحديد المفتاح وملف المصدر.
السؤال 19
ما هي تدوير الأسرار؟
عرض التفسير
الإجابة الصحيحة: عملية استبدال الأسرار بشكل دوري بقيم جديدة للأمان
التفسير: تدوير الأسرار هو ممارسة جيدة للأمان تتضمن تغيير كلمات المرور، الرموز، والمفاتيح بانتظام للحد من تأثير الاختراق.
السؤال 20
ما هو الفرق بين Secret من نوع Opaque و Secret من نوع TLS؟
عرض التفسير
الإجابة الصحيحة: Opaque مخصص للبيانات العشوائية، TLS مخصص لشهادات TLS
التفسير: الأسرار من نوع TLS تحتوي على مفاتيح محددة (tls.crt, tls.key) وتستخدم من قبل أدوات مثل cert-manager لشهادات SSL/TLS.
السؤال 21
كيف يتم تنظيم ConfigMaps حسب البيئة؟
عرض التفسير
الإجابة الصحيحة: إنشاء ConfigMaps منفصلة لكل بيئة (dev, staging, prod) بأسماء مختلفة
التفسير: الممارسة الأفضل هي إنشاء ConfigMaps منفصلة لكل بيئة، مما يسمح بإدارة واضحة وتجنب الأخطاء في التكوين.
السؤال 22
ما هو الحد الأقصى لحجم ConfigMap أو Secret؟
عرض التفسير
الإجابة الصحيحة: محدود بواسطة etcd (عادةً 1.5 MiB لكل كائن)
التفسير: على الرغم من أن كل إدخال محدود بـ 1 MiB، فإن الحجم الإجمالي لـ ConfigMap أو Secret محدود بواسطة etcd، عادةً حوالي 1.5 MiB.
السؤال 23
ما هو حجم من نوع Secret؟
عرض التفسير
الإجابة الصحيحة: حجم يركب بيانات Secret كملفات في Pod
التفسير: يمكن تركيب الأسرار كأحجام، حيث يصبح كل مفتاح ملفًا مع القيمة المفككة الشفرة كمحتوى.
السؤال 24
ما هي الممارسة الجيدة للأسرار في YAML؟
عرض التفسير
الإجابة الصحيحة: لا تضع الأسرار بشكل واضح أبدًا، استخدم المراجع (secretKeyRef) أو الأدوات الخارجية
التفسير: لا يجب أبدًا وضع الأسرار بشكل واضح في YAML، حتى في base64. استخدم المراجع أو أدوات إدارة الأسرار.
السؤال 25
كيف يتم استخدام ConfigMap في Deployment؟
عرض التفسير
الإجابة الصحيحة: في قالب Pod لـ Deployment، عبر env، envFrom، أو الأحجام
التفسير: يتم الرجوع إلى ConfigMaps في قالب Pod (spec.template.spec) لـ Deployment، عبر env/envFrom للمتغيرات البيئية أو الأحجام للملفات.
السؤال 26
ما هو حساب الخدمة في سياق الأسرار؟
عرض التفسير
الإجابة الصحيحة: هوية لـ Pods يمكن ربطها بالأسرار للوصول إلى API Server
التفسير: يمكن أن تحتوي حسابات الخدمة على imagePullSecrets للوصول إلى السجلات الخاصة، لكنها ليست مرتبطة مباشرة بالأسرار التطبيقية.
السؤال 27
ما هي الأمر لحذف ConfigMap؟
عرض التفسير
الإجابة الصحيحة: kubectl delete configmap [name]
التفسير: kubectl delete هو الأمر القياسي لحذف أي مورد Kubernetes، بما في ذلك ConfigMaps.
السؤال 28
ما هو Secret من نوع docker-registry؟
عرض التفسير
الإجابة الصحيحة: Secret يخزن بيانات الاعتماد للوصول إلى سجل Docker خاص
التفسير: تستخدم الأسرار من نوع docker-registry كـ imagePullSecrets للسماح لـ Pods بسحب الصور من السجلات الخاصة.
السؤال 29
ما هي الممارسة الجيدة لتتبع إصدارات ConfigMaps؟
عرض التفسير
الإجابة الصحيحة: استخدام التسميات مع أرقام الإصدارات وإنشاء ConfigMaps جديدة لكل إصدار
التفسير: تتبع إصدارات ConfigMaps باستخدام التسميات يسمح بتتبع التغييرات ويسهل عمليات التراجع عن طريق الإشارة إلى إصدارات مختلفة.
السؤال 30
ما هو الفرق بين valueFrom.configMapKeyRef و valueFrom.secretKeyRef؟
عرض التفسير
الإجابة الصحيحة: configMapKeyRef يشير إلى مفتاح من ConfigMap، secretKeyRef يشير إلى مفتاح من Secret
التفسير: هاتان الإشارتان تعملان بنفس الطريقة ولكن تشير إلى أنواع مختلفة من الموارد: ConfigMap للبيانات غير الحساسة، Secret للبيانات الحساسة.
نتيجة الاختبار
تهانينا على إكمال اختبار الوحدة 5!
النتيجة:
- 25-30 إجابة صحيحة: ممتاز! أنت تتقن التكوين والأسرار.
- 20-24 إجابة صحيحة: جيد جدًا! راجع المفاهيم التي واجهت صعوبة فيها.
- 15-19 إجابة صحيحة: جيد! راجع الفصول حول ConfigMaps و Secrets.
- أقل من 15: يوصى بمراجعة الوحدة قبل المتابعة.
تم إنشاء الاختبار في: ديسمبر 2024