پرش به مطلب اصلی

ساخت اپلیکیشن با ایمیج کانتینر

راهکارهای متفاوتی برای استقرار اپلیکیشن بر بستر کانتینر ابری آروان وجود دارد که می‌توانید متناسب با نیازتان یکی از آن‌ها را انتخاب کنید. اگر کار با داکر را ترجیح می‌دهید، روش «ایمیج کانتینر» به شما کمک می‌کند تا اپلیکیشن‌های خود را با استفاده از داکر ایمیج‌ها یا کانتینر ایمیج‌هایی که روی Repository‌های عمومی یا خصوصی قرار دارند، بسازید.

وارد پنل کاربری آروان و بخش «ساخت اپلیکیشن» در منوی کانتینر ابری شوید. سپس از میان شیوه‌های ساخت اپلیکیشن «ایمیج کانتینر» را انتخاب کنید.

انتخاب ایمیج

برای انتخاب ایمیج اپلیکیشن خود روی گزینه‌ی «داکر ایمیج» کلیک کنید. در این بخش می‌توانید از ایمیج‌های رسمی موجود در Docker Hub و یا ایمیج‌های عمومی یا خصوصی ریپازیتوری‌های دیگر استفاده کنید.

  • ایمیج‌های رسمی داکرهاب

    به‌راحتی می‌توانید با جست‌وجوی نام ایمیج موردنظرتان، آن را یافته و نصب کنید.

پس از انتخاب ایمیج، نام و تگ latest برای آن به‌شکل خودکار انتخاب می‌شود.

پیشنهاد می‌شود از تگ latest برای نصب اپلیکیشن استفاده نکنید و نسخه‌ی موردنظرتان را هنگام انتخاب ایمیج وارد کنید.

  • ایمیج‌های عمومی

    اگر می‌خواهید از یک Image قرار گرفته در رجیستری‌های عمومی استفاده کنید کافی است آدرس دسترسی به ایمیج را در بخش «نام» و نسخه‌ی آن را در بخش «تگ» وارد کنید.

  • ایمیج‌های خصوصی

    اگر Image مورد نظر شما در یک رجیستری خصوصی قرار دارد نیاز است تا علاوه بر آدرس دسترسی به ایمیج و تگ اپلیکیشن، نام کاربری و رمز عبور دسترسی به رجیستری را نیز وارد کنید. برای این کار کافی است تا گزینه‌ی ایمیج خصوصی را فعال کنید.

در پایان روی دکمه‌ی شروع کلیک کنید تا مراحل ساخت اپلیکیشن آغاز شود.

فرآیند ساخت اپلیکیشن

پس از انتخاب ایمیج، وارد فرآیند ساخت اپلیکیشن خواهید شد. در این مراحل می‌توانید به‌سادگی جزییات و پیکربندی‌ اپ را بر اساس نیازتان تعیین کنید.

اطلاعات اولیه

ابتدا باید دیتاسنتر و زیرساخت میزبان اپلیکیشن‌تان را انتخاب کنید. در حال حاضر دو منطقه‌ی بامداد و شهریار بر بستر Kubernetes‌ در اختیارتان قرار دارد. سپس از میان پروژه‌های موجود یکی را برای استقرار این اپلیکیشن انتخاب کنید یا یک پروژه‌ی جدید بسازید.

هم‌چنین در این صفحه، باید برای اپلیکیشن‌تان یک نام غیرتکراری و برای کانتینر یک پورت انتخاب کنید. این پورت، برای اتصال اپلیکیشن به دامنه استفاده می‌شود و در واقع همان پورت Expose شده‌ی کانتینر است.

برای نمونه، دستور زیر را در نظر بگیرید:

docker run -p 80:5000 my-web-app

در این مثال، پورت ۸۰ میزبان به پورت ۵۰۰۰ کانتینر مپ شده است؛ به این معنا که درخواست‌های ورودی به پورت ۸۰ اپلیکیشن به پورت ۵۰۰۰ کانتینر ارسال می‌شود. برای پیاده‌سازی این تنظیمات نمونه در پنل کاربری آروان، باید در بخش پورت کانتینر مقدار 5000 را وارد کنید.

