مخططات Helm على ArtifactHub عبر الاستضافة على صفحات Github

Built for Speed: ~10ms Latency, Even Under Load
Blazingly fast way to build, track and deploy your models!
- Handles 350+ RPS on just 1 vCPU — no tuning needed
- Production-ready with full enterprise support
دعنا نناقش كيف يمكننا استضافة مخططات Helm الخاصة بنا على صفحات GitHub والسماح للآخرين باستخدام مخططاتنا على ArtifactHub. قبل فهم العملية، سنحاول فهم هذه المصطلحات بأبسط شكل.
ما هو مخطط Helm؟
مخططات Helm هي الطريقة التي تقوم بها بإنشاء قوالب لموارد Kubernetes التي ترغب في نشرها. إذا كنت ترغب في إنشاء موارد Kubernetes في مجموعات متعددة (أو حتى في نفس المجموعة) بقيم مختلفة، فإنك تنشئ قالبًا للموارد وتقوم بتعبئته. تُعرف هذه الحزمة باسم مخطط Helm.
صفحات GitHub
صفحات GitHub هي ميزة من GitHub تتيح لك إنشاء موقع ويب أو صفحة ويب مستضافة على خوادم GitHub. إذا كان لديك ملف بسيط index.html ملف، فيمكنك استضافة ملف HTML هذا باستخدام اسم النطاق الذي توفره GitHub والذي يكون عادةً بالصيغة username.github.io . إنها طريقة لمشاركة عملك أو عرض مشاريعك عبر الإنترنت دون الحاجة إلى خدمة استضافة ويب منفصلة. في حالتنا، سنقوم بـ استضافة مخططات Helm الخاصة بنا على صفحات GitHub.
ArtifactHub
ArtifactHub هي منصة قائمة على الويب تعمل كمستودع مركزي لتوزيعات البرامج المختلفة مثل مخططات Helm و OPA وما إلى ذلك. بمجرد أن ننشئ مخطط Helm الخاص بنا ونستضيفه على صفحات GitHub، سنجعله قابلاً للاكتشاف للمجتمع من خلال عرضه على ArtifactHub.
لا تستضيف ArtifactHub مخططات Helm نفسها، بل تعمل كسجل لمستودعات مخططات Helm. يمكن للمطورين نشر مخططات Helm الخاصة بهم في مستودعاتهم المفضلة، مثل GitHub أو GitLab أو Bitbucket، ثم تسجيل مستودعاتهم لدى ArtifactHub.
استضافة مخططات Helm عبر صفحات GitHub
الآن سنرى كيف يمكننا الاستفادة من ميزات الصفحات (Pages) في GitHub لاستضافة مخططات Helm لتطبيقنا. في هذا المثال، سأستخدم مخططات Helm نموذجية ولكن يمكنك أيضًا استخدام مخططات Helm المخصصة الخاصة بك بنفس الطريقة
الخطوة 1: إنشاء مخطط Helm نموذجي
سنبدأ بإنشاء مخطط Helm نموذجي
helm create sample-nginx
الخطوة 2: إنشاء مستودع GitHub
سنقوم بإنشاء مستودع GitHub عام حيث سنستضيف المخططات (charts).
- إنشاء مستودع GitHub
- تأكد من أنه عام
- أنشئ دليلاً باسم
chartsوالذي سيحتوي على مخطط Helm الخاص بك chartsالدليل موجود في المستوى الجذر لمستودعك- ادفع مخططاتك إلى
mainفرع المستودع
$ tree .
.
├── README.md
└── charts
└── sample-nginx
├── Chart.yaml
├── charts
├── القوالب
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── اختبارات
│ └── test-connection.yaml
└── values.yaml
لقد أنشأنا مستودعًا وهو مستضاف هنا:
الخطوة 3: إنشاء رمز وصول GitHub
بمجرد أن تصبح مخططاتنا في الفرع الرئيسي ، نحتاج إلى إنشاء مسار عمل يمكنه إنشاء إصدار GitHub. سيقوم إصدار GitHub هذا بدوره بنشر مخططاتنا. لهذا، نحتاج إلى رمز مميز يتم إنشاؤه بمجموعة محددة من أذونات والتي ستُستخدم بعد ذلك في مسار عملنا لإصدار المخططات.
- انقر على ملفك الشخصي في GitHub في الزاوية العلوية اليمنى
- انتقل إلى الإعدادات.
- انتقل إلى إعدادات المطور في الخيار الأخير في اللوحة اليسرى.
- انتقل إلى رموز الوصول الشخصية واختر رموز مفصلة.
- انقر على إنشاء رمز جديد

