هلم و چارت هلم در کوبرنتیز چیست؟
هلم (Helm) مدیر بستهٔ کوبرنتیز است. هلم منابع مرتبط یک اپلیکیشن را در بستهای به نام چارت هلم (Helm Chart) قرار میدهد تا نصب، پیکربندی، ارتقا و بازگشت به نسخهٔ قبلی آنها بهصورت یک واحد انجام شود.
در کوبیت، پک مشخص میکند کدام چارت با چه نسخه و مقادیری نصب شود. پک اپراتور نیز این تعریف را به منابع کوبرنتیز تبدیل میکند و وضعیت نصب را هماهنگ نگه میدارد.
هلم چیست؟
نصب یک اپلیکیشن در کوبرنتیز معمولاً به چند منبع مانند Deployment، Service، ConfigMap و Ingress نیاز دارد. هلم این مانیفستهای مرتبط را بستهبندی میکند تا بتوان یک اپلیکیشن را با تنظیمات متفاوت در چند محیط نصب و مدیریت کرد.
سه مفهوم اصلی هلم عبارتاند از:
| مفهوم | تعریف |
|---|---|
چارت (Chart) | بستهٔ نسخهپذیری که قالبها، مقادیر پیشفرض و فرادادهٔ نصب را در خود دارد |
مخزن (Repository) | محلی برای نگهداری و انتشار چارتها |
انتشار (Release) | یک نمونهٔ نصبشده از چارت در کلاستر کوبرنتیز |
یک چارت را میتوان چند بار و با نام و تنظیمات متفاوت نصب کرد. هر نصب یک انتشار مستقل میسازد.
چارت هلم چیست؟
چارت هلم یک بستهٔ قابل نصب برای اپلیکیشن، سرویس یا ابزار کوبرنتیزی است. چارت بهجای نگهداری نسخههای تکراری از مانیفستها، بخشهای متغیر را بهصورت مقدار دریافت میکند و از روی قالبها خروجی YAML مناسب کوبرنتیز را میسازد.
ساختار متداول یک چارت شامل Chart.yaml برای فراداده، values.yaml برای مقادیر پیشفرض، پوشهٔ templates/ برای قالبها و پوشهٔ اختیاری charts/ برای وابستگیها است.
نسخهٔ چارت با نسخهٔ خود اپلیکیشن یکسان نیست. نسخهٔ چارت تغییرات بسته و قالبها را نشان میدهد؛ نسخهٔ اپلیکیشن معمولاً جداگانه در appVersion یا مقادیر تصویر کانتینر ثبت میشود.
مقادیر و قالبها چگونه کار میکنند؟
مقادیر (Values) ورودیهای قابل تغییر چارت هستند؛ برای نمونه نام تصویر کانتینر، تعداد replica، منابع پردازشی یا دامنه. هلم این مقادیر را با قالبهای پوشهٔ templates/ ترکیب میکند و مانیفست نهایی کوبرنتیز را میسازد.
مقادیر پیشفرض از values.yaml میآیند و هنگام نصب یا ارتقا قابل بازنویسی هستند. در پک، spec.values و spec.vars این پیکربندی را برای نصب مورد نظر فراهم میکنند.
پیش از اعمال تغییر، خروجی رندرشده را بررسی کنید. kubit helm-template مانیفست نهایی را نشان میدهد و kubit helm-diff آن را با انتشار موجود مقایسه میکند.
انتشار هلم چیست؟
انتشار هلم (Helm Release) نتیجهٔ نصب یک چارت با مجموعهای مشخص از مقادیر در یک کلاستر است. هلم تاریخچهٔ بازبینیهای انتشار را نگه میدارد تا ارتقا و بازگشت به بازبینی قبلی ممکن باشد.
در کوبیت، هر منبع Pack به یک انتشار هلم در همان فضای نام مربوط است. نام پک، نام انتشار را تعیین میکند و تغییر تعریف پک میتواند انتشار موجود را ارتقا دهد.
مخزن و نسخهٔ چارت
چارتها از یک مخزن هلم یا رجیستری سازگار با OCI دریافت میشوند. در پک، منبع مخزن با ClusterPackRepository مشخص میشود و نام و محدودیت نسخهٔ چارت در spec.chart قرار میگیرد. برای تفاوت دامنهٔ مخزنها، انتخاب نوع مخزن را ببینید.
برای محیط عملیاتی، نسخه یا بازهٔ نسخه را آگاهانه انتخاب کنید و ارتقای خودکار را فقط همراه با بررسی تغییرات فعال کنید.
رابطهٔ هلم با پک
هلم قالب و منطق بستهبندی اپلیکیشن را فراهم میکند؛ پک وضعیت مطلوب نصب را بهصورت یک منبع کوبرنتیز نگه میدارد؛ و پک اپراتور آن وضعیت را پیوسته با کلاستر هماهنگ میکند.
| جزء | مسئولیت |
|---|---|
| چارت هلم | تعریف قالبها، مقادیر پیشفرض و وابستگیهای اپلیکیشن |
| پک | انتخاب مخزن، چارت، نسخه و مقادیر نصب |
| پک اپراتور | رندر، اعتبارسنجی، نصب یا ارتقا و ثبت وضعیت |
| کوبچی | رابط پنلی برای نصب، پیکربندی و مشاهدهٔ نتیجه |
kubit-cli | بررسی خروجی هلم و انجام عملیات تخصصی پک |
بیشتر کاربران این چرخه را از بخش کوبچی > پکها میبینند. برای نصب از پنل، نصب پک در کوبچی را بخوانید. برای ساخت یا مدیریت مستقیم منبع، مرجع پک را ببینید.
نکات امنیتی پیش از نصب چارت
قالبهای یک چارت میتوانند منابع متنوعی را در محدودهٔ مجوز نصب ایجاد یا تغییر دهند. پیش از استفاده از چارت ناشناس یا نسخهٔ جدید:
- منبع انتشار و نگهدارندهٔ چارت را بررسی کنید.
- تغییرات نسخه و مقادیر پیشفرض را بخوانید.
- خروجی رندرشده و تفاوت آن با انتشار فعلی را بازبینی کنید.
- دادهٔ حساس را بهصورت متن ساده در
valuesیا مخزن گیت قرار ندهید. - دسترسی سرویساکانت و منابع سطح کلاستر را به کمترین مقدار لازم محدود کنید.
مسیر بعدی
- ساخت و مدیریت منبع پک
- افزودن قابلیتهای Pack به چارت
- ساخت migration برای نسخههای چارت
- آشنایی با پک اپراتور و چرخهٔ همگامسازی
- بررسی خروجی هلم با kubit-cli
- مشاهدهٔ چارتهای آمادهٔ کوبیت