Loading...

CONTAINER APPS · راهنمای پنل

انتقال یک پروژه داکر چندسرویسی، سرتاسر از پنل

این راهنما همراه کلیک-و-اجرای راهنمای خط فرمان cdnctl است. همان پروژه چندسرویسی به‌سبک docker-compose (سرویس‌های وب/API، worker های پس‌زمینه، یک پایگاه‌داده، یک کش و یک صف پیام) را می‌گیرد و کاملاً از پنل مدیریت روی پلتفرم کانتینر مدیریت‌شده CDN.com.tr اجرا می‌کند. هر مرحله زیر معادل خط فرمان دارد؛ از هرکدام که ترجیح می‌دهید استفاده کنید.

مسیر سریع: docker-compose.yml خود را مستقیماً وارد کنید

از قبل یک docker-compose.yml دارید؟ تب کانتینر می‌تواند آن را در یک مرحله وارد کند — Import from Docker Compose را باز کنید، برنامه پیش‌نمایش را بررسی کنید و تأیید کنید. به راهنمای وارد کردن Docker Compose یا مرجع compose در cdnctl مراجعه کنید. مراحل دستی زیر برای هرچیزی که وارد کردن compose پوشش نمی‌دهد همچنان معتبرند.

۱ · مفاهیم

  • حساب = پروژه. یک حساب می‌تواند چندین container app داشته باشد؛ بسته شما تعداد اپ‌هایی که می‌توانید اجرا کنید را تعیین می‌کند.
  • اپ = یک ایمیج کانتینر (یک سرویس). هر اپ یک پورت، یک بررسی سلامت، منابع، متغیرهای محیطی و secret ها دارد، و می‌تواند تا N رپلیکا مقیاس‌دهی شود.
  • افزونه‌های مدیریت‌شده بک‌اندهای دارای وضعیتی هستند — postgres (PostgreSQL/TimescaleDB)، mysql، redis و nats (JetStream) — که به یک اپ متصل می‌کنید. اتصال (شامل رمز عبور تولیدشده) مستقیماً به آن اپ تزریق می‌شود؛ رمز عبور هرگز دوباره نمایش داده نمی‌شود.
  • کشف سرویس. اپ‌های داخل حساب شما یک شبکه خصوصی مشترک دارند و دقیقاً مانند یک سرویس docker-compose با نام اپ به یکدیگر می‌رسند — http://<app-name>:<port>. اپی را hot-data-store نام‌گذاری کنید روی پورت 8082 و http://hot-data-store:8082 به‌طور خودکار resolve می‌شود.
  • انتشار عمومی. هر اپ می‌تواند روی یک ساب‌دامین CDN.com.tr یا دامنه خودتان منتشر شود. هر سرویس منتشرشده hostname مخصوص به خودش را می‌گیرد؛ worker ها و پایگاه‌داده‌ها خصوصی می‌مانند.

۲ · تب Container Apps را باز کنید

وارد شوید، CDN Accounts را باز کنید، روی آیکن تنظیمات در حسابی که می‌خواهید مدیریت کنید کلیک کنید، سپس تب Platforms را انتخاب کنید. در بالای صفحه انواع پلتفرم را می‌بینید — Container Apps را انتخاب کنید (و بار اول روی Activate بزنید).

تب‌های نوع پلتفرم با Container Apps انتخاب‌شده
تب‌های پلتفرم. نقطه سبز پلتفرم فعال این حساب را مشخص می‌کند.

صفحه Container Apps با یک نمای کلی (تعداد اپ، افزونه‌ها، خروجی edge) به‌همراه Create App و Usage Details، و سپس فهرست Your apps باز می‌شود. هر اپ یک ردیف است که وضعیتش را نشان می‌دهد، با یک عمل Create Test Copy (preprod) و یک لینک Manage →. روی Manage کلیک کنید تا صفحه جزئیات آن اپ باز شود، جایی که همه‌چیز را برای آن سرویس متصل می‌کنید.

