الفصل 10.1 - مقدمة إلى Helm
أهداف التعلم
في نهاية هذا الفصل، ستكون قادرًا على:
- فهم ما هو Helm ولماذا يتم استخدامه
- تثبيت Helm
- فهم المفاهيم الأساسية (Charts، Releases، Repositories)
- تثبيت وإدارة Charts
- فهم فوائد Helm
- استخدام أوامر Helm الأساسية
مقدمة
Helm هو مدير الحزم لـ Kubernetes. يبسط تثبيت وإدارة التطبيقات المعقدة في Kubernetes.
ما هو Helm؟
Helm هو أداة تمكن من:
- تعريف التطبيقات في Kubernetes كحزم قابلة لإعادة الاستخدام
- تثبيت التطبيقات المعقدة بأمر واحد
- تحديث وإدارة إصدارات التطبيقات
- مشاركة التطبيقات عبر المستودعات
تشبيه: Helm يشبه apt لأوبونتو أو npm لـ Node.js، ولكن لـ Kubernetes.
المفاهيم الأساسية
Chart
الـ Chart هو حزمة تطبيق Kubernetes. يحتوي على:
- قوالب YAML لموارد Kubernetes
- ملف القيم الافتراضية (
values.yaml) - بيانات وصفية (
Chart.yaml)
Release
الـ Release هو نسخة من Chart تم نشرها في الكلاستر. يمكن تثبيت نفس الـ Chart عدة مرات بإصدارات مختلفة.
Repository
الـ Repository هو مجموعة من Charts. يمكن أن يكون محليًا أو عن بعد (HTTP).
التثبيت
Linux/Mac
# تحميل Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# التحقق
helm version
Windows
# عبر Chocolatey
choco install kubernetes-helm
# أو التحميل من GitHub
# https://github.com/helm/helm/releases
التحقق
helm version
# version.BuildInfo{Version:"v3.12.0", ...}
الأوامر الأساسية
إضافة Repository
# Repository Bitnami (شائع)
helm repo add bitnami https://charts.bitnami.com/bitnami
# تحديث المستودعات
helm repo update
# قائمة المستودعات
helm repo list
البحث عن Charts
# البحث في المستودعات
helm search repo nginx
# البحث في Artifact Hub
helm search hub nginx
تثبيت Chart
# التثبيت الأساسي
helm install my-release bitnami/nginx
# مع اسم إصدار مخصص
helm install web-server bitnami/nginx
# مع قيم مخصصة
helm install my-release bitnami/nginx -f my-values.yaml
# مع قيم inline
helm install my-release bitnami/nginx \
--set service.type=LoadBalancer \
--set replicaCount=3
قائمة Releases
# رؤية جميع الإصدارات
helm list
# رؤية في namespace محدد
helm list -n production
# رؤية جميع الإصدارات (بما في ذلك المحذوفة)
helm list --all
تحديث إصدار
# تحديث مع قيم جديدة
helm upgrade my-release bitnami/nginx -f new-values.yaml
# تحديث إلى إصدار جديد
helm upgrade my-release bitnami/nginx --version 15.0.0
# التراجع
helm rollback my-release 1
حذف إصدار
# حذف إصدار
helm uninstall my-release
# رؤية التاريخ قبل الحذف
helm history my-release
مثال: تثبيت NGINX
الخطوة 1: إضافة Repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
الخطوة 2: البحث عن Chart
helm search repo nginx
الخطوة 3: التثبيت
helm install my-nginx bitnami/nginx
الخطوة 4: التحقق
# رؤية الإصدار
helm list
# رؤية الموارد التي تم إنشاؤها
kubectl get all -l app.kubernetes.io/instance=my-nginx
# الحصول على URL
helm status my-nginx
فوائد Helm
1. البساطة
بدون Helm:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f configmap.yaml
kubectl apply -f ingress.yaml
# ... 10+ ملفات
مع Helm:
helm install my-app ./my-chart
2. إدارة الإصدارات
# تثبيت إصدار محدد
helm install my-app ./my-chart --version 1.2.3
# التحديث
helm upgrade my-app ./my-chart --version 1.3.0
# التراجع
helm rollback my-app 1
3. إعادة الاستخدام
يمكن استخدام Chart لعدة بيئات:
helm install my-app-dev ./my-chart -f dev-values.yaml
helm install my-app-prod ./my-chart -f prod-values.yaml
4. المشاركة
يمكن مشاركة Charts عبر مستودعات عامة أو خاصة.
هيكل Chart
my-chart/
├── Chart.yaml # بيانات وصفية
├── values.yaml # قيم افتراضية
├── templates/ # قوالب Kubernetes
│ ├── deployment.yaml
│ ├── service.yaml
│ └── configmap.yaml
└── charts/ # تبعيات
أوامر مفيدة
معلومات
# رؤية قيم Chart
helm show values bitnami/nginx
# رؤية قيم إصدار
helm get values my-release
# رؤية manifest المولد
helm get manifest my-release
# رؤية الملاحظات
helm get notes my-release
تصحيح الأخطاء
# قالب مع dry-run
helm install my-release ./my-chart --dry-run --debug
# رؤية القيم المحسوبة
helm install my-release ./my-chart --debug --dry-run
ممارسات جيدة
1. استخدام المستودعات
يفضل استخدام المستودعات الرسمية بدلاً من Charts المحلية عند الإمكان.
2. إدارة الإصدارات
استخدام إصدارات محددة في الإنتاج.
3. ملفات القيم
فصل القيم حسب البيئة (dev، staging، prod).
4. الاختبار
اختبار Charts باستخدام --dry-run قبل التثبيت.
5. التوثيق
توثيق القيم القابلة للتخصيص في values.yaml.
الملخص
في هذا الفصل، تعلمت:
Helm: مدير الحزم لـ Kubernetes
Chart: حزمة تطبيق Kubernetes
Release: نسخة من Chart منشورة
Repository: مجموعة من Charts
التثبيت: helm install مع المستودعات
الإدارة: helm upgrade، helm rollback، helm uninstall
الفوائد: البساطة، إدارة الإصدارات، إعادة الاستخدام، المشاركة
ممارسات جيدة: المستودعات، إدارة الإصدارات، ملفات القيم، الاختبار
الخطوات التالية
الفصل 10.2: Helm Charts (الإنشاء والهيكل)
الفصل 10.3: القوالب والقيم
المختبر 10.1: تثبيت واستخدام Charts Helm
تم إنشاء الفصل في: ديسمبر 2024