Helm یک پکیج منیجر (Package Manager) برای خودکارسازی برخی از اصلیترین عملیاتها در کوبرنتیز است. عملیاتهایی مانند ایجاد، بستهبندی، پیکربندی و دیپلویمنت اپلیکیشنها از جمله عملیاتهایی هستند که با استفاده از Helm میتوانند در یک فرایند خودکارسازی شده انجام شوند.
Helm تمام اطلاعات مورد نیاز برای اپلیکیشنهای بستهبندی شده (Packaged) را دریافت کرده و آنها را به Chart تبدیل میکند. هرکدام از این Chartها شامل اطلاعاتی میشوند که برای اجرا اپلیکیشن روی کلاسترهای کوبرنتیز ضروری هستند.
منظور از این اطلاعات، دادههایی در ارتباط با پیکربندیهای اپلیکیشن، منابع مورد نیاز برای اجرا آن، نسخههای مختلف و مواردی از این دست است.
اگر بخواهیم نزدیکترین ابزار مشابه با Helm را نام ببریم، میتوانیم به ابزار APT در محیط اوبونتو اشاره کنیم. Helm در یک محیط پیچیده و بزرگ مبتنی بر کوبرنتیز، واقعا میتواند ابزار کاربردی و حتی ضروری باشد. از آنجایی که در بسیاری از فرایندهای عملیاتی شما نیاز به نوشتن فایلهای مانیفست مبتنی بر YAML را دارید، Helm با بهکارگیری Chartها، که در واقع هرکدام را میتوان یک پکیج در نظر گرفت، شما را از شر انجام کارهای تکراری و خستهکننده نجات داده و انجام کارها را سرعت میبخشد.
در ادامه با آشنایی بیشتر با Helm متوجه اهمیت و ضرورت آن خواهید شد.
Helm چگونه کار میکند؟
رابطه میان Helm و کوبرنتیز مانند یک اپلیکیشن Client-Server بوده که در آن Helm به عنوان Client و کوبرنتیز به عنوان Server عمل میکند. برای درک چگونگی کار Helm نیاز است که ابتدا با سه مفهوم اصلی آن آشنا شویم:
- Chart: چارتها در ساختار Helm، پکیجهای از پیش کانفیگ شدهای هستند که مانند یک Template عمل میکنند. در دنیای Helm چند نوع چارت مشخص با پیکربندیهای متفاوت وجود دارد که میتوانید آنها را روی کلاستر کوبرنتیز خود قرار دهید.
- Release: این مورد به چارتهایی اشاره دارد که روی کلاستر کوبرنتیز دیپلوی شدهاند. در واقع هر Release یک نمونه یا Instance از چارت است که پیکربندی سفارشیسازی شدهای دارد.
- Repository: مخزن یا ریپازیتوری شامل تاریخچهای از تمام چارتهایی که از پیش منتشر یا در سیستم کوبرنتیز استفاده شدهاند، میشود. در هر زمانی این مخازن میتوانند برای استفاده مجدد توسط دیگران تولید شده و مورد استفاده قرار بگیرند.
دو نسخه از Helm وجود دارد که به صورت عمده از آنها استفاده میشود. V2 و V3. در نسخه ۲ وجود کامپوننتی به نام Tiller که باعث یک آسیبپذیری امنیتی میشد، منجر به توسعه نسخه سوم Helm شد که در نهایت در آن خبری از Tiller نبود.
ساختار چارتها در Helm
هر چارت در ساختار Helm شامل فایلها و دایرکتوریهای مختلفی میشود که در نهایت برای یک هدف مشخص ساخته میشوند. این فایلها و دایرکتوریها در نهایت در کنار همدیگر یک چارت را ایجاد میکند که میتواند روی کلاستر کوبرنتیز اعمال شود. در ادامه لیست فایلها و دایرکتوریهای اساسی چارتها در Helm را میتوانید مشاهده کنید:
Chart.yaml
: فایلی که حاوی اطلاعاتی در مورد چارت است، از جمله نام، نسخه، و توضیحات.values.yaml
: فایلی که حاوی مقادیر پیشفرض برای تنظیمات چارت است. این مقادیر توسط کاربر نهایی میتوانند دوباره تنظیم شوند.templates/
: دایرکتوری که حاوی تمپلیتهای YAML برای کوبرنتیز است. این تمپلیتها در زمان اجرای Helm با مقادیر موجود درvalues.yaml
ترکیب میشوند تا منابع کوبرنتیز را ایجاد کنند.charts/
: دایرکتوری اختیاری که برای ذخیرهسازی چارتهای غیرمستقل استفاده میشود. منظور چارتهایی هستند که برای اجرا شدن به چارتهای مادر نیاز دارند.crds/
: دایرکتوری برای ذخیره Custom Resource Definitions (CRDs) که توسط چارت مورد استفاده قرار میگیرند.LICENSE
: فایلی اختیاری که مجوز استفاده از چارت را توصیف میکند.README.md
: فایلی اختیاری که توضیحات و راهنماهایی در مورد چارت را ارائه میدهد.
نحوه عملکرد
- تعریف تمپلیتها: توسعهدهنده، چارتْ تمپلیتهای YAML را در پوشه
templates/
تعریف میکند. این تمپلیتها میتوانند شامل هر نوع منبع کوبرنتیز باشند، از جمله Deploymentها، Serviceها، و دیگر منابع. - تنظیم مقادیر: توسعهدهنده میتواند مقادیر پیشفرض را در
values.yaml
تنظیم کند و کاربران میتوانند این مقادیر را در هنگام نصب یا ارتقاء چارت با مقادیر دلخواه خود جایگزین نمایند. - نصب چارت: هنگامی که یک چارت نصب میشود، Helm تمپلیتهای موجود در
templates/
را با مقادیری ازvalues.yaml
ترکیب میکند و منابع کوبرنتیز را بر اساس آنها ایجاد میکند.
مراحل نصب Helm
- دانلود Helm: برای نصب Helm، ابتدا باید آخرین نسخهی Helm را از مخزن رسمی آن به آدرس Helm Releases دانلود کنید.
- استخراج فایلها: پس از دانلود، فایل دانلود شده را استخراج کنید. این فایل معمولاً یک فایل فشرده است که شامل باینری
helm
میباشد. - انتقال به مسیر مناسب: باینری
helm
را به یک مسیر در PATH سیستمعامل خود انتقال دهید تا به راحتی قابل دسترس باشد. در سیستمهای مبتنی بر UNIX میتوانید از دستور زیر استفاده کنید:
mv helm /usr/local/bin/helm
- تایید نصب: با اجرای دستور زیر میتوانید از نصب صحیح Helm اطمینان حاصل کنید:
helm version
اگر از توزیع دبیان و اوبونتو استفاده میکنید برای نصب Helm میتوانید از روش زیر نیز استفاده کنید:
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" |
sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
استفاده از Helm
پس از نصب، شما میتوانید از Helm برای نصب، ارتقا و مدیریت برنامهها در محیط کوبرنتیز استفاده کنید.
- اضافه کردن مخزن چارت: برای اضافه کردن یک مخزن جدید کافیست از دستور
repo add
و نام مخزن استفاده کنید. در مثال زیر نام مخزنstable
است.
helm repo add stable https://charts.helm.sh/stable
- بهروزرسانی لیست Charts: برای بهروزرسانی فهرست چارتها از مخزن اضافه شده، این دستور را اجرا کنید:
helm repo update
- جستجو برای Chart: برای یافتن Chart مورد نظر خود میتوانید از دستور زیر استفاده کنید:
helm search repo nginx
- نصب Chart: پس از یافتن Chart مورد نظر، میتوانید آن را با دستور زیر نصب کنید:
helm install my-nginx stable/nginx
- لیست نصبها: برای دیدن لیست تمامی نصبهای فعال، دستور زیر را وارد کنید:
helm list
- بهروزرسانی و حذف: برای بهروزرسانی یا حذف نصبها میتوانید از دستورات
helm upgrade
وhelm uninstall
استفاده کنید.
با این دستورالعملها، شما میتوانید Helm را به راحتی نصب و از آن برای مدیریت برنامههای خود در محیط کوبرنتیز استفاده کنید.
مزایا استفاده از Helm
- سادهسازی نصب و مدیریت: Helm به کاربران این امکان را میدهد با یک دستور ساده، بستههای نرمافزاری را نصب و پیکربندی کنند. این کار تجربه کاربری را سادهتر و کارآمدتر میکند و از خطاهای انسانی که ممکن است در حین تنظیم دستی رخ دهد، میکاهد.
- مدیریت وابستگیها: چارتهای Helm میتوانند وابستگیهای خود را تعریف کنند. این امر به Helm اجازه میدهد تا به طور خودکار تمام وابستگیهای لازم برای یک برنامه را نصب کند.
- قابلیت برگرداندن به حالت قبل: Helm امکان راهاندازی نسخههای قدیمیتر یا برگرداندن تغییرات به حالت قبلی را به صورت خودکار فراهم میکند. این قابلیت بسیار مفید است، زیرا به مدیران اجازه میدهد تا تغییرات را بدون ترس از خرابکاریهای بزرگ اعمال کنند.
- سفارشیسازی آسان: چارتها قابل تنظیم هستند و میتوانند به راحتی برای ملاحظات خاص هر محیط یا نیاز کاربر سفارشیسازی شوند. بنابراین این امکان فراهم میشود تا بدون تغییر در بستههای اصلی نرمافزار، تنظیمات خاصی را اعمال کنید.
- جامعهی کاربری فعال و بزرگ: جامعهی کاربری Helm بزرگ و فعال است، و در کنار آن، منابع زیادی مانند داکیومنتها، راهنماها، و پشتیبانی برای یادگیری آن نیز موجود است. این امر به رفع مشکلات و یادگیری استفاده بهینه از این ابزار کمک میکند.
- مقیاسپذیری: Helm به خوبی با معماریهای پیچیده و مقیاسپذیر Kubernetes سازگار است، و این امکان را میدهد که برنامهها و سرویسها به صورت مقیاسپذیر مدیریت شوند.
استفاده از Helm به ویژه در محیطهای تولیدی که نیاز به مدیریت منسجم و مؤثر منابع دارند، میتواند بسیار مفید باشد.
در پایان
برای بسیاری از کاربران که در سطحی پیچیده از کوبرنتیز استفاده میکنند، Helm یک ابزار کاربردی و مفید بهحساب میآید. به همین دلیل اگر بنابر نیازهای خودتان و ویژگیهایی که این ابزار کاربردی دارد، به Helm نیاز داشتید میتوانید از توانمندیهای آن استفاده کنید.
در این مطلب ما به صورت مقدماتی و بسیار ابتدایی این موضوعات را بررسی کردیم. اما اگر به یادگیری کاملتر نیاز دارید پیشنهاد میکنم که به مستندات رسمی Helm مراجعه نمایید.