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

الفصل 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