- أعطِ الرمز اسمًا وحدد تاريخ انتهاء الصلاحية. حاليًا، أستخدم 7 أيام وبعدها سيصبح الرمز عديم الفائدة.
- في قسم الوصول إلى المستودع، اختر "مستودعات محددة فقط" واختر مستودع GitHub الخاص بنا الذي نعمل عليه

- في قسم الأذونات، نحتاج فقط إلى استخدام أذونات المستودع.
- هنا، نحتاج إلى تحديد
قراءة وكتابةلـمحتويات

- بشكل عام، يجب أن نمتلك هذه الصلاحيات فقط
- بمجرد إنشاء الرمز المميز (التوكن)، احتفظ به بأمان للمتابعة إلى الخطوة التالية.
الخطوة 4: إعداد صفحات GitHub
يمكننا استخدام صفحات GitHub لاستضافة موقعنا الإلكتروني مباشرة على GitHub (بشكل ثابت).
- لنقم بإنشاء فرع آخر في المستودع باسم
gh-pagesوتأكد من تسمية الفرع بـgh-pagesفقط. - في هذا الفرع، قم بإزالة كل شيء وإنشاء ملف بسيط فقط
index.htmlلاختبار الاستضافة. ادفع تغييراتك إلى GitHub.
<!DOCTYPE html>
<html>
<head>
<title>رسوم بيانية نموذجية</title>
<style>
.chart {
width: 400px;
height: 300px;
margin: 20px;
border: 1px solid #ccc;
box-shadow: 2px 2px 5px #ccc;
display: inline-block;
vertical-align: top;
padding: 10px;
box-sizing: border-box;
font-size: 14px;
line-height: 1.5;
}
.chart h3 {
margin-top: 0;
font-size: 18px;
font-weight: bold;
}
.chart p {
margin: 0;
}
</style>
</head>
<body>
<h1>رسوم بيانية نموذجية</h1>
<div class="chart">
<h3>الرسم البياني 1</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer euismod diam et purus hendrerit mollis.</p>
<!-- أضف رمز الرسم البياني الخاص بك هنا -->
</div>
<div class="chart">
<h3>الرسم البياني 2</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer euismod diam et purus hendrerit mollis.</p>
<!-- أضف رمز الرسم البياني الخاص بك هنا -->
</div>
<div class="chart">
<h3>الرسم البياني 3</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer euismod diam et purus hendrerit mollis.</p>
<!-- أضف رمز الرسم البياني الخاص بك هنا -->
</div>
</body>
</html>
- اذهب إلى الإعدادات (Settings) تحت اسم المستودع الخاص بك وانقر على الصفحات (Pages) في اللوحة اليسرى.

- في قسم الإنشاء والنشر (Build and deployment)، اختر الفرع (Branch)
gh-pagesوانتظر بعض الوقت حتى يقوم GitHub بمعالجته. بمجرد الانتهاء، ستحصل على رابط URL في نفس النافذة. بالنقر عليه، ستظهر لك صفحة الـindex.htmlالتي أنشأناها. - انقر هنا للتحقق من ملف index.html الخاص بنا — https://dunefro.github.io/sample-charts/
- الآن، بدلاً من استضافة ملف HTML هذا، سنستضيف مخططات Helm الخاصة بنا.
الخطوة 5: إنشاء مسار عمل (pipeline) في GitHub Actions
في الخطوات السابقة، ناقشنا مسار العمل (pipeline) الذي سيستخدم رمز الوصول (Access token) لإنشاء إصدار GitHub (GitHub Release). يمكنك اختيار أي أداة مفضلة لأداء هذه المهمة، لكنني سأختار GitHub Actions لذلك. GitHub Actions هي أداة أخرى مدعومة أصلاً في GitHub لأداء مهام CI/CD.
قبل إنشاء مسار العمل (pipeline)، سنقوم بإنشاء متغير سري (secret variable) لتمرير الرمز (token) الذي أنشأناه في المهمة السابقة.
- اذهب إلى المستودع الخاص بك وانقر على الإعدادات (Settings) تحت اسم المستودع الخاص بك.