نمای کلی Managed Container Apps و فهرست Your apps
کارت‌های نمای کلی در بالا؛ در پایین، فهرست Your apps — یک ردیف به‌ازای هر اپ با نشان وضعیت، یک عمل Create Test Copy و یک لینک Manage →. یک اپ را باز کنید تا به route آن، عمل Expose on cdn.com.tr و بخش‌های Add-ons / Imports / Jobs / Storage / Env برسید.

۳ · یک سرویس بسازید و متصل کنید

روی Create App کلیک کنید و فرم را پر کنید — یک اپ به‌ازای هر سرویس:

  • نام اپ — همچنین hostname درون-شبکه‌ای که اپ‌های دیگر استفاده می‌کنند (آن را با نام سرویس compose خود یکسان نگه دارید).
  • Image + Tag — هر سرویس را برای linux/amd64 بسازید و به یک رجیستری که پلتفرم بتواند pull کند push کنید.
  • Port، Replicas، Plan و مسیر Healthcheck — برای یک worker پس‌زمینه که listen نمی‌کند، پورت را خالی بگذارید.
  • اعتبارنامه رجیستری — برای ایمیج‌های خصوصی یک اعتبارنامه ذخیره‌شده انتخاب کنید، یا در ردیف Private registry credential یکی به‌صورت درون‌خطی اضافه کنید (توکن به‌صورت رمزنگاری‌شده ذخیره می‌شود و دیگر نمایش داده نمی‌شود).
  • مقادیر Env (یک KEY=value در هر خط) و Secrets — secret ها به‌صورت Kubernetes secret رمزنگاری‌شده ذخیره می‌شوند و پس از ذخیره نمایش داده نمی‌شوند.
فرم ساخت container app
فرم ساخت اپ. متغیرهای env در پیکربندی اپ قابل مشاهده‌اند؛ secret ها فقط-نوشتنی هستند. برای سرویسی که مالک یک افزونه است، نیازی به تایپ رشته اتصال آن نیست — به مرحله ۴ مراجعه کنید.

برای اتصال آن‌ها هنگام ساخت اپ، گزینه‌های Managed Redis، Managed DB یا Object Storage را در فرم علامت بزنید، یا بعداً از صفحه جزئیات اپ اضافه کنید (مرحله ۴).

۴ · پایگاه‌داده، کش و صف پیام مدیریت‌شده اضافه کنید

اپ را باز کنید (Manage →)، سپس تب Add-ons آن را، و از عملیات برای فعال کردن Redis، یک پایگاه‌داده (PostgreSQL/MySQL) یا NATS استفاده کنید. افزونه برای آن اپ فراهم می‌شود و اتصالش به‌طور خودکار تزریق می‌شود:

پنل افزونه‌های مدیریت‌شده با عملیات فعال/غیرفعال‌سازی
پنل Add-ons در صفحه جزئیات اپ. فعال کردن یک افزونه، اپ را با اتصال متصل‌شده دوباره مستقر می‌کند.
# auto-injected into the app the addon is enabled on:
DATABASE_HOST, DATABASE_PORT, DATABASE_NAME, DATABASE_USER   # env
DATABASE_PASSWORD, DATABASE_URL                              # secrets (full postgres:// URL)
REDIS_URL        # redis://<redis-host>:6379/0
NATS_URL         # nats://<nats-host>:4222

اشتراک‌گذاری یک بک‌اند بین اپ‌ها. بک‌اندهای بدون رمز عبور — NATS، و Redis با پیکربندی اینجا — می‌توانند از اپ‌های دیگر شما نیز دسترسی‌پذیر باشند: با استفاده از host افزونه، NATS_URL/REDIS_URL را روی هر مصرف‌کننده به‌عنوان env تنظیم کنید. یک پایگاه‌داده SQL دارای رمز عبور فقط به اپی که مالک آن است تزریق می‌شود (رمز عبور هرگز نمایش داده نمی‌شود)، پس سعی نکنید آن را از یک اپ دوم دوباره استفاده کنید — بگذارید یک اپ مالک پایگاه‌داده باشد و بقیه به آن فراخوانی بزنند، یا ایمیج پایگاه‌داده خودتان را با رمز عبوری که خودتان تعیین می‌کنید اجرا کنید.

