الفصل 5.3 - الحقن في الـ Pods
أهداف التعلم
في نهاية هذا الفصل، ستكون قادرًا على:
- حقن ConfigMaps كمتغيرات بيئية
- تركيب ConfigMaps كأحجام
- استخدام Secrets بطريقة آمنة
- فهم الطرق المختلفة للحقن
- اختيار الطريقة المناسبة حسب حالة الاستخدام
نظرة عامة
هناك عدة طرق لحقن ConfigMaps و Secrets في الـ Pods الخاصة بك. كل طريقة لها مزاياها وحالات الاستخدام الخاصة بها.
طرق الحقن
1. المتغيرات البيئية
من ConfigMap
apiVersion: v1
kind: Pod
metadata:
name: configmap-env-pod
spec:
containers:
- name: app
image: nginx:1.20
env:
# الطريقة 1: مفتاح محدد
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: app-config
key: database_url
# الطريقة 2: جميع المفاتيح
- name: CONFIGMAP_ENV
valueFrom:
configMapRef:
name: app-config
envFrom:
# الطريقة 3: جميع مفاتيح ConfigMap
- configMapRef:
name: app-config
من Secret
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
envFrom:
- secretRef:
name: db-secret
2. الأحجام
ConfigMap كحجم
apiVersion: v1
kind: Pod
metadata:
name: configmap-volume-pod
spec:
containers:
- name: app
image: nginx:1.20
volumeMounts:
- name: config
mountPath: /etc/config
readOnly: true
volumes:
- name: config
configMap:
name: app-config
# اختياري: تضمين مفاتيح معينة فقط
items:
- key: database_url
path: db-url
- key: log_level
path: log-level
Secret كحجم
volumes:
- name: secrets
secret:
secretName: db-secret
defaultMode: 0400 # أذونات (قراءة فقط)
مثال كامل
apiVersion: v1
kind: Pod
metadata:
name: full-example-pod
spec:
containers:
- name: app
image: my-app:1.0
# متغيرات بيئية من ConfigMap
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: app-config
key: log_level
# متغيرات بيئية من Secret
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
# حجم ConfigMap
volumeMounts:
- name: config
mountPath: /etc/config
- name: secrets
mountPath: /etc/secrets
readOnly: true
volumes:
- name: config
configMap:
name: app-config
- name: secrets
secret:
secretName: db-secret
الفروقات: env مقابل volumeMounts
المتغيرات البيئية (env)
المزايا:
- سهل الاستخدام
- يمكن الوصول إليه عبر
$VARIABLE_NAME - جيد للقيم البسيطة
القيود:
- لا توجد ملفات كاملة
- حد الحجم
الأحجام
المزايا:
- ملفات كاملة
- هيكل المجلدات
- جيد لملفات التكوين
حالات الاستخدام:
- ملفات التكوين (nginx.conf، إلخ.)
- الشهادات
- السكربتات
أفضل الممارسات
ConfigMaps
- استخدام الأحجام لملفات التكوين
- استخدام env للقيم البسيطة
- عدم تخزين البيانات الحساسة
Secrets
- دائمًا استخدام readOnly: true للأحجام
- عدم تسجيل قيم secrets
- استخدام أذونات مقيدة (defaultMode: 0400)
ملخص
في هذا الفصل، تعلمت:
المتغيرات البيئية: env و envFrom
الأحجام: configMap و secret كأحجام
الطرق: valueFrom، configMapRef، secretRef
حالات الاستخدام: env للقيم البسيطة، الأحجام للملفات
الأمان: readOnly، أذونات مقيدة لـ secrets
الخطوات التالية
الفصل 5.4: أفضل الممارسات
المختبر 5.1: إنشاء واستخدام ConfigMaps
الفصل تم إنشاؤه في: ديسمبر 2024