داکر
در این دستهبندی، اگر چنانچه برای کد خود داکرفایل (Dockerfile) نوشتهاید یا ایمیج داکر خود را در یک ریپازیتوری خصوصی یا عمومی push کردهاید، برای اجرای برنامه خود در این کتگوری میبایست به ترتیب زیر عمل کنید:
شما در ابتدا با 4 بخش «تنظیمات اولیه»، «پارامترهای داکر (اختیاری)»، «متغیر محیطی (اختیاری)» و «متغیرهای Build (اختیاری)» مواجه خواهید شد که هر بخش با توجه به نوع نیازمندی شما باید مورد استفاده قرار گیرد::
A: تنظیمات اولیه
این بخش اجباری است و باید مقادیر آن کنترل شود.
پارامترهای نام پروژه و نام اپلیکیشن قبلا در قسمت تنظیمات عمومی شرح داده شدهاند.
سوییچ node port: این سوییچ تعیین میکند که آیا سرویس اپ درحال ساخت با توجه به نوع برنامه و نیازمندی شما باید NodePort باشد یا خیر.
سوییچ دسترسی عمومی: این سوییچ تعیین میکند که آیا دسترسی به اپ شما بر روی اینترنت ممکن باشد یا خیر.
- اگر این سوییچ خاموش باشد، اپ شما محدود به دسترسی توسط اپهایی خواهد بود که همگی در یک پروژه مشترک ساخته شده باشند.
- اگر سوییچ node port و دسترسی عمومی همزمان روشن باشند، دسترسی عمومی به اپ شما روی پورت رنج 30000 خواهد بود. در غیر این صورت اگر فقط سوییچ دسترسی عمومی به اپ شما روی پورتهای دیگر نیز ممکن خواهد بود.
انواع سرویسها اعم از ClusterIP و NodePort در قسمت «انتخاب یا ساختن سرویس جدید» توضیح داده شده است.
B: پارامترهای داکر
این بخش اختیاری است و در صورتی مورد استفاده قرار میگیرد که نیاز به تنظیم probeهای مختلف و application context directory وجود داشته باشد.
هر شکلی از probeها اعم از liveness، readiness و startup، از لحاظ نحوه انجام health check، خود به چند نوع تقسیم میشوند، از جمله httpGet، exec.command و tcpSocket. ما در PaaS دو نوع tcpSocket و exec.command را پوشش خواهیم داد.
اشکال probeها:
Liveness probe یک نوع health check است که بعد از تاخیر ذکرشده اتفاق میافتد، که تنظیم این مقدار با توجه به نوع اپ شما و بسته به اینکه برنامه نوشتهشده شما چه مقدار زمان برای به طور کامل بالا آمدن اولیه نیاز دارد، مهم است؛ چرا که اگر درست تنظیم نشود، از نظر زیرساخت unhealthy تلقی شده و مدام ریاستارت خواهد شد که در این صورت قادر به استفاده از برنامه خود نخواهید بود.
در پنجره دوم یعنی «تنظیمات برنامه»، تعدادی پارامتر اجباری وجود دارد که نیاز است حتما مقدار داشته باشند، که البته به صورت پیشفرض مقادیری دارند که میتوانید تغییرشان دهید:
livenessProbe initial delay: منظور از این متغیر این است که liveness probe بعد از چند ثانیه تاخیر شروع شود. مقدار پیشفرض آن 30 ثانیه در نظر گرفته شده است.
livenessProbe timeout: این متغیر به این اشاره دارد که probe چند ثانیه منتظر جواب از سمت سرویس بماند که مقدار پیشفرض آن 1 ثانیه ست شده است.
Readiness probe نوعی از health check است که نشان دهنده آماده بودن سرویس برای زیر بار رفتن است و اگر پاس نشود اپ شما قابل استفاده نخواهد بود؛ به این معنی که برنامه شما به ساب دامین تنظیم شده route نخواهد شد.readinessProbe initial delay: این متغیر بیان گر همان تاخیر اولیه در ارسال probe است که مقدار پیشفرض آن 5 ثانیه قرار داده شده است.
readinessProbe timeout: همانند livenessProbe timeout عمل میکند، به ازای مقدار ثانیه ای برای آن ست میشود منتظر ریسپانس از طرف سرویس میماند و بعد probe را در صورت دریافت نکردن جواب مناسب fail شده در نظر میگیرد. پیشفرض آن 1 ثانیه تنظیم شده است.
Startup probe نوعی health check بوده که تعیین میکند که آیا برنامه شما با موفقیت استارت شده است یا خیر. این probe دو probe دیگر یعنی readiness و liveness را تا زمانی که کارش انجام نشده باشد متوقف میکند.startupProbe initial delay: همانند متغیرهای مشابه خود که در بالا ذکر شد عمل میکند. مقدار پیشفرض آن نیز 30 ثانیه در نظر گرفته شده است.
startup Probe timeout: همانند همتای خود در دو probe دیگر عمل میکند و مقدار پیشفرض آن 5 ثانیه ست شده است.
نکته ای که در بخش probeها وجود دارد این است که در اینجا با استفاده از یک سوییچ تعبیه شده در هر شکلی از probe که در بالا شرح داده شد، از دو نوع probe برای health check میتوانید استفاده کنید:
Port Checking: نوع معمول و پیشفرض probeها است و به این صورت است که در حالتهای مختلف از مراحل deploy شدن اپ، به پورتهای مشخص شده توسط کاربر، در بازه زمانی و timeout که وارد خواهید نمود اتفاق میافتد.
Command Checking: این نوع از probe برای اجرای یک دستور به عنوان health check در بازه زمانی معین و با timeout مشخص به کار میرود.
C: متغیر محیطی:
این بخش نیز اختیاری است. در قسمت بالای پنجره یک سوییچ وجود دارد که میتوانید بین دو گزینه «وارد کردن دستی متغیرها» و «آپلود فایل env.» یک گزینه را انتخاب کنید.
وارد کردن دستی متغیرها:
اگر انتخاب شما این مورد باشد، بین سه مورد ENV ، Config Map و Secret بسته به نیاز خود میتوانید انتخاب کنید.
ENV: این مورد برای ایجاد یک یا چند متغیر محیطی در محیطی که اپ شما deploy خواهد شد، استفاده میشود، به این ترتیب که در نواری که به همین منظور در وسط پنجره تعبیه شده میتوانید key و value خود را وارد کنید، و هر بار بر روی دکمه «+ افزودن متغیر» کلیک کنید تا متغیر در لیست پایین صفحه نمایش داده شود.
Config Map و Secret: این مورد زمانی استفاده خواهد شد که قبلا در منوی PaaS و در بخش Config/Secret اقدام به ساخت Secret یا ConfigMap کرده باشید. در این صورت نام آن Secret/Config در drop down نوار «نام کانفیگ» یا «Secret key» نمایش داده خواهد شد. اگر این Secret/Config قبلا ساخته نشده باشد، در همین drop down میتوانید اقدام به ساخت Secret یا ConfigMap کنید و بعد در همین قسمت آن را انتخاب کنید.
دقت کنید که بعد از انتخاب Secret یا ConfigMap در drop down، باید حتما روی دکمه «+ افزودن متغیر» که در پایین نوار و وسط صفحه مشاهده میشود کلیک کنید تا در جدول پایین صفحه لیست شود. تنها در صورتی متغیر اعمال خواهد شد که بتوانید آن را در آن جدول مشاهده کنید.
آپلود فایل env.:
اگر چنانچه فایل env. را قبلا برای برنامه خود نوشتهاید، میتوانید این گزینه را انتخاب کنید و فایل env. را بارگذاری کنید تا نیازی به وارد کردن دستی تمامی متغیرها نباشد.
D: متغیرهای Build
این بخش زمانی استفاده میشود که شما برای پروژه خود یک Dockerfile در روت آن قرار دادهاید و نیاز است هنگام بیلد شدن داکر ایمیج، متغیرهایی تعریف شوند. در واقع متغیرهایی که در اینجا تعریف میشوند همان build args هستند.
بعد از وارد کردن هر key و value در قسمتهای مربوط به خود، بایستی حتما یک بار بر روی دکمه «+ افزودن متغیر» کلیک کنید تا آن متغیر در جدول پایین صفحه لیست شود. تنها در صورتی متغیر اعمال خواهد شد که بتوانید آن را در آن جدول مشاهده کنید.
بعد از مراحل بالا، با زدن دکمه «تنظیمات برنامه»، وارد تنظیمات مربوط به اتصال به منبع کد و … میشوید که در ادامه، هر قسمت توضیح داده خواهد شد:
بخشهای Git، Private Git و آپلود فایل عینا مشابه توضیحات همین بخشها در قسمت تنظیمات عمومی و سکشن زبانهای برنامهنویسی است، لذا میتوانید برای اطلاع بیشتر به این سکشن مراجعه فرمایید.
Registry: این بخش زمانی استفاده میشود که ایمیج داکر شما قبلا بیلد شده و در یک ریپازیتوری پوش شده است. در ابتدای پنجره پیش رو یک سوییچ وجود دارد که بین دو حالت Public Registry و Private Registry میتوانید انتخاب کنید.
اگر رجیستری مورد نظر یک رجیستری شخصی باشد ولی دسترسی عمومی به آن وجود داشته باشد، یا یک رجیستری شناخته شده مانند docker به آدرسهای index.docker.io و registry-1.docker.io، سوییچ باید روی Public Registry باشد. در غیر این صورت اگر ریپازیتوری شما دسترسی عمومی نداشته باشد و دارای Authentication باشد، باید سوییچ روی Private Registry باشد:
Public Registry: در ابتدا در drop down به نام Registry، میتوانید بین گزینههای عمومی پیشفرض که در بالا شرح داده شد، انتخاب کنید یا رجیستری عمومی مورد نظر را با زدن دکمه «New Public Registry +» و وارد کردن آدرس آن در پنجره جدید، به آن اضافه کنید.
Repository Name: در این قسمت، باید نام حساب کاربری روی آن رجیستری یا sub path یا اصطلاحا folder name در آن رجیستری را وارد کنید. منظور از sub path در مثال زیر شرح داده شده:
https://registry.example.com/<folderName\subPath\userName>/imageName:imageTag
Image Name: در این قسمت همانطور که در مثال بالا میبینید، باید نام ایمیج مورد نظر که در ریپازیتوری موجود است را وارد کنید.
Image Tag: در این قسمت باید همانند مثال بالا، تگ ایمیج مورد نظر که در ریپازیتوری موجود است را وارد نمایید. مقدار پیشفرض latest برای آن در نظر گرفته شده که قابل تغییر است.
Private Registry: در این بخش، باید در ابتدا در drop down نوار Registry، رجیستری خصوصی جدید اضافه کنید یا از بین آنهایی که قبلا اضافه کردهاید انتخاب کنید. نحوه اضافه کردن رجیستری خصوصی با زدن دکمه «New Registry» در drop down مربوطه به شرح تصویر زیر است:
حال بعد از کلیک بر روی دکمه «ذخیره»، نامی که برای رجیستری خصوصی انتخاب کرده بودید۷ در drop dwon همان نوار نمایش داده خواهد شد و میتوانید آن را انتخاب کنید. اکنون بقیه تنظیماتی که خاکستری و غیر قابل تغییر بودند، قابل تغییر هستند:
Repository Name: در این قسمت، باید نام حساب کاربری روی آن رجیستری یا sub path یا اصطلاحا folder name در آن رجیستری را وارد کنید. منظور از sub path در مثال زیر شرح داده شده:
https://registry.example.com/<folderName\subPath\userName>/imageName:imageTag
Image Name: در این قسمت همانطور که در مثال بالا میبینید، باید نام ایمیج مورد نظر که در ریپازیتوری موجود است را وارد کنید.
Image Tag: در این قسمت باید همانند مثال بالا، تگ ایمیج مورد نظر که در ریپازیتوری موجود است را وارد کنید. مقدار پیشفرض latest برای آن در نظر گرفته شده که قابل تغییر است.
در ادامه با زدن دکمه «تنظیمات منابع» به صفحه انتخاب پلنهای منابع یا وارد کردن دستی آنها وارد شوید که به تفصیل در قسمت تنظیمات عمومی شرح داده شده است.
در انتها با زدن دکمه ساخت اپلیکیشن، اپ شما بعد از چند دقیقه ساخته شده و قابل استفاده خواهد بود.