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

الفصل 12.3 - إدارة البيئات

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

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

  • فهم استراتيجيات إدارة البيئات
  • استخدام namespaces لعزل البيئات
  • إدارة مجموعات منفصلة
  • تكوين القيم حسب البيئة
  • تنفيذ الترقية بين البيئات
  • تطبيق أفضل الممارسات

مقدمة​

تسمح إدارة البيئات بفصل التطوير، التدريج، والإنتاج لتحقيق استقرار وأمان أفضل.


استراتيجيات​

1. Namespaces لكل بيئة​

المزايا:

  • سهل الإدارة
  • مشاركة الموارد
  • اقتصادي

العيوب:

  • عزل محدود
  • خطر التعارضات

2. مجموعات منفصلة​

المزايا:

  • عزل كامل
  • أمان أقصى
  • لا تعارضات

العيوب:

  • أكثر تعقيدًا
  • تكلفة أعلى

Namespaces لكل بيئة​

الإنشاء​

# Créer les namespaces
kubectl create namespace dev
kubectl create namespace staging
kubectl create namespace production

# Ajouter des labels
kubectl label namespace dev environment=development
kubectl label namespace staging environment=staging
kubectl label namespace production environment=production

النشر​

# Déployer dans chaque environnement
kubectl apply -f deployment.yaml -n dev
kubectl apply -f deployment.yaml -n staging
kubectl apply -f deployment.yaml -n production

حصص الموارد لكل بيئة​

# dev-quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: dev-quota
namespace: dev
spec:
hard:
requests.cpu: "5"
requests.memory: 10Gi
limits.cpu: "10"
limits.memory: 20Gi

مجموعات منفصلة​

الهيكلية​

المزايا:

  • عزل كامل
  • أمان أقصى
  • لا خطر للتلوث

التكوين حسب البيئة​

ملفات القيم​

# values-dev.yaml
replicaCount: 1
image:
tag: "dev"
resources:
requests:
cpu: 100m
memory: 128Mi

# values-staging.yaml
replicaCount: 2
image:
tag: "staging"
resources:
requests:
cpu: 250m
memory: 256Mi

# values-prod.yaml
replicaCount: 5
image:
tag: "1.0.0"
resources:
requests:
cpu: 500m
memory: 512Mi

النشر باستخدام Helm​

# Dev
helm install my-app ./my-chart -f values-dev.yaml -n dev

# Staging
helm install my-app ./my-chart -f values-staging.yaml -n staging

# Production
helm install my-app ./my-chart -f values-prod.yaml -n production

الترقية بين البيئات​

العملية​

الأتمتة​

# GitHub Actions workflow
name: Promote to Production
on:
workflow_dispatch:
inputs:
version:
description: 'Version to promote'
required: true

jobs:
promote:
runs-on: ubuntu-latest
steps:
- name: Deploy to Production
run: |
helm upgrade my-app ./my-chart \
-f values-prod.yaml \
--set image.tag=${{ github.event.inputs.version }} \
-n production

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

1. فصل واضح​

الحفاظ على فصل واضح بين البيئات.

2. تكوين خارجي​

استخدام ConfigMaps و Secrets للتكوين.

3. اختبارات تلقائية​

تنفيذ الاختبارات في كل بيئة.

4. التوثيق​

توثيق الفروقات بين البيئات.

5. وصول مقيد​

تقييد الوصول إلى الإنتاج باستخدام RBAC.


ملخص​

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

استراتيجيات: Namespaces أو مجموعات منفصلة
Namespaces: بسيط، اقتصادي، عزل محدود
المجموعات: عزل كامل، أكثر تعقيدًا
التكوين: ملفات القيم حسب البيئة
الترقية: عملية الترقية بين البيئات
أفضل الممارسات: فصل، تكوين خارجي، اختبارات


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

المختبر 12.4: المشروع النهائي الكامل
ملخص الدورة


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