 
   - بواسطة x32x01 ||
 إدارة التطبيقات على Kubernetes بسهولة مع Helm Charts
 إدارة التطبيقات على Kubernetes بسهولة مع Helm Chartsلو اشتغلت قبل كده على Kubernetes أكيد عارف قد إيه إدارة التطبيقات عليه ممكن تكون مرهقة

كل حاجة محتاجة ملفات YAML كتير، Configs، Services، وDeployments… وده كله ممكن يتوهك وسط التفاصيل.
لكن هنا بييجي دور البطل بتاعنا
 - Helm Charts
 - Helm Chartsاللي تقدر تعتبره الـ Package Manager بتاع Kubernetes، زي ما الـ npm في JavaScript أو apt في Ubuntu.
 ليه تستخدم Helm؟
 ليه تستخدم Helm؟
خليني أقولك ببساطة، Helm بيخلّي نشر التطبيقات على Kubernetes حاجة سهلة جدًا حتى لو التطبيق كبير أو فيه أكتر من خدمة.بمعنى تاني، بدل ما تمسك عشرات ملفات الـ YAML وتعدل فيها واحدة واحدة، Helm بيخلّصلك كل ده بكود بسيط وسريع

أهم المميزات

 تبسيط النشر: تقدر تنشر تطبيقك بملف واحد بدل كومة YAML. تبسيط النشر: تقدر تنشر تطبيقك بملف واحد بدل كومة YAML.
 إدارة الإصدارات والرجوع بسهولة (Rollback): لو حصل خطأ، ترجع للإصدار اللي قبله في ثانية. إدارة الإصدارات والرجوع بسهولة (Rollback): لو حصل خطأ، ترجع للإصدار اللي قبله في ثانية.
 إعادة استخدام التطبيقات: تقدر تشارك تطبيقك كـ Helm Chart لأي مشروع تاني أو مع الفريق. إعادة استخدام التطبيقات: تقدر تشارك تطبيقك كـ Helm Chart لأي مشروع تاني أو مع الفريق.
 سرعة كبيرة في النشر: حتى لو التطبيق معقد أو فيه أكتر من Microservice. سرعة كبيرة في النشر: حتى لو التطبيق معقد أو فيه أكتر من Microservice.
 المكونات الأساسية في Helm
 المكونات الأساسية في Helm
عشان تفهم Helm صح، محتاج تعرف الـ 3 عناصر الأساسية اللي بيشتغل بيهم 
 Chart
 Chart
ده عبارة عن الـ Package اللي بيضم كل ملفات الـ YAML templates والقيم (values) الخاصة بالتطبيق. Repository
 Repository
زي مستودع بتحفظ فيه الـ Charts، بالظبط زي Docker Hub بس خاص بـ Helm.تقدر ترفع عليه تطبيقاتك أو تستخدم Charts جاهزة من الإنترنت.
 Release
 Release
كل مرة بتعمل Deploy لـ Chart، بيطلع منها Release على الـ Cluster.يعني الإصدار اللي شغال فعلاً من التطبيق بتاعك على Kubernetes.
 دورة عمل Helm خطوة بخطوة
 دورة عمل Helm خطوة بخطوة
تعالى نشوف Helm بيشتغل إزاي بشكل عملي 
 المسؤول (Admin) بيستخدم Helm من جهازه.
 المسؤول (Admin) بيستخدم Helm من جهازه. بيختار الـ Chart المناسب من الـ Repository ويحمّله.
 بيختار الـ Chart المناسب من الـ Repository ويحمّله. Helm بعد كده بيعمل Deploy للـ Chart على الـ Kubernetes Cluster.
 Helm بعد كده بيعمل Deploy للـ Chart على الـ Kubernetes Cluster. الـ Cluster نفسه بيتكوّن من:
 الـ Cluster نفسه بيتكوّن من: Master Node: فيها المكونات الأساسية زي (Scheduler, API Server, Controller, Etcd). Master Node: فيها المكونات الأساسية زي (Scheduler, API Server, Controller, Etcd).
 Worker Nodes: اللي بيتوزع عليها التطبيق بعد ما يتحوّل من Chart إلى Release. Worker Nodes: اللي بيتوزع عليها التطبيق بعد ما يتحوّل من Chart إلى Release.
فكل Release (زي Release A أو Release B) بيتوزع على الـ Nodes عشان يشتغل التطبيق بكفاءة وبـ High Availability

 مثال عملي سريع
 مثال عملي سريع
خلينا نوضّحها بمثال بسيط جدًا 
لو عندك تطبيق اسمه myapp، كل اللي عليك تعمله:
 Code: 
 helm repo add bitnami https://charts.bitnami.com/bitnami
helm install myapp bitnami/nginx
ولو حصلت مشكلة؟
ولا يهمك

كل اللي تعملوه:
 Code: 
 helm rollback myapp 1 أفضل الممارسات (Best Practices) مع Helm
 أفضل الممارسات (Best Practices) مع Helm
عشان تشتغل باحتراف وتتفادى الأخطاء، خليك ماشي على شوية نصايح مهمة 
 افصل ملف values.yaml لكل بيئة (Development, Staging, Production). افصل ملف values.yaml لكل بيئة (Development, Staging, Production).
 استخدم helm diff plugin علشان تشوف التغييرات قبل ما تعمل Upgrade. استخدم helm diff plugin علشان تشوف التغييرات قبل ما تعمل Upgrade.
 اعمل Version Control للـ Charts على GitHub أو GitLab (ده هو مفهوم الـ GitOps). اعمل Version Control للـ Charts على GitHub أو GitLab (ده هو مفهوم الـ GitOps).
 دايمًا جرّب الـ Chart في بيئة اختبار قبل ما ترفعه على Production. دايمًا جرّب الـ Chart في بيئة اختبار قبل ما ترفعه على Production.
 أدوات مهمة بتتكامل مع Helm
 أدوات مهمة بتتكامل مع Helm
Helm لوحده قوي جدًا، بس قوّته بتزيد لما تستخدمه مع الأدوات التانية دي 
 Artifact Hub: أكبر مستودع فيه Charts جاهزة لأي تطبيق تتخيله. Artifact Hub: أكبر مستودع فيه Charts جاهزة لأي تطبيق تتخيله.
 Bitnami Helm Charts: فيها مجموعة ضخمة من التطبيقات الجاهزة زي Nginx, WordPress, MongoDB. Bitnami Helm Charts: فيها مجموعة ضخمة من التطبيقات الجاهزة زي Nginx, WordPress, MongoDB.
 Flux / ArgoCD: للتكامل مع أنظمة GitOps وتشغيل الـ Deployments بشكل أوتوماتيك. Flux / ArgoCD: للتكامل مع أنظمة GitOps وتشغيل الـ Deployments بشكل أوتوماتيك.
 Helmfile: لإدارة مشاريع كبيرة فيها أكتر من Chart في نفس الوقت. Helmfile: لإدارة مشاريع كبيرة فيها أكتر من Chart في نفس الوقت.
 خلاصة الكلام
 خلاصة الكلام
لو بتشتغل على Kubernetes ومش عايز تغرق في تفاصيل YAML،يبقى Helm هو الحل السحري

Helm بيخليك تدير وتنشر تطبيقاتك بسرعة، بسهولة، وبأقل أخطاء ممكنة.
تقدر تعمل Upgrade، Rollback، Version Control - كل ده بسطر أو سطرين كود.
يعني باختصار:
Helm هو المعيار الذهبي لإدارة تطبيقات الـ Kubernetes في عالم Cloud Native وDevOps

