0Pricing
DevOps Bootcamp · درس

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، وهما أداتان أساسيتان لنشر التطبيقات بمرونة وأمان.

ConfigMaps وSecrets — رسم توضيحي 1

لماذا نُخرج الإعدادات خارج التطبيق؟

تخيل تضمين بيانات اعتماد قاعدة البيانات أو مفاتيح 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: Never

ConfigMap كملفات موصولة

بدلًا من ذلك، يمكن توصيل بيانات 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: Never

Secrets: البيانات الحساسة

تشبه 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Deployments للتطبيقات عديمة الحالة
  2. Services للوصول عبر الشبكة
  3. ConfigMaps وSecrets
  4. Ingress والتوجيه الخارجي
← العودة إلى DevOps Bootcamp