در بخش‌های بعد می‌توانید جزییاتی بیش‌تری مانند شبکه، دیسک و متغیرهای محیطی را مشخص کنید. با این حال در هر بخش برای ادامه با تنظیمات پیش‌فرض می‌توانید روی دکمه‌ی «ادامه» کلیک کنید و به گام نهایی بروید.

شبکه

در این قسمت می‌توانید تنظیمات دامنه و شبکه‌ی داخلی اپلیکیشن را برای اتصال به آن تعیین کنید.

دامنه

شما می‌توانید با انتخاب حالت «بدون دامنه» هیچ دامنه‌ای را برای اپلیکیشن تنظیم نکنید. اما اگر می‌خواهید اپلیکیشن‌تان از طریق یک دامنه در دسترس باشد، در این بخش می‌توانید زیردامنه‌ی رایگان آروان یا دامنه‌ی شخصی‌تان را انتخاب کنید.

  • زیردامنه رایگان آروان‌کلاد

    به‌کمک زیردامنه‌ی رایگان کانتینر ابری آروان، می‌توانید سرویس خود را در سریع‌ترین زمان ممکن بر بستر اینترنت قرار دهید. این زیردامنه شامل نام انتخابی شما و نام پروژه به‌شکل پسوند خواهد بود.

    اپلیکیشن شما باید روی پورت 80 امکان پاسخ دادن به درخواست‌های HTTP را داشته باشد و نیازی به پاسخ‌گویی روی پورت 443 وجود ندارد.

    اگر نیاز به ارسال درخواست‌ها به پورت دیگری به‌غیر از 80 را دارید از تنظیمات گام بعدی (شبکه) استفاده کنید.

  • دامنه شخصی

    شما می‌توانید دامنه‌ی شخصی خود را به اپلیکیشن کانتینر ابری آروان متصل کنید.

    توجه داشته باشید این دامنه باید در همین حساب کاربری و در سرویس CDN ثبت شده باشد. اگر تا کنون دامنه را در CDN آروان ثبت نکرده‌اید می‌توانید از دکمه‌ی «دامنه جدید» و یا راهنمای ثبت دامنه در آروان استفاده کنید.

    هم‌چنین در همین بخش می‌توانید اپلیکیشن‌ را به یک زیردامنه از دامنه‌ی شخصی‌تان متصل کنید. اگر نیاز به استفاده از Wildcard DNS یا استفاده از * برای همه‌ی زیردامنه‌ها داشتید، می‌توانید از طریق تیکت با تیم پشتیبانی آروان در ارتباط باشید.

پورت

در این قسمت، می‌توانید تنظیمات شبکه‌ی داخلی کانتینرهای خود را مدیریت کنید. این شبکه برای اتصال کانتینرها به هم مورد استفاده قرار می‌گیرد. اگر اپلیکیشن‌های دیگری در این پروژه نیاز به دسترسی به این اپلیکیشن روی پورت خاصی مثل 3306 داشته باشند، باید در این مرحله این پورت را باز کنید. سپس سایر اپلیکیشن‌های شما می‌توانند با ترکیب نام و پورت (name:port) به این اپلیکیشن دسترسی پیدا کنند.

برای تعریف پورت جدید روی دکمه‌ی «افزودن آیتم جدید» کلیک کنید. سپس با انتخاب پروتکل TCP یا UDP پورت اپلیکیشن و پورت Expose شده را وارد کنید.

برای نمونه، دستور زیر را در نظر بگیرید:

docker run -p 3306:8080 my-web-app

در این مثال، پورت 3306 میزبان به پورت 8080 کانتینر مپ شده است؛ به این معنا که درخواست‌های ورودی به پورت 3306 اپلیکیشن به پورت 8080 کانتینر ارسال می‌شوند. برای پیاده‌سازی این تنظیمات نمونه در پنل کاربری آروان، باید به‌شکل زیر عمل کنید:

دیسک

در این بخش می‌توانید به اپلیکیشن‌تان دیسک یا Persistent Storage اضافه کنید. دیسک‌ها در کانتینر ابری آروان مستقل از اپلیکیشن نگه‌داری می‌شوند. به این معنا که حتا پس از حذف اپلیکیشن، دیسک و محتویات آن می‌تواند هم‌چنان در سطح پروژه در دسترس باشد.

توجه داشته باشید هزینه‌ی دیسک‌ها فارغ از وضعیت و اتصال به اپلیکیشن محاسبه می‌شوند.

