انتقل إلى المحتوى الرئيسي

اختبار الوحدة 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