سلام، توی این آموزش قراره که هلمچارتهامون رو روی artifacthub با استفاده از github pages قرار بدیم.
فرض میکنیم که یه هلمچارت نوشتیم [قصد دارم بعدا آموزشش رو بزارم] یا یه هلمچارت از اینترنت گرفتیم و توش تغییرات دادیم و میخوایم نشرش بدیم و توی artifacthub بزاریمش.
بخوام توی عمل نمونه اینکارو رو بگم بهتون، ما توی شرکت نیاز به metabase داشتیم و خواستم که با هلمچارت اون رو اپلای کنم، توی اینترنت دنبال هلمچارت برای متابیس گشتم و این رو پیدا کردم:
اما دردسر زیاد داشت، کنارش باید دیتابیس mysql یا postgres بالا میآوردم که دیتاش رو بریزه داخل اون، که خودش یه هلم دیتابیس هم میخواست و به نظرم بالا آوردن یه دیتابیس فقط برای دیتای متابیس یکم اسراف منابع بود.
نکته دیگهای هم که وجود داشت این بود که دیتابیس متابیس [چه قافیهای :))] زیاد اهمیت نداشت بخاطر همین تصمیم گرفتم یه تغییراتی توی هلمچارتی که پیدا کرده بودم بدم و دیتابیس h2 [که برای پروداکشن توصیه نمیشه] رو سمت کوبرنتیز persist کنم.
برای همین توی هلمچارت اصلی یکم تغییرات دادم و بعد از اینکه تستش کردم و کارم تموم شد، برام جالب بود که روی artifact-hub هم آپلودش کنم.
برای اینکه بتونیم هلمچارت خودمون رو توی artifacthub آپلود و اضافه کنیم نیاز داریم که هلم چارت خودمون رو داخل یک ریپازیتوری helm قرار بدیم. پس نیازه که اول یدونه ریپازیتوری هلم بسازیم :دی
به صورت کلی یک ریپوزیتوری هلم چنین ساختاری رو نیاز داره: [نمونهاش رو اینجا ببینید]
هلم ریپوها تقریبا مثل ریپوهای APT و خیلی از ریپوهای دیگه یک فایل مشترک دارن که حاوی لیستی از پکیجهایی که ارائه میدن هست.
مثلا توی ریپوهای APT این فایل Release نام داره که سال ۹۶ توی آموزش زیر باهم ساختیمش:
به همین ترتیب توی ریپوهای هلمی اسم این فایل 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 [نمونه اش اینجاست] نوشته بودیم ساخت.
همونطور که گفتیم این فایل حاوی لیست پکیجهایی که ما داخل ریپو خودمون داریم به همراه متادیتای اونا هست.
پس بدون فوت وقت میریم که بسازیمش، برای اینکار از دستور
helm repo index .
استفاده میکنیم:
همینطور که میبینید یک فایل index.yaml از روی پکیج ما ساخته شده و ریپوی ما آمادهست.
بریم برای هاست کردنش روی گیتهاب pages.
برای اینکار لازمه که پروژه جدید داخل گیتهاب بسازید و ترجیها روی branch اصلی هلمچارت خودتون رو پوش کنید. [که مراحل انجامش رو خود گیتهاب وقتی پروژه جدید میسازین بهتون نمایش میده]
برای راهاندازی گیتهاب pages اول میایم یه برنچ جدید میسازیم با دستور:
git checkout -b gh-pages
سپس فایل tgz و index.yaml رو توی فولدر پروژهمون کپی میکنیم و با دستور زیر پوش میکنیم توی گیتهاب:
git push
بعد از اینکه ریپو آماده شد وقتشه که pages رو فعال کنیم، توی ریپوی گیتهاب روی گزینه Settings میزنیم:
و از صفحه Pages این قابلیت رو فعال میکنیم:
پس از فعال شدن میریم برای اضافه کردنش به artifacthub.
وارد سایت artifacthub.io میشیم و اکانت میسازیم.
از منوی سمت راست برروی Control Panel کلیک میکنیم:
پس از ورود به کنترل پنل، سمت راست گزینه ADD + رو میزنیم.
و فرم رو به صورت زیر وارد میکنیم:
بعد از اینکه ریپوی خودمون رو به artifacthub معرفی کردیم میتونیم داخل کنترل پنل ببینیم و وقتی سرچ میکنیم جزو نتایج میاد.
تبریک میگم - شما اولین ریپوی هلم خودتون رو ساختید و داخل artifacthub به اصطلاح خارجیا publish کردین D:
ممنون میشم اگه پست من مفید بود لایکش کنید و اگه مشکلی داشت یا به مشکلی برخوردید برام کامنت بزارید.