ConfigMaps وSecrets
أدِر بيانات الإعدادات والمعلومات الحساسة بأمان ضمن عمليات نشر Kubernetes باستخدام ConfigMaps وSecrets
ConfigMaps وSecrets درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
مقدمة إلى ConfigMaps وSecrets
مرحبًا! في هذا الدرس، سنتعلم كيفية إدارة بيانات الإعدادات والمعلومات الحساسة في Kubernetes. وسنستكشف ConfigMaps وSecrets، وهما أداتان أساسيتان لنشر التطبيقات بمرونة وأمان.

لماذا نُخرج الإعدادات خارج التطبيق؟
تخيل تضمين بيانات اعتماد قاعدة البيانات أو مفاتيح API مباشرةً في صورة Docker الخاصة بتطبيقك. فهذا يجعل التحديثات صعبة ويكشف البيانات الحساسة.
- عدم المرونة: تتطلب التغييرات إعادة بناء الصورة.
- مخاطر أمنية: تُضمَّن البيانات الحساسة في الصورة.
- الاختلاف حسب البيئة: تحتاج البيئات المختلفة (التطوير والإنتاج) إلى إعدادات مختلفة.
ConfigMaps: البيانات غير الحساسة
إن ConfigMap كائن في Kubernetes يُستخدم لتخزين بيانات الإعدادات غير الحساسة على هيئة أزواج مفتاح-قيمة. فكّر فيه على أنه مكان مركزي لإعدادات تطبيقك، مثل مستويات السجل أو نقاط نهاية API.
وهو يفصل الإعدادات عن شيفرة تطبيقك، مما يجعل عمليات النشر أكثر قابلية للنقل وأسهل في الإدارة.
تعريف ConfigMap
يمكنك إنشاء ConfigMap من قيم حرفية أو ملفات أو أدلة. إليك مثالًا بسيطًا معرّفًا في ملف YAML:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-app-config
data:
log_level: "INFO"
api_endpoint: "http://myapi.example.com"ConfigMap كمتغيرات بيئية
بعد إنشائه، يمكن لـ Pod استهلاك بيانات ConfigMap كمتغيرات بيئية. وهذه طريقة شائعة لتمرير الإعدادات إلى تطبيقك.
إليك كيفية استخدام Pod لـ my-app-config:
apiVersion: v1
kind: Pod
metadata:
name: configmap-env-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo Log Level: $LOG_LEVEL; echo API: $API_ENDPOINT"]
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: my-app-config
key: log_level
- name: API_ENDPOINT
valueFrom:
configMapKeyRef:
name: my-app-config
key: api_endpoint
restartPolicy: NeverConfigMap كملفات موصولة
بدلًا من ذلك، يمكن توصيل بيانات ConfigMap كملفات داخل الحاوية. ويصبح كل زوج مفتاح-قيمة ملفًا، بحيث يكون المفتاح اسم الملف والقيمة محتواه.
يفيد ذلك في ملفات الإعدادات التي يتوقع تطبيقك قراءتها من مسار محدد.
apiVersion: v1
kind: Pod
metadata:
name: configmap-file-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "cat /etc/config/log_level; cat /etc/config/api_endpoint"]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: my-app-config
restartPolicy: NeverSecrets: البيانات الحساسة
تشبه Secrets كائنات ConfigMaps، لكنها مصممة للبيانات الحساسة مثل كلمات المرور ومفاتيح API وشهادات TLS. ويساعدك Kubernetes على إدارتها وتوزيعها بأمان.
بينما تخزن ConfigMaps البيانات كنص عادي، يتم ترميز Secrets باستخدام base64. وهذا ليس تشفيرًا، لكنه يمنع الكشف العرضي عن البيانات.
تعريف Secret
عند إنشاء Secret، يجب ترميز القيم باستخدام base64. ويمكنك استخدام echo -n 'my-password' | base64 لترميزها.
إليك مثالًا لكلمة مرور قاعدة بيانات:
apiVersion: v1
kind: Secret
metadata:
name: db-credentials
type: Opaque
data:
username: YWRtaW4= # base64 of 'admin'
password: c3VwZXJzZWNyZXRwYXNz # base64 of 'supersecretpass'استخدام Secrets في Pods
تستهلك Pods كائنات Secrets بالطريقة نفسها التي تستهلك بها ConfigMaps تقريبًا: كمتغيرات بيئية أو ملفات موصولة. ويفك Kubernetes ترميزها تلقائيًا قبل تقديمها إلى الحاوية.
ويُفضّل عمومًا استخدامها كملفات موصولة لأسباب أمنية، إذ يمكن تسجيل المتغيرات البيئية أو فحصها بسهولة أكبر.
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: my-app-container
image: busybox
command: ["sh", "-c", "echo DB User: $DB_USERNAME; echo DB Pass: $DB_PASSWORD"]
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: db-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
restartPolicy: Neverأفضل ممارسات الأمان
تذكّر أن ترميز base64 ليس تشفيرًا. ولتشفير البيانات أثناء السكون فعليًا، قد تحتاج إلى واجهة خلفية لـ Kubernetes Secrets (مثل Vault)، أو إلى الاستفادة من خدمات KMS التي يوفرها مزود السحابة.
- RBAC: تحكّم في الجهات التي يمكنها الوصول إلى Secrets.
- أقل قدر من الصلاحيات: امنح Pods حق الوصول فقط إلى Secrets التي تحتاج إليها.
- الملفات الموصولة: فضّل توصيل Secrets كملفات بدلًا من استخدامها كمتغيرات بيئية.
تحقق سريع من الإعدادات
تحتاج إلى تخزين مفتاح API (حساس) وإعداد مستوى السجل (غير حساس) لتطبيقك في Kubernetes.
ما كائنات Kubernetes التي ينبغي استخدامُها لكل منهما، على التوالي؟
مراجعة: ConfigMaps وSecrets
أحسنت! لقد تعلمت كيفية إدارة إعدادات التطبيقات والبيانات الحساسة في Kubernetes.
- ConfigMaps: تخزن أزواج المفتاح-القيمة غير الحساسة.
- Secrets: تخزن البيانات الحساسة (مُرمّزة باستخدام base64).
- يمكن استهلاك كليهما كمتغيرات بيئية أو ملفات موصولة بواسطة Pods.
- احرص دائمًا على اتباع أفضل ممارسات الأمان عند التعامل مع المعلومات الحساسة.
بعد ذلك، استكشف موضوعات الأمان المتقدمة مثل RBAC وحلول إدارة الأسرار الخارجية.
الأسئلة الشائعة
هل درس «ConfigMaps وSecrets» مجاني؟
نعم — نص درس «ConfigMaps وSecrets» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «ConfigMaps وSecrets»؟
أدِر بيانات الإعدادات والمعلومات الحساسة بأمان ضمن عمليات نشر Kubernetes باستخدام ConfigMaps وSecrets تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «ConfigMaps وSecrets»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Deployments للتطبيقات عديمة الحالة
- Services للوصول عبر الشبكة
- ConfigMaps وSecrets
- Ingress والتوجيه الخارجي