برای ایجاد دیسک، روی دکمه‌ی «افزودن دیسک جدید» کلیک کنید.

سپس نام و ظرفیت دیسک‌تان را انتخاب و مسیر استقرار (Mount) دیسک در اپلیکیشن را مشخص کنید. این مسیر می‌تواند هر پوشه‌ی خالی در کانتینر اپلیکیشن شما باشد.

با کلیک روی گزینه‌ی «افزودن مسیر دیگر» می‌توانید چند مسیر را برای Mount کردن دیسک به اپلیکیشن انتخاب کنید.

روی دکمه‌ی «افزودن» کلیک کنید تا دیسک برای اپ ساخته شود. هم‌چنین اگر به تعداد بیش‌تری از دیسک‌ها نیاز دارید می‌توانید در همین مرحله آن‌ها را اضافه کنید.

در نظر داشته باشید که در کانتینر ابری آروان، تنها امکان افزایش اندازه دیسک را دارید و کاهش آن امکان‌پذیر نیست.

تنظیمات

بسیاری از برنامه‌ها و سرویس‌ها، نیازمند تنظیماتی هستند که از طریق فایل و یا متغیرهای محیطی آن‌ها را دریافت کرده و به واسطه‌ی آن‌ها پیکربندی می‌شوند. در گام پیکربندی، می‌توانید متغیرهای محیطی، فایل‌های پیکربندی یا دستورهای اجرایی اپلیکیشن‌تان را مشخص کنید.

  • متغیرهای محیطی

    متغیر های محیطی یا Environment Variableها، جفت Key\Valueهایی هستند که اپلیکیشن برای اجرا به آن‌ها نیاز دارد. برای اطلاعات بیش‌تر در این خصوص، می‌توانید راهنمای متغیرهای محیطی را بخوانید.

    شما می‌توانید یک فایل برای Env variableها آپلود کنید، یا متن آن را کپی و در این قسمت Paste کنید.

    هم‌چنین با استفاده از گزینه‌ی «افزودن متغیر محیطی» می‌توانید آن‌ها را به‌شکل دستی وارد کنید.

  • فایل‌های پیکربندی

    در این بخش می‌توانید فایل‌های Secret یا Configmap اپلیکیشن را آپلود یا وارد کنید. هم‌چنین باید مسیر استقرار آن را نیز در همین بخش مشخص کنید. این مسیر می‌تواند هر مسیر دل‌خواهی باشد، با این شرط که پوشه‌ی والد یا Parent Directory آن موجود باشد؛ برای نمونه، /etc/ در etc/myapp/conf.json/.

    توجه داشته باشید که با افزودن یک فایل به هر پوشه، تمامی فایل‌های قبلی آن غیرقابل دسترس خواهند شد. مثلن، با افزودن فایل پیکربندی در مسیر etc/myapp/conf.json/ اگر /etc/myapp/ از قبل وجود داشته باشد، همه‌ی فایل‌های داخل آن از دسترس خارج خواهد شد.

  • دستور اجرایی

    اگر در هر بار اجرای کانتینر دستور (Command) خاصی باید اجرا شود آن را در این بخش وارد کنید.

  • تنظیمات منطقه (Zonal Topology Spread Constraints)

    هنگام ساخت اپلیکیشن با داکر ایمیج در پنل کاربری، می‌توانید در تب تنظیمات، جزییات مربوط به منطقه‌ی پیاده‌سازی اپلیکیشن را تعیین کنید.

    از روش داکر ایمیج، فقط اپلیکیشن‌های بدون دیسک (Stateless) قابلیت استفاده از Multi Zone را دارند. برای Multi Zone کردن اپلیکیشن‌های Stateful می‌توانید از طریق Kubectl یا روش helm اقدام کنید.

    • انتخاب خودکار منطقه:

      با فعال کردن این قابلیت، منطقه‌ای که اپلیکیشن در آن استقرار می‌یابد به‌طور خودکار انتخاب می‌شود. شما می‌توانید با غیرفعال کردن این قابلیت، منطقه(های) مورد نظر خودتان را انتخاب کنید.

      • تعداد رپلیکا:

        اگر انتخاب خودکار منطقه را غیرفعال کرده باشید می‌توانید در این بخش تعداد نمونه‌هایی که می‌خواهید از پادتان ساخته شود را تعیین کنید.

      • MaxSkew:

        این مقدار حداکثر اختلاف رپلیکاها را میان Zoneها مشخص می‌کند.

    • رفتار پشتیبانی

      • DoNotSchedule:

        این گزینه به برنامه‌ریز (Scheduler) می‌گوید اگر یکی از زون‌های انتخاب‌شده به هر دلیلی از دسترس خارج شد پاد روی Zone جدیدی برنامه‌ریزی (Schedule) نشود. از این حالت زمانی استفاده می‌شود که رعایت دقیق قوانین تعیین‌شده اهمیت بیش‌تری دارد و پاد نباید تا زمانی که شرایط برآورده نشده برنامه‌ریزی شود.

      • ScheduleAnyway:

        این گزینه به برنامه‌ریز (Scheduler) می‌گوید که پاد را در هر حالتی برنامه‌ریزی (Schedule) کند، حتی اگر قوانین تعیین شده رعایت نشود. هم‌چنین اگر یک زون از دسترس خارج شود پاد روی Zone تکراری برنامه‌ریزی (Schedule) می‌شود.به عبارت دیگر، استفاده از این روش ممکن است باعث ایجاد توزیع نامتوازنی از پادها شود. این حالت زمانی استفاده می‌شود که انعطاف در برنامه‌ریزی مهم‌تر از توزیع متوازن پاد‌ها باشد.

