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

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