۵ · استقرار دهید، وضعیت و لاگ‌ها را بررسی کنید

ذخیره کردن یک اپ، یک استقرار را در صف قرار می‌دهد. نشان وضعیت — هم در فهرست Your apps و هم در صفحه جزئیات اپ — به محض سالم شدن کانتینر به running تغییر می‌کند. در صفحه جزئیات از دکمه‌های عملیات برای مشاهده وضعیت / زمان اجرا، لاگ‌ها و فعالیت استفاده کنید، و از منوی Operations (نوار بالا) برای پیگیری هر استقرار تا پایان. اگر اپ‌های شما هنگام بوت مایگریشن اجرا می‌کنند، ابتدا سرویسی که طرح‌واره پایگاه‌داده شما را مقداردهی اولیه می‌کند مستقر کنید.

شمارنده running / replicas در نمای کلی و هدر Your apps وضعیت زنده را نشان می‌دهند — یک اپ به محض آماده شدن pod آن به running تغییر می‌کند.

۶ · سرویس‌ها را به‌صورت عمومی منتشر کنید

در صفحه جزئیات اپ، روی Expose on cdn.com.tr کلیک کنید تا ساب‌دامین ثابت مخصوص خود اپ (<uid>.cdn.com.tr) تولید شود (HTTPS برای شما مدیریت می‌شود). سپس route اپ آدرس زنده را نشان می‌دهد. هر تعداد سرویسی که لازم دارید منتشر کنید — یک حساب، چندین hostname عمومی. برای استفاده از دامنه خودتان به‌جای آن، از طریق DNS Management اضافه‌اش کنید و به سمت اپ اشاره دهید.

فقط سرویس‌هایی را منتشر کنید که باید عمومی باشند. worker های پس‌زمینه و پایگاه‌داده‌ها خصوصی می‌مانند. به هر سرویس HTTP که منتشر می‌کنید احراز هویت اضافه کنید.

۷ · قابلیت رصد (یک نمای واحد)

پشته پایش خود را به‌عنوان اپ‌های معمولی اجرا کنید: یک جمع‌آور متریک که سرویس‌های شما را scrape می‌کند (با پیکربندی scrape جاسازی‌شده در آن ساخته شده، خصوصی نگه‌داشته‌شده) و یک داشبورد که به‌صورت عمومی منتشر می‌کنید. هر دو را مانند هر اپ دیگری بسازید (مرحله ۳)، داشبورد را با نام اپ به جمع‌آور متصل کنید (http://<collector-name>:<port>)، سپس فقط داشبورد را Expose کنید. آن روی شبکه خصوصی از جمع‌آور کوئری می‌گیرد و از ساب‌دامین cdn.com.tr آن قابل دسترسی است.

۸ · ویرایش، مقیاس‌دهی، ری‌استارت و حذف

یک اپ را باز کنید (Manage →)؛ صفحه جزئیاتش این عملیات را دارد:

  • Edit () — ایمیج/تگ، پورت، رپلیکاها، بررسی سلامت، env و secret ها را تغییر دهید، سپس دوباره مستقر کنید.
  • Restart و scale — رپلیکاها را روی 0 بگذارید تا سرویس متوقف شود و روی 1+ برای شروع دوباره آن.
  • Delete () — اپ و ساب‌دامین عمومی آن را حذف می‌کند. غیرفعال کردن یک افزونه داده به‌طور پیش‌فرض دیسک آن را نگه می‌دارد؛ حذف داده به یک تأیید صریح نیاز دارد.

ترمینال را ترجیح می‌دهید؟ هر عملیات اینجا یک‌به‌یک با یک دستور cdnctl مطابقت دارد.