Kubernetes: أين يعيش كل متغير من متغيرات الإعداد؟

النشر على Kubernetes أجبرني على توضيح سؤال بسيط: أين يعيش كل متغير من متغيرات الإعداد؟ 🔑
قاعدتي، مطبَّقة على هذا الموقع (Symfony + Next.js على k8s):
- 🔹 Secret في k8s: كل ما هو حسّاس ويُقرأ وقت التشغيل. بيانات SMTP، مفاتيح API السرّية… يستلمها الـpod كمتغيرات بيئة — لا شيء في الصورة، ولا شيء في المستودع.
- 🔹 ConfigMap: الإعدادات غير الحسّاسة التي تتغير حسب البيئة.
- 🔹 Build-arg في Docker: ما يجب تثبيته في الأداة لحظة البناء — عادةً متغيرات
NEXT_PUBLIC_*لواجهة Next.js، المُجمَّعة داخل حزمة JS.
السؤال الواجب طرحه لكل متغير: «مَن يستهلكه، ومتى؟» الخادم وقت التشغيل → Secret/ConfigMap. متصفح الزائر → يجب أن يكون حاضرًا وقت البناء.
الخطأ في الاختيار يعني إما مفتاحًا سريًا مكشوفًا في حزمة عامة، أو واجهة أمامية تشير إلى localhost في الإنتاج. وكلاهما يُدفع ثمنه غاليًا. 😬


