الفصل 12.1 - النشر في الإنتاج
أهداف التعلم
في نهاية هذا الفصل، ستكون قادرًا على:
- فهم متطلبات الإنتاج
- تنفيذ التوافر العالي
- تكوين الأمان في الإنتاج
- إدارة الموارد بكفاءة
- إعداد المراقبة والتنبيهات
- تطبيق أفضل الممارسات
مقدمة
يتطلب النشر في الإنتاج إعدادًا دقيقًا لضمان التوافر والأمان والأداء.
التوافر العالي
عناقيد متعددة العقد
توصيات:
- الحد الأدنى 3 عقد لـ Control Plane
- الحد الأدنى 3 عقد للعامل
- التوزيع على عدة مناطق توافر
ميزانيات اضطراب البود
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: app-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: my-app
النتيجة: يضمن توفر ما لا يقل عن 2 بود أثناء التحديثات.
الأمان
تكوين RBAC
# تحديد الأذونات
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: app-role
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
سياسات الشبكة
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
الأسرار المشفرة
# تفعيل التشفير في الراحة
apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
- resources:
- secrets
providers:
- aescbc:
keys:
- name: key1
secret: <base64-encoded-secret>
الصور الممسوحة
استخدام أدوات فحص الصور (Trivy, Clair) قبل النشر.
إدارة الموارد
الطلبات والحدود
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
template:
spec:
containers:
- name: app
image: my-app:1.0
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 500m
memory: 1Gi
حصص الموارد
apiVersion: v1
kind: ResourceQuota
metadata:
name: namespace-quota
namespace: production
spec:
hard:
requests.cpu: "10"
requests.memory: 20Gi
limits.cpu: "20"
limits.memory: 40Gi
persistentvolumeclaims: "10"
نطاقات الحدود
apiVersion: v1
kind: LimitRange
metadata:
name: namespace-limits
namespace: production
spec:
limits:
- default:
cpu: "500m"
memory: "1Gi"
defaultRequest:
cpu: "250m"
memory: "512Mi"
type: Container
المراقبة والتنبيهات
المقاييس الأساسية
- استخدام CPU/الذاكرة
- زمن استجابة الطلبات
- معدل الأخطاء
- توفر الخدمات
التنبيهات الحرجة
- البودات في CrashLoop
- استخدام CPU > 90%
- استخدام الذاكرة > 90%
- الخدمات غير متوفرة
النسخ الاحتياطي واستعادة الكوارث
النسخ الاحتياطي لـ etcd
# النسخ الاحتياطي
ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-snapshot.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/etcd/ca.crt \
--cert=/etc/etcd/server.crt \
--key=/etc/etcd/server.key
# الاستعادة
ETCDCTL_API=3 etcdctl snapshot restore /backup/etcd-snapshot.db
النسخ الاحتياطي للأحجام
استخدام لقطات الأحجام (EBS, Azure Disk, إلخ).
أفضل الممارسات
1. البيئات المتعددة
فصل dev, staging, production باستخدام namespaces أو عناقيد.
2. الترقيم
استخدام علامات صور محددة، وليس latest.
3. فحوصات الصحة
تكوين liveness, readiness, و startup probes.
4. التحديثات المتدرجة
استخدام استراتيجيات نشر بدون انقطاع.
5. التوثيق
توثيق إجراءات النشر والتراجع.
ملخص
في هذا الفصل، تعلمت:
التوافر العالي: متعددة العقد، ميزانيات اضطراب البود
الأمان: RBAC، سياسات الشبكة، الأسرار المشفرة، الصور الممسوحة
الموارد: الطلبات، الحدود، الحصص، نطاقات الحدود
المراقبة: المقاييس الأساسية، التنبيهات الحرجة
النسخ الاحتياطي: etcd، الأحجام، استعادة الكوارث
أفضل الممارسات: البيئات المتعددة، الترقيم، فحوصات الصحة
الخطوات التالية
الفصل 12.2: CI/CD
الفصل 12.3: البيئات
المختبر 12.1: تكوين إدارة الموارد
الفصل تم إنشاؤه في: ديسمبر 2024