CONTAINER APPS · راهنمای پنل
انتقال یک پروژه داکر چندسرویسی، سرتاسر از پنل
این راهنما همراه کلیک-و-اجرای راهنمای خط فرمان cdnctl است. همان پروژه چندسرویسی بهسبک docker-compose (سرویسهای وب/API، worker های پسزمینه، یک پایگاهداده، یک کش و یک صف پیام) را میگیرد و کاملاً از پنل مدیریت روی پلتفرم کانتینر مدیریتشده CDN.com.tr اجرا میکند. هر مرحله زیر معادل خط فرمان دارد؛ از هرکدام که ترجیح میدهید استفاده کنید.
از قبل یک 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 با یک نمای کلی (تعداد اپ، افزونهها، خروجی edge) بههمراه Create App و Usage Details، و سپس فهرست Your apps باز میشود. هر اپ یک ردیف است که وضعیتش را نشان میدهد، با یک عمل Create Test Copy (preprod) و یک لینک Manage →. روی Manage کلیک کنید تا صفحه جزئیات آن اپ باز شود، جایی که همهچیز را برای آن سرویس متصل میکنید.
۳ · یک سرویس بسازید و متصل کنید
روی 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 رمزنگاریشده ذخیره میشوند و پس از ذخیره نمایش داده نمیشوند.
برای اتصال آنها هنگام ساخت اپ، گزینههای Managed Redis، Managed DB یا Object Storage را در فرم علامت بزنید، یا بعداً از صفحه جزئیات اپ اضافه کنید (مرحله ۴).
۴ · پایگاهداده، کش و صف پیام مدیریتشده اضافه کنید
اپ را باز کنید (Manage →)، سپس تب Add-ons آن را، و از عملیات برای فعال کردن Redis، یک پایگاهداده (PostgreSQL/MySQL) یا NATS استفاده کنید. افزونه برای آن اپ فراهم میشود و اتصالش بهطور خودکار تزریق میشود:
# 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 مطابقت دارد.