- اذهب إلى الأسرار والمتغيرات (Secrets and Variables) في اللوحة اليسرى وانقر على الإجراءات (Actions).
- انقر على سر مستودع جديد (New Repository Secret) والصق الرمز (token).

يمكن الآن استخدام هذا الرمز (token) في مسار العمل (pipeline) لدفع الإصدارات (releases).
الآن سنقوم بإنشاء مسار عمل GitHub Action.
- أنشئ دليلاً (directory)
.github/workflowsفي المستوى الجذر لمستودعك في الفرعmain. - هذا الدليل هو الدليل الافتراضي الذي نحتفظ فيه بجميع مسارات CI/CD لتشغيل GitHub Actions.
- أنشئ ملفًا باسم
release.yamlداخل الدليل المذكور أعلاه. - الصق المحتوى التالي
name: Release Charts
on:
push:
branches:
- main
jobs:
release:
permissions:
contents: write # لدفع إصدار المخطط وإنشاء إصدار (helm/chart-releaser-action)
runs-on: ubuntu-latest
steps:
- name: سحب الكود
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: تهيئة Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: إعداد Helm
uses: azure/setup-helm@v3.5
with:
version: v3.9.2
- name: تشغيل chart-releaser
uses: helm/chart-releaser-action@v1.5.0
env:
CR_TOKEN: "${{ secrets.HELM_RELEASE_TOKEN }}"
هذا المسار بسيط للغاية. دعنا نفهمه بسرعة كبيرة
الاسم— اسم المسارعند— شرط لتشغيل المسار، هنا نحدد تشغيله عند كل عملية دفع إلىmainفرع.المهام— المهمة الفعلية التي تحتوي على كود المسار. تتحقق من أذونات الـكتابةفي المحتويات التي منحناها بالفعلالخطواتتحدد خطوات المسار. حيث الخطوة الأولى هي استخدامactions/checkout@v3. من الناحية المثالية، إذا كنت تنشئ المسار، فستقوم أولاً بسحب الكود. بدلاً من كتابة الكود الخاص بالسحب، يوفر GitHubإجراءيمكن استخدامه مباشرة بدلاً من كتابة الكود.- في الخطوة الثانية، نقوم بتشغيل الأوامر لتكوين Git. وبالمثل في الخطوة الثالثة، نستخدم
azure/setup-helmإجراء الذي سيقوم بإعداد Helm لنا. - في الخطوة الأخيرة، نستخدم
helm/chart-releaser-actionلإصدار مخطط Helm. أما بالنسبة للإصدار، فنحن نحتاج إلى الرمز السري الذي أنشأناه بالفعل ومررناه في المسار عبر اسم الرمزHELM_RELEASE_TOKEN. سيؤدي هذا الإجراء أيضًا إلى إنشاءindex.yamlفيgh-pagesالفرع مما سيجعل صفحة GitHub تعمل كسجل ثابت لمخططات Helm.
الخطوة 6: قم بتشغيل المسار وتحقق مما إذا كانت الإصدارات قد تم إنشاؤها أم لا
الآن سنجري تغييرًا صغيرًا جدًا في README.md ملف المستودع في main الفرع بحيث يتم تشغيل المسار. عندما دفعت التغييرات، تمكنت من رؤية نقطة برتقالية صغيرة تشير إلى أن المسار قيد التشغيل