در پایان روی دکمه‌ی «ادامه» کلیک کنید.

تعیین منابع

در آخرین گام می‌توانید اندازه‌ی منابع را تعیین، صورت‌حساب را بررسی و کد زیرساخت در حال ساخت‌تان را دریافت کنید.

  • منابع

    پس از انتخاب نسل پردازنده می‌توانید اندازه‌ی CPU، رم و حافظه‌ی موقت (Ephemeral Storage) را مشخص کنید.

    این مقادیر می‌توانند اعشاری (مضربی از ۰٫۱) باشند.

    توجه داشته باشید که اگر مقدار تعیین‌شده برای رم کم‌تر از مقدار مورد نیاز اپلیکیشن باشد ممکن است اپ به‌شکل مکرر ری‌استارت شود.

    هم‌چنین هرگونه ذخیره‌سازی داده داخل اپلیکیشن و روی Ephemeral Storage با هر بار راه‌اندازی مجدد اپلیکیشن از بین خواهد رفت. اگر اپلیکیشن‌تان نیاز به ذخیره‌سازی فایلی روی دیسک دارد، باید از Persistent Storage استفاده کنید.

  • صورت‌حساب

    پس از تعیین منابع می‌توانید برآورد هزینه را به‌شکل ساعتی، روزانه، هفتگی یا ماهانه و به‌تفکیک هر یک از اجزا بررسی کنید. هم‌چنین می‌توانید این صورت‌حساب را دانلود و ذخیره کنید.

    هر زمان اپلیکیشن خود را خاموش یا حذف کنید هزینه‌ای برای CPU، رم و حافظه‌ی موقت برای شما محاسبه نمی‌شود.

  • کد زیرساخت

    در پشت صحنه‌ی فرآیندی که تا این‌جا طی کرده‌اید، کانتینر ابری آروان بر اساس تنظیمات شما منیفست‌های Kubernetes تولید کرده است. اگر درباره‌ی API استفاده شده در این فرآیند کنجکاو هستید و یا می‌خواهید از آن برای یادگیری Kubernetes استفاده کنید، می‌توانید منیفست‌ تولیدشده را مطالعه یا آن را با استفاده از Kubectl پیاده‌سازی کنید.

در پایان روی دکمه‌ی «ایجاد» کلیک کنید تا اپلیکیشن شما ساخته شود.

وضعیت اپلیکیشن

پس از تکمیل فرآیند ساخت، اپلیکیشن شما ایجاد می‌شود و از طریق بخش اپلیکیشن‌ها قابل مشاهده خواهد بود.

هم‌چنین برای جزییات بیش‌تر می‌توانید تا پایان نصب و فعال شدن اپ، از طریق بخش دسترسی سریع به رویداد‌ها، لاگ و کنسول اپلیکیشن دسترسی داشته باشید.

از این پس می‌توانید به‌کمک راهنمای «مدیریت اپلیکیشن» تنظیمات اپ خود را مدیریت کنید.