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