به نام خدا
یکی از دغدغههایی که معمولا برای دیپلوی سرویسها روی کوبرنتیز هست نوشتن فایلهای مختلف آبجکتهای کوبرنتیزیه. هلم این کار رو با استفاده از template برامون راحتتر میکنه. اما خود نوشتن هلم چارت میتونه سخت بشه چون باید با دقت values و template طراحی بشه. میخوام شما رو در این مقاله با یه هلم چارت کلی آشنا کنم که بشه خیلی از سرویسها رو باهاش دیپلوی کرد.
با توجه به مسئلهای که گفتم، من به این فکر افتادم که یک هلم چارت کلی داشته باشم که بتونم انواع سرویسها رو باهاش دیپلوی کنم. توی اینترنت گشتم و یه ریپوی گیتهاب خوب پیدا کردم. البته مدتی بود که دیگه توسعه داده نمیشد. به خاطر این فورکش کردم و تقریبا یه سالی هست که دارم توسعهاش میدم و تا الان چندین ورژن جدید هم دادم. برای هر کدوم changelog هم نوشتم که میتونید بخونیدش. آدرسش اینه:
https://github.com/aahemm/helm-microservice
مدتیه که دارم ازش برای دیپلوی سرویس بکند، فرانت و انواع دیتابیس استفاده میکنم و خوب بوده. به کمک این چارت دیگه لازم نیست خودتون یه چارت رو از اول بنویسید و فقط کافیه یک فایل values.yaml بنویسید و با دستور helm install دیپلویش کنید. توی فرایند GitOps هم میشه ازش استفاده کرد. علاوه بر این سعی شده فایل values ساده باشه که دولوپرها هم بدون دانش کوبرنتیز بتونن ازش استفاده کنن و مقادیر لازم رو اضافه کنن.
به این ریپو چند تا مثال هم اضافه کردم که راحتتر بتونید سرویسهایی که میخواید رو باهاش دیپلوی کنید و ایده بگیرید که چه ویژگیهایی داره. توی پوشهی docs میتونید ببینیدشون. در ادامه میخوام نحوهی دیپلوی nginx رو با این هلم چارت توضیح بدم.
فایل values که برای nginx استفاده میکنیم رو میتونید در این لینک ببینید. توی ویرگول متاسفانه سخته قرار دادن این جور فایلها. تو این فایل اول کار تعداد رپلیکاها مشخص شده. دقت کنید که به طور پیشفرض Deployment استفاده میشه و اینجا تعداد رپلیکاهای اون میاد. بعدش اطلاعات ایمیج از جمله تگ و آدرسش داده شده. در قسمت بعد یک Service کوبرنتیز تعریف شده که بقیهی پادهای کلاستر به راحتی بتونن به پورت 80 این پاد برسن و هم چنین بشه با نودپورت 30080 بهش رسید. بخش بعدی در مورد کانفیگ nginx هست. اول volumes رو enabled کردیم. چون PVC نمیخوایم اون رو enabled نکردیم. با configMaps کانفیگهای لازم رو بهش میدیم. اول اسم و محل قرار گرفتن رو میذاریم. بعد هم دیتایی که باید توش باشه رو مینویسیم. دقت کنید که داخل data کلمهای که گذاشته میشه اسم فایل در پاد میشه. دیتای فایل هم که یک بلاک ساده در nginx هست. بعد از کانفیگ در resources تعیین میکنیم که چقدر cpu و memory به پاد تعلق بگیره. میتونید این رو حذف کنید اگه نیاز ندارید ولی توصیه میشه همیشه بذاریدش. با نوشتن این چند خط داخل یه فایل به اسم values.yaml آمادهایم که دیپلویش کنیم:
helm repo add app https://aahemm.github.io/helm-microservice helm repo update helm install my-release app/app --values ./values.yaml
اگر دوست داشتید حتما تو این پروژه مشارکت کنید. حتی کوچکترین مشارکت هم به بهتر شدنش کمک میکنه. مثلا اگه سرویس خاصی خواستید دیپلوی کنید و در موردش سوال داشتید زیر همین پست بگید یا ایشوی جدید باز کنید. اگر ایرادی دیدید یا ویژگی جدیدی لازم داشتید هم در قالب ایشوی گیتهاب بگید. یه راه مهم دیگه اینه که خودتون تغییراتی بدید و در گیتهاب pull request بزنید. مخصوصا مثالهای جدید و مستندات. در نهایت اگر از این ریپو خوشتون اومد توی گیتهاب بهش ستاره بدید و به بقیه معرفی کنید.