- انتقل إلى "الإجراءات" (Actions) تحت اسم المستودع وتحقق من المسارات قيد التشغيل.
- بمجرد انتهاء المسار، يمكننا الانتقال إلى
gh-pagesالفرع والتحقق مما إذا كانindex.yamlقد تم إنشاؤه أم لا. index.yamlهي طريقة تمكن Helm من التعرف على أي موقع ويب مستضاف بشكل ثابت كسجل Helm.- بمجرد انتهاء المسار، سيتم تشغيل مسار آخر تلقائيًا باسم
بناء ونشر الصفحاتوالذي يتم إنشاؤه تلقائيًا بواسطة GitHub لاستضافة التغييرات التي نجريها فيفرع gh-pagesمما يجعلindex.yamlمتاحًا للعامة. — https://dunefro.github.io/sample-charts/index.yaml - يمكننا المضي قدمًا والتحقق من الإصدارات في GitHub لملاحظة أن مخطط Helm الخاص بنا قد تم إصداره في صفحة الإصدارات. — https://github.com/dunefro/sample-charts/releases
الخطوة 7: تأكيد الإصدار عن طريق نشره في مجموعة minikube
لاختبار ما إذا كان سجل Helm الخاص بنا قد تم إنشاؤه بنجاح أم لا
- أنشئ
minikubeمجموعة - قم بتشغيل الأمر أدناه
# أضف المستودع
helm repo add sample-charts https://dunefro.github.io/sample-charts/
helm repo update
# تثبيت المخططات
helm upgrade --install test-nginx sample-charts/sample-nginx
# فحص الـ pods
$ kubectl get pods
الاسم جاهز الحالة مرات إعادة التشغيل العمر
test-nginx-sample-nginx-b95bb4f46-tbppn 1/1 Running 0 30s
مخططاتنا تعمل بشكل جيد.
إعداد ArtifactHub
الآن سنستعرض كيفية إنشاء حساب على ArtifactHub حتى نتمكن من عرض مخططات Helm الخاصة بنا للمجتمع. قد تجد أيضًا بعض مخططات المجتمع الأخرى مثل
الخطوة 1: إنشاء حساب على ArtifactHub وإنشاء مستودع
الآن مخططاتنا مستضافة. يجب أن نتأكد من إمكانية استخدامها من قبل المطورين الآخرين عبر ArtifactHub.
- انتقل إلى https://artifcathub.io واشترك.
- بعد ذلك، انقر على ملفك الشخصي من أيقونة الزاوية العلوية اليسرى ثم انقر على لوحة التحكم.
- انقر على + إضافة مستودع وأضف تفاصيل المستودع. تأكد من استخدام عنوان URL الذي تستضيف فيه مخططاتك في صفحات GitHub.

- الآن انتظر واسترخِ. سيقوم ArtifactHub بسحب التفاصيل تلقائيًا باستخدام
index.yamlمستضاف في صفحاتنا
الخطوة 2: التحقق من المستودع الخاص بك
يمكننا رؤية المستودع الخاص بنا وهو يُنشأ، وبمجرد أن يتمكن ArtifactHub من سحب البيانات، سيبدأ في الظهور في عمليات البحث أيضًا. الآن نريد تطبيق علامة الناشر الموثق بهذا الشكل

لهذا نحتاج إلى إضافة ملف artifacthub-repo.yml في gh-pages الفرع كملف بيانات وصفية سيتم قراءته بواسطة ArtifactHub، مما يؤكد بدوره أننا مالكو السجل.
- انسخ المعرف من المستودع الذي أنشأناه.
- أنشئ ملفًا باسم
artifacthub-repo.ymlفيgh-pagesالفرع بالمحتويات التالية
repositoryID: 67d52f16-b102-4661-bfa5-9e6694587e24
owners: # (اختياري، يستخدم للمطالبة بملكية المستودع)
- name: Vedant Pareek
email: dunefro@gmail.com
- حدّث الـ version من مخططك حتى يتمكن ArtifactHub و GitHub Actions من التقاطه.
- انتظر بعض الوقت حتى يقوم ArtifactHub بإجراء الفحص على السجل.
هذه هي نفس الطريقة التي اعتدنا بها استضافة مخططات Helm العامة الخاصة بنا في تروفاوندري. تروفاوندري هي MLOps, LLMOps منصة تسهّل رحلة دورة الحياة الكاملة لجلب نماذج التعلم الآلي من التطوير إلى الإنتاج. تأخذ في الاعتبار جميع نقاط الألم طوال رحلة دورة حياة التعلم الآلي لتوفير السهولة والراحة أثناء بناء النماذج.
TrueFoundry AI Gateway delivers ~3–4 ms latency, handles 350+ RPS on 1 vCPU, scales horizontally with ease, and is production-ready, while LiteLLM suffers from high latency, struggles beyond moderate RPS, lacks built-in scaling, and is best for light or prototype workloads.
The fastest way to build, govern and scale your AI





















.png)
.webp)










.webp)






