aminaleahmad
aminaleahmad
خواندن ۳ دقیقه·۱ سال پیش

قراردادن helm-chartها برروی artifacthub

سلام، توی این آموزش قراره که هلم‌چارت‌هامون رو روی artifacthub با استفاده از github pages قرار بدیم.

فرض می‌کنیم که یه هلم‌چارت نوشتیم [قصد دارم بعدا آموزشش رو بزارم] یا یه هلم‌چارت از اینترنت گرفتیم و توش تغییرات دادیم و می‌خوایم نشرش بدیم و توی artifacthub بزاریمش.




مقدمه داستانی: [این بخش رو می‌تونید ازش بگذرید]

بخوام توی عمل نمونه‌ این‌کارو رو بگم بهتون، ما توی شرکت نیاز به metabase داشتیم و خواستم که با هلم‌چارت اون رو اپلای کنم، توی اینترنت دنبال هلم‌چارت برای متابیس گشتم و این رو پیدا کردم:

https://github.com/pmint93/helm-charts

اما دردسر زیاد داشت،‌ کنارش باید دیتابیس mysql یا postgres بالا می‌آوردم که دیتاش رو بریزه داخل اون، که خودش یه هلم دیتابیس هم می‌خواست و به نظرم بالا آوردن یه دیتابیس فقط برای دیتای متابیس یکم اسراف منابع بود.

نکته دیگه‌ای هم که وجود داشت این بود که دیتابیس متابیس [چه قافیه‌ای :))] زیاد اهمیت نداشت بخاطر همین تصمیم گرفتم یه تغییراتی توی هلم‌چارتی که پیدا کرده بودم بدم و دیتابیس h2 [که برای پروداکشن توصیه نمی‌شه] رو سمت کوبرنتیز persist کنم.

برای همین توی هلم‌چارت اصلی یکم تغییرات دادم و بعد از اینکه تستش کردم و کارم تموم شد، برام جالب بود که روی artifact-hub هم آپلودش کنم.



مرحله اول: بررسی ساختار مورد نیاز یک helm repo

برای اینکه بتونیم هلم‌چارت خودمون رو توی artifacthub آپلود و اضافه کنیم نیاز داریم که هلم چارت خودمون رو داخل یک ریپازیتوری helm قرار بدیم. پس نیازه که اول یدونه ریپازیتوری هلم بسازیم :دی

به صورت کلی یک ریپوزیتوری هلم چنین ساختاری رو نیاز داره: [نمونه‌اش رو اینجا ببینید]

هلم ریپو‌ها تقریبا مثل ریپوهای APT و خیلی از ریپو‌های دیگه یک فایل مشترک دارن که حاوی لیستی از پکیج‌هایی که ارائه می‌دن هست.

مثلا توی ریپو‌های APT این فایل Release نام داره که سال ۹۶ توی آموزش زیر باهم ساختیمش:

https://virgool.io/@aminaleahmad/create-your-own-cydia-repo-nwkuaegz21pm

به همین ترتیب توی ریپو‌های هلمی اسم این فایل index.yaml هست.

طبق الگوی آموزش قبلی برای تهیه و ساخت فایل index.yaml نیازه که اول پکیج‌هامون رو لیست کنیم و بعد از روی این پکیج‌ها فایل index.yaml رو بسازیمش.

پس میریم سراغ مرحله بعد...

مرحله دوم: پکیج کردن هلم‌چارت

خب، برای این‌کار کافیه که هلم‌چارت مدنظرمون رو پکیجش کنیم، فرض می‌کنیم یه همچین ساختاری رو توی سیستممون داریم.

با کامند زیر از هلم‌چارت خودمون پکیج می‌گیریم:

$ helm package metabase-chart Successfully packaged chart and saved it to: /tmp/virgool-artifacthub/metabase-2.7.1.tgz $ ls metabase-2.7.1.tgz metabase-chart

که می‌بینید خود helm یه فایل tar با اسم و ورژن چارتمون که داخل Chart.yaml [نمونه اش اینجاست] نوشته بودیم ساخت.

مرحله سوم: ساخت فایل index.yaml

همون‌طور که گفتیم این فایل حاوی لیست پکیج‌هایی که ما داخل ریپو خودمون داریم به همراه متادیتای اونا هست.

پس بدون فوت وقت می‌ریم که بسازیمش، برای اینکار از دستور

helm repo index .

استفاده می‌کنیم:

همین‌طور که می‌بینید یک فایل index.yaml از روی پکیج ما ساخته شده و ریپوی ما آماده‌ست.

بریم برای هاست کردنش روی گیت‌هاب pages.

مرحله چهارم: هاست کردن ریپو روی github pages

برای اینکار لازمه که پروژه جدید داخل گیت‌هاب بسازید و ترجیها روی branch اصلی هلم‌چارت خودتون رو پوش کنید. [که مراحل انجامش رو خود گیت‌هاب وقتی پروژه جدید می‌سازین بهتون نمایش می‌ده]

برای راه‌اندازی گیت‌هاب pages اول میایم یه برنچ جدید می‌سازیم با دستور:

git checkout -b gh-pages

سپس فایل tgz و index.yaml رو توی فولدر پروژه‌مون کپی می‌کنیم و با دستور زیر پوش می‌کنیم توی گیت‌هاب:

git push

بعد از اینکه ریپو آماده شد وقتشه که pages رو فعال کنیم، توی ریپوی گیت‌هاب روی گزینه Settings می‌زنیم:

و از صفحه Pages این قابلیت رو فعال می‌کنیم:

پس از فعال شدن می‌ریم برای اضافه کردنش به artifacthub.

مرحله پنجم: اضافه کردن ریپو به artifacthub

وارد سایت artifacthub.io می‌شیم و اکانت می‌سازیم.

از منوی سمت راست برروی Control Panel کلیک می‌کنیم:

پس از ورود به کنترل پنل، سمت راست گزینه ADD + رو می‌زنیم.

و فرم رو به صورت زیر وارد می‌کنیم:

بعد از اینکه ریپوی خودمون رو به artifacthub معرفی کردیم می‌تونیم داخل کنترل پنل ببینیم و وقتی سرچ می‌کنیم جزو نتایج میاد.

تبریک می‌گم - شما اولین ریپوی هلم خودتون رو ساختید و داخل artifacthub به اصطلاح خارجیا publish کردین D:

ممنون می‌شم اگه پست من مفید بود لایکش کنید و اگه مشکلی داشت یا به مشکلی برخوردید برام کامنت بزارید.

گیتهابgithub pagesdevops
Site Reliability Engineer
شاید از این پست‌ها خوشتان بیاید