انتقل إلى المحتوى الرئيسي

الفصل 5.4 - أفضل الممارسات

أهداف التعلم​

في نهاية هذا الفصل، ستكون قادرًا على:

  • تطبيق أفضل الممارسات لـ ConfigMaps
  • إدارة الأسرار بشكل آمن
  • فهم الحدود والقيود
  • تنفيذ تدوير الأسرار
  • استخدام External Secrets Operator
  • تنفيذ التشفير في وضع السكون

مقدمة​

أفضل الممارسات لـ ConfigMaps و Secrets ضرورية للحفاظ على بيئة Kubernetes آمنة، قابلة للصيانة، وفعالة.


ConfigMaps: أفضل الممارسات​

1. فصل التكوين​

لا تقم بالتشفير الثابت في الكود:

# ❌ سيء
env:
- name: DATABASE_URL
value: "postgresql://localhost:5432/mydb"

# ✅ جيد
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: app-config
key: database_url

2. التنظيم حسب البيئة​

إنشاء ConfigMaps منفصلة لكل بيئة:

# Dev
kubectl create configmap app-config-dev --from-file=config-dev.properties

# Production
kubectl create configmap app-config-prod --from-file=config-prod.properties

3. إصدار النسخ​

استخدام التسميات لإصدار النسخ:

metadata:
name: app-config
labels:
version: v1
environment: production

Secrets: أفضل الممارسات​

1. لا تقم أبدًا بالالتزام​

❌ لا تفعل أبدًا:

  • الالتزام بالأسرار في Git
  • وضع الأسرار بشكل واضح في YAML
  • مشاركة الأسرار عبر البريد الإلكتروني/الدردشة

✅ افعل:

  • استخدام أدوات إدارة الأسرار
  • تشفير الأسرار في وضع السكون
  • استخدام External Secrets Operator

2. التدوير المنتظم​

# إنشاء سر جديد
kubectl create secret generic db-secret-v2 \
--from-literal=password=new-password

# تحديث النشر
kubectl set env deployment/my-app \
DB_PASSWORD=$(kubectl get secret db-secret-v2 -o jsonpath='{.data.password}' | base64 -d)

# حذف السر القديم
kubectl delete secret db-secret-v1

3. التشفير في وضع السكون​

يخزن Kubernetes الأسرار في base64 (لا يوجد تشفير افتراضي).

الحلول:

  • تفعيل التشفير في وضع السكون (EncryptionConfig)
  • استخدام أدوات خارجية (Vault, AWS Secrets Manager)

الحدود والقيود​

الحجم الأقصى​

  • ConfigMap: 1 ميجابايت لكل إدخال
  • Secret: 1 ميجابايت لكل إدخال
  • الإجمالي: محدود بواسطة etcd (عادة 1.5 ميجابايت)

الأداء​

  • يمكن أن تبطئ ConfigMaps الكبيرة من بدء تشغيل Pods
  • يفضل استخدام عدة ConfigMaps صغيرة

External Secrets Operator​

للأسرار الخارجية (AWS, Azure, GCP, Vault):

apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: db-secret
spec:
secretStoreRef:
name: aws-secrets-manager
kind: SecretStore
target:
name: db-secret
creationPolicy: Owner
data:
- secretKey: password
remoteRef:
key: production/database/password

ملخص​

في هذا الفصل، تعلمت:

ConfigMaps: فصل التكوين عن الكود، التنظيم حسب البيئة
Secrets: لا تقم أبدًا بالالتزام، التدوير المنتظم، التشفير
الحدود: الحجم الأقصى، اعتبارات الأداء
الأدوات: External Secrets Operator للأسرار الخارجية
الأمان: التشفير في وضع السكون، الإدارة المركزية


الخطوات التالية​

Lab 5.1: إنشاء واستخدام ConfigMaps
Lab 5.2: إدارة الأسرار


تم إنشاء الفصل في: ديسمبر 2024