الدرس 11: Secrets ومبدأ twelve-factor
في الدرس السابق تعرّفنا على ConfigMap — مكان لحفظ الإعدادات غير الحساسة خارج image. لكن ماذا تفعل بكلمة مرور قاعدة بيانات أو رمز API؟ هذه أشياء لا ينبغي أن يراها الجميع، وبالتأكيد يجب ألّا تُخزَّن أبدًا داخل الكود أو تُرفَع إلى Git. لهذا وُجد Secret: فهو يشبه ConfigMap كثيرًا، لكنه مخصّص للبيانات ال
ConfigMap هو رفّ مفتوح يرى الجميع ما عليه؛ و Secret هو دُرج مقفل للأشياء الخاصة. لكن انتبه — قفل الدُرج (base64) لا يجعل ما بداخله غير قابل للقراءة، بل يضعه فقط في مكان تحتاج مفتاحًا للدخول إليه.
- Secret
- كائن في Kubernetes لتخزين البيانات الحساسة (كلمات المرور، الرموز) منفصلةً عن image والكود. يُخزَّن بترميز base64 ويُحمى عبر التحكّم في الوصول — لا عبر التشفير افتراضيًا.
- Twelve-Factor
- منهجية لبناء التطبيقات. مبدأ أساسي فيها: احفظ كل الإعدادات في البيئة (environment)، بفصلٍ تامّ عن الكود، بحيث يعمل الـ build نفسه في كل بيئة.
- base64
- أسلوب ترميز يمثّل البيانات الثنائية كنص. إنه ليس تشفيرًا: يمكن لأي شخص فكّ ترميز base64 والعودة إلى القيمة الأصلية دون أي مفتاح على الإطلاق.
- ConfigMap
- كائن لتخزين الإعدادات غير الحساسة (مفتاح/قيمة)، يُحقَن في الحاوية كمتغيّرات بيئة أو كملفات. النظير "المفتوح" لـ Secret.
- متغيّر البيئة
- قيمة ذات اسم متاحة لعمليةٍ أثناء التشغيل. طريقة شائعة لحقن الإعدادات — من ConfigMap أو Secret — داخل التطبيق دون تغيير الكود.