هنگام ساخت اپ، میتوانید برخی تنظیمات پیشرفتهتر را نیز برای اپ خود شخصیسازی کنید. بخش CustomConfig، امکان اضافه کردن این تنظیمات را فراهم میکند.
اضافه کردن تنظیمات شخصی هرکدام از این تنظیمات، یک فرمت از قبل مشخصشده دارند که در مستندات کوبرنتیز آورده شده است. در ادامه، توضیح هرکدام از این تنظیمات را در کنار فرمت کلی کد مربوطه، آوردهایم.
بعد از آشنایی با تنظیمات مورد نظر، این فرمت را ویرایش کرده و مقادیر مورد نظر خود را در آن قرار دهید.
بعد از ورود به صفحه تنظیمات اپ، روی تب Custom Config کلیک کنید. حالا میتوانید تنظیمات خود را در ادیتور صفحه قرار دهید.
میتوانید هر تعدادی از این تنظیمات را در ادیتور، وارد کنید. بعد از وارد کردن کد، گزینه «ذخیره تغییرات» را بزنید تا تغییرات روی اپ اعمال شود.
تنظیمات قابل ویرایش در دارکوب
Strategy
اگر بخواهید ورژن جدیدی از اپ خود را بالا بیاورید، کوبرنتیز باید اپ ورژن قدیمی را پاک کرده و آن را با اپ جدید جایگزین کند. بخصوص اگر اپ شما Replica داشته باشد، انتخاب استراتژی مناسب نقش بسزایی در مدیریت داونتایم و خطاهای احتمالی پیدا میکند. کوبرنتیز دو استراتژی برای این فرآیند در نظر گرفته است.
RollingUpdate
این حالت، استراتژی پیشفرض کوبرنتیز و دارکوب است. اول ورژن جدید اپ در کنار ورژن قدیمی بالا میآید. بعد از اینکه مشخص شد پاد جدید سالم است، پاد قدیمی حذف میشود. اگر چند پا د وجود داشته باشد، این فرآیند به صورت تدریجی برای همه پادها اتفاق میافتد. به این ترتیب اپلیکیشن شما بدون هیچ داونتایمی اپگرید میشود.
Recreate
در این استراتژی، اول همه پادهای ورژنهای قدیمی به طور کامل پاک میشوند. سپس همه پادهای ورژن جدید، همگی به صورت همزمان بالا میآیند. به دلیل وقفهای که بین پاک شدن و ساخت مجدد اپها وجود دارد، این استراتژی داونتایم خواهد داشت. اما برخلاف RollingUpdate، همه تغییرات را یکجا به کاربر عرضه میکند و بنابراین در اپدیتهای بزرگ، احتمال بروز خطا برای کاربر را پایین میآورد.
نحوه تنظیم Strategy
فرمت استراتژی rollingUpdate، دو فیلد قابل تنظیم دارد. هردو این مقادیر میتوانند به شکل عددی (۱) یا درصدی (10%) تنظیم شوند.
- MaxUnavailable: مشخص میکند که در آن واحد، چند تا از کل پادهای در حال جایگزینی اجازه دارند از دسترس خارج شوند.
- MaxSurge: مشخص میکند که در هر لحظه، مجموع تعداد پادهای ورژن قدیمی و جدید چقدر میتواند از تعداد اپهای نهایی، بیشتر باشد. به عنوان مثال اگر ۳ پاد داریم و MaxSurge را 33% ست کنیم، تعداد کل پادهای ورژن قدیمی و جدید حداکثر میتواند ۴ تا باشد.
به بخش CustomConfig بروید و مقدارهای مورد نظر خود را طبق فرمت زیر وارد کنید:
# rollingUpdate
strategy:
rollingUpdate:
maxSurge: 3
maxUnavailable: 1
type: RollingUpdate
# Recreate
strategy:
type: Recreate
Configmap
ممکن است اپلیکیشن شما در فرآیند اجرا، به یک فایل تنظیمات یا مقادیر read-only خاصی نیاز داشته باشد که نیاز است در فایل یا فولدر خاصی ذخیره شوند؛ مثلا آدرس و پورت دیتابیس، یا فایل کانفیگ nginx، یا کانفیگ لاراول. از آنجایی که این فای لها مختصر هستند و در داخل اپلیکیشن هم بازنویسی خاصی روی آنها صورت نمیگیرد، میتوان به جای دیسک از کانفیگمپ برای اضافه کردن انها به اپ استفاده کرد. کانفیگمپ یک فایل یا فولدر را در آدرس مورد نظر شما، روی پاد اپ اضافه میکند و با هر بار ریستارت اپ، مقادیر این فایلها بدون تغییر باقی میمانند.
اضافه کردن یک پوشه به عنوان کانفیگمپ
کانفیگمپ زیر، محتوای فعلی پوشه conf.d را به صورت کامل پاک میکند و فایل nginx.conf را در آن قرار میدهد. اگر این پوشه وجود نداشت، آن را ایجاد میکند:
configmap:
configmapItems:
nginx-config:
path: /etc/nginx/conf.d
value:
nginx.conf: |-
server {
listen 80;
root /usr/share/nginx/html;
}
به این ترتیب، محتوای فعلی پوشه conf.d پاک شده و با محتوای جدید، یعنی یک فایل nginx.conf جایگزین میشود. در صورت تمایل میتوانید فایلهای دیگری را نیز در قسمت value بعد از nginx.conf اضافه کنید تا داخل همین پوشه ایجاد شوند.
اضافه کردن یک فایل به عنوان کانفیگمپ
در صورت لزوم، میتوانید به جای کل پوشه، تنها یک فایل از آن را بازنویسی کنید. برای این کار متغیر subPath را به کانفیگمپ اضافه کنید:
configmap:
configmapItems:
nginx-config:
path: /etc/nginx/conf.d/nginx.conf
subPath: nginx.conf
value:
nginx.conf: |-
server {
listen 80;
root /usr/share/nginx/html;
}
به این ترتیب، فایل nginx.conf در داخل پاد از آدرس /etc/nginx/conf.d/nginx.conf در دسترس قرار میگیرد. دیگر فایلهای احتمالی موجود در این پوشه نیز دستنخورده باقی میمانند.
اضافه کردن کانفیگمپهای متعدد
در صورتی که نیاز دارید چند فایل/فولدر با آدرسهای مختلف را ماونت کنید، میتوانید چندین کانفیگمپ را به شکل زیر به اپ خود اضافه نمایید:
configmap:
configmapItems:
config1:
path: /etc/nginx/conf.d/config1.conf
subPath: config1.conf
value:
config1.conf: |-
server {
listen 80;
root /usr/share/nginx/html;
}
config2:
path: /configs/config2
value:
config2.conf: |-
server {
listen 80;
root /usr/share/nginx/html;
}