مدیریت متغیرهای محیطی
کوبچی برای استفاده دوباره از مقدارها دو ابزار دارد: متغیرهای کوبیتی و گروههای متغیرها. کاربرد این دو متفاوت است:
| ابزار | کاربرد | روش مصرف |
|---|---|---|
| متغیر کوبیتی | نگهداری یک مقدار قابل استفاده در قالب پک، مانند دامنه، نام ایمیج یا سطح گزارشگیری | ارجاع به کلید با عبارت {{ vars.KEY }} در پیکربندی پک |
| گروه متغیر | نگهداری چند متغیر محیطی با نامهای نهایی اپلیکیشن، مانند DB_HOST و DB_PORT | انتخاب یا ارجاع به Secret گروه در بخشی از تنظیمات چارت که Secret یا متغیرهای محیطی را میپذیرد |
ساخت متغیر یا گروه بهتنهایی چیزی را به کانتینر اضافه نمیکند. متغیر کوبیتی باید در یکی از مقدارهای پک ارجاع داده شود. برای استفاده از گروه نیز چارت باید ورودی Secret یا envFrom را تعریف کرده باشد و Secret گروه را در پیکربندی پک به همان ورودی بدهید.
مقدار متغیرهای کوبیتی و اعضای گروه در پنل قابل مشاهده است. برای رمز عبور، توکن و سایر دادههای حساس از Vault استفاده کنید.
پیشنیازها
پروژه باید به یک کلاستر فعال متصل باشد. برای ساخت یا تغییر متغیرها نیز به مجوز ویرایش کوبچی در پروژه نیاز دارید. اگر صفحه را میبینید اما دکمه افزودن یا عملیات ویرایش و حذف در دسترس نیست، از مدیر سازمان بخواهید نقش شما را بررسی کند.
پیش از ساخت متغیر، مشخص کنید کدام ورودی چارت یا کدام بخش پیکربندی پک از آن استفاده خواهد کرد. نام و نوع مقدار باید با ورودی تعریفشده در چارت سازگار باشد.
متغیرهای کوبیتی
متغیر کوبیتی یک جفت کلید و مقدار در سطح پروژه است. هنگام پردازش پیکربندی پک، کوبچی این متغیرها را همراه با متغیرهای خود پک در دسترس قرار میدهد. به این ترتیب، چند پک میتوانند یک مقدار مشترک داشته باشند.
برای نمونه، میتوانید مقدار دامنه را یکبار با کلید APP_DOMAIN ثبت و در تنظیمات چند پک از آن استفاده کنید:
spec:
values:
ingress:
host: '{{ vars.APP_DOMAIN }}'
APP_DOMAIN نام متغیر کوبیتی است و لازم نیست با نام متغیر محیطی داخل اپلیکیشن یکسان باشد. محل مصرف این مقدار را پیکربندی هر پک تعیین میکند.
ساخت متغیر کوبیتی
- در سایدبار کوبچی، متغیرهای محیطی و سپس متغیرهای کوبیتی را انتخاب کنید.
- روی دکمه افزودن کلیک کنید.
- در کلید، نامی با حروف انگلیسی وارد کنید. کلید باید با حرف آغاز شود و میتواند شامل حرف، عدد و زیرخط باشد؛ برای نمونه
LOG_LEVEL. - در مقدار، مقدار مورد نیاز پک را وارد کنید.
- روی ذخیره کلیک کنید.
کلید در هر پروژه یکتا است. اگر همان کلید از قبل وجود دارد، بهجای ساخت دوباره، ردیف موجود را ویرایش کنید.
استفاده در پک
در پیکربندی پک، فیلدی را پیدا کنید که باید مقدار متغیر را دریافت کند. اگر ویرایشگر پیکربندی امکان واردکردن عبارت قالب را میدهد، مقدار را بهشکل {{ vars.KEY }} وارد کنید؛ KEY را با کلیدی که ساختهاید جایگزین کنید.
تعریف کلید در صفحه متغیرهای کوبیتی، ورودی تازهای به چارت اضافه نمیکند. عبارت باید در یکی از مقدارهای پک استفاده شود. برای جزئیات ساختار پک و قالبها، ساختار Pack را ببینید.
اگر یک کلید در چند سطح تعریف شده باشد، مقدار پروژه بر مقدار سازمان و مقدار سازمان بر مقدار داخل پک اولویت دارد. برای جلوگیری از ابهام، کلید مشترک را فقط در سطحی تعریف کنید که باید آن را کنترل کند.
ویرایش یا حذف متغیر کوبیتی
از منوی سهنقطه ردیف، ویرایش یا حذف را انتخاب کنید. هنگام ویرایش، کلید ثابت است و فقط مقدار تغییر میکند.
کوبچی پیش از پذیرفتن تغییر، پکهای وابسته را با مقدار تازه اعتبارسنجی میکند. اگر مقدار جدید با ساختار مورد انتظار چارت سازگار نباشد یا حذف کلید باعث تعریفنشدهماندن یک عبارت شود، ذخیره انجام نمیشود.
تغییر مقدار، منابع در حال اجرای پک را بهصورت خودکار بازنشر نمیکند. پس از بررسی اثر تغییر، پکهای مصرفکننده را از صفحه خودشان دوباره استقرار دهید تا مقدار تازه در خروجی اعمال شود.
گروههای متغیرها
گروه متغیر مجموعهای نامدار از چند جفت کلید و مقدار است. کوبچی برای هر گروه یک Secret مدیریتشده در دسترس پروژه قرار میدهد. این Secret را میتوان به ورودی Secret یا متغیرهای محیطی تعریفشده در چارت داد.
برای نمونه، گروه app-settings میتواند شامل این مقدارهای غیرحساس باشد:
| کلید | مقدار نمونه |
|---|---|
APP_MODE | production |
LOG_LEVEL | info |
FEATURE_X_ENABLED | true |
نام کلیدهای گروه همان نامهایی است که اپلیکیشن انتظار دارد. برخلاف متغیر کوبیتی، برای تغییر نام APP_MODE به نام دیگری باید خود چارت چنین نگاشتی را پشتیبانی کند.
ساخت گروه متغیر
- در سایدبار کوبچی، متغیرهای محیطی و سپس گروههای متغیرها را انتخاب کنید.
- روی گروه متغیر جدید کلیک کنید.
- یک نام کوتاه و قابل تشخیص برای گروه وارد کنید؛ مانند
app-settings. نام از حروف کوچک انگلیسی، عدد و خط تیره ساخته میشود و نباید با خط تیره شروع یا تمام شود. - برای هر متغیر، کلید و مقدار را وارد کنید.
- در صورت نیاز با افزودن متغیر ردیفهای بیشتری بسازید.
- روی تأیید و ساخت گروه کلیک کنید.
کلیدهای یک گروه باید یکتا باشند. نام هر گروه نیز در محدوده منابع قابل استفاده پروژه باید یکتا باشد. گروهی که از این فرم میسازید خصوصی است و فقط در پروژه فعلی در دسترس قرار میگیرد؛ در نسخه فعلی پنل، هنگام ساخت گروه گزینهای برای سازمانیکردن آن وجود ندارد.
استفاده از گروه در پک
گروه پس از ساخت در فهرست Secretهای قابل استفاده پروژه قرار میگیرد، اما این Secret خودکار به کانتینر متصل نمیشود. چارت باید در قالبها و مقادیرش ورودی Secret، envFrom یا متغیرهای محیطی را تعریف کرده باشد. سپس در پیکربندی پک، Secret گروه را به همان ورودی بدهید.
نام دقیق فیلد به چارت بستگی دارد و همه چارتها چنین ورودیای ندارند. اگر چارت بهجای دریافت کل Secret، نام Secret و کلید هر مقدار را جداگانه میپذیرد، آنها را مطابق راهنمای همان چارت در پیکربندی پک وارد کنید.
دیدن و تغییر اعضای گروه
در جدول گروههای متغیرها، نام گروه را انتخاب کنید تا صفحه متغیرهای گروه باز شود. در این صفحه میتوانید اعضا را جستوجو کنید و با دکمه افزودن، متغیر تازه بسازید. برای ویرایش یا حذف یک عضو، منوی سهنقطه همان ردیف را باز کنید.
جدول گروهها تعداد متغیرها و سطح دسترسی هر گروه را نیز نشان میدهد. ممکن است یک گروه سازمانی که از قبل در سازمان وجود دارد در فهرست دیده شود. چنین گروهی در پروژه جاری قابل مصرف است، اما افزودن، ویرایش و حذف اعضای آن فقط از پروژه مالک انجام میشود.
تغییر اعضای گروه، تنظیمات یا ورکلودهای در حال اجرای پک را بهصورت خودکار بازنشر نمیکند. پس از تغییر، پکهای مصرفکننده را بررسی و در صورت نیاز دوباره استقرار دهید.
انتخاب نوع متغیر
- اگر یک مقدار باید در قالب تنظیمات یک یا چند پک استفاده شود، متغیر کوبیتی انتخاب مناسبتری است.
- اگر اپلیکیشن چند متغیر محیطی را با نامهای مشخص از یک Secret دریافت میکند، از گروه متغیر استفاده کنید.
- اگر مقدار حساس است، آن را در Vault نگه دارید؛ حتی اگر از نظر فنی بتوان آن را در متغیر یا گروه وارد کرد.
- اگر مقدار فقط به یک پک مربوط است و قرار نیست در جای دیگری کنترل شود، تعریف آن در همان پک معمولاً سادهتر است.
مشکلات رایج
عبارت متغیر تعریفنشده است
کلید داخل {{ vars.KEY }} را با جدول متغیرهای کوبیتی مقایسه کنید. بزرگی و کوچکی حروف مهم است. همچنین بررسی کنید عبارت در فیلدی قرار گرفته باشد که پک آن را بهعنوان قالب پردازش میکند.
تغییر متغیر ذخیره نمیشود
مقدار تازه یکی از پکهای وابسته را نامعتبر میکند یا حذف کلید باعث باقیماندن ارجاع تعریفنشده شده است. پیام خطا را بررسی کنید، محلهای مصرف کلید را در پکهای پروژه بیابید و سپس مقدار سازگار ثبت کنید.
گروه در تنظیمات چارت دیده نمیشود
ابتدا مطمئن شوید گروه در همان پروژه یا بهصورت سازمانی در دسترس آن است. سپس بررسی کنید فیلد چارت واقعاً انتخاب Secret را پشتیبانی میکند. اگر گروه تازه ساخته شده است، صفحه پیکربندی را بازخوانی کنید.
مقدار تازه در اپلیکیشن اعمال نشده است
ثبت متغیر یا تغییر اعضای گروه، کانتینرهای موجود را خودکار بازنشر نمیکند. ابتدا مطمئن شوید پک به کلید یا گروه درست ارجاع میدهد، سپس پک را دوباره استقرار دهید و وضعیت ورکلودها و رویدادها را بررسی کنید.