قابلیت · ساخت و استقرار
از commit تا تولید، بدون یک خط YAML
مخزن گیت را وصل کنید. دزکوب میسازد، اسکن میکند، امضا میکند، مستقر میکند — و اگر خراب شد، برمیگرداند.
- ۴ روش ساخت
- ۶ نوع دیتابیس
- بازگشت در چند ثانیه
- محیط پیشنمایش خودکار
چرا این سخت است
رسیدن کد به تولید در بیشتر سازمانها یک خط لولهٔ شکنندهٔ دستساز است: یک ابزار CI که کسی جرأت نمیکند دست بزند، مجموعهای از فایلهای YAML که فقط یک نفر میفهمد، و یک فرآیند بازگشت که در عمل یعنی «سریع یک هاتفیکس بزن».
این خط لوله معمولاً کار میکند. مشکل، روزی است که کار نکند — و آن روز، همیشه بدترین روز ممکن است.
سلسلهمراتب مفاهیم
| سطح | چیست | چه چیزی در آن تعریف میشود |
|---|---|---|
| سازمان | بالاترین سطح | سیاستهای سراسری، بودجه، سقف خروج |
| تیم | زیرمجموعهٔ سازمان | عضویتها، نقشهای بهارثرسیده |
| پروژه | ظرف کار | اعضا، نقشهای اختصاصی، محیطها |
| محیط | معادل یک namespace | سهمیه، متغیرهای محیطی، بار کاریها |
| اپلیکیشن | یک بار کاری | منبع کد، تنظیمات ساخت، مسیر شبکه |
| انتشار | یک نسخهٔ تغییرناپذیر | دایجست ایمیج، پیکربندی، وضعیت |
نکتهٔ کلیدی
ماشین مجازی هم زیر همین سلسلهمراتب است. یعنی عضویتی که یک نفر را از پروژه حذف میکند، همزمان دسترسیاش به اپلیکیشنها و ماشینهای مجازی همان پروژه را قطع میکند.
چهار روش رسیدن به تولید
از مخزن گیت
تیمی که کد دارد و Dockerfile دارد
مخزن وصل میشود، وبهوک ثبت میشود، هر push میسازد و مستقر میکند
با Buildpacks
تیمی که Dockerfile ندارد
زبان و چارچوب تشخیص داده میشود و ایمیج ساخته میشود
از ایمیج آماده
تیمی که خودش میسازد
فقط آدرس ایمیج و اعتبارنامهٔ رجیستری
از قالب مارکتپلیس
استقرار سرویسهای آماده
یک کلیک، با پارامترهای قابل تنظیم
چرخهٔ کامل
راهاندازی
مخزن وصل میشود؛ وبهوک با امضای زماندار ثبت میشود
تشخیص تغییر
مسیرهای تحت نظر بررسی میشوند؛ اگر تغییرِ مرتبطی نبود، بیلد اجرا نمیشود
ساخت
در یک Job ایزولهٔ rootless با BuildKit یا Buildpacks
بازرسی
تولید SBOM، اسکن آسیبپذیری، تولید اطلاعات اصالت
امضا
ایمیج با Cosign امضا میشود
انتشار
یک Release با دایجست دقیق ثبت میشود — نه با تگ
استقرار
یکباره، تدریجی، یا کاناری با درصد قابل تنظیم
نظارت
وضعیت واقعی از watch میآید؛ خطا یا سلامت هر دو دیده میشوند
- اگر فهرست فایلهای تغییریافته از سمت ارائهدهندهٔ گیت نامعلوم باشد، بیلد اجرا میشود — نه اینکه بیصدا رد شود. برخی ارائهدهندهها این فهرست را نمیدهند؛ «نامعلوم» با «خالی» یکی نیست.
- اگر بیلدِ با کش شکست بخورد، یک بار بدون کش دوباره اجرا میشود. کش هرگز نباید باعث شکست بیلد شود.
- بیلدی که رد میشود، هیچ ردیفی در تاریخچه نمیسازد. رکوردِ صادقانهٔ «این دایجست را مستقر کردیم» همان بیلدی است که آن دایجست را ساخت.
پیکربندی
- متغیر محیطی
- دو نوع: ساده و محرمانه. محرمانهها با AEAD رمز میشوند و در هیچ پاسخ API آشکار نمیشوند
- متغیر سراسری
- تعریف در سطح سازمان، در دسترس همهٔ پروژهها
- سلامتسنجی
- liveness و readiness جدا
- منابع
- درخواست و سقف CPU/حافظه، با سیاست عمدیِ «بدون سقف CPU» بهعنوان پیشفرض قابل تغییر
- مقیاسپذیری
- افقی بر اساس متریک، یا رویداد-محور با KEDA
- رجیستری خصوصی
- اعتبارنامه رمزشده، تزریق خودکار به نودها
زنجیرهٔ تأمین، در یک نقطه
هیچ استقراری بدون رد شدن از زنجیرهٔ تأمین انجام نمیشود.
بازنویسی مرجعِ ایمیج در یک نقطهٔ واحد اتفاق میافتد — همانجایی که هر ایمیجِ مستقرشده از آن عبور میکند. یعنی سیاست نمیتواند نیمهاعمال شود.
حالتها
متن واقعی رابط کاربری در هر وضعیت. حالت خالی، در حال انجام، و خطا، به همان شکلی که کاربر میبیند.
- بدون اپلیکیشن
هنوز اپلیکیشنی ندارید.
اولین اپلیکیشن را بسازید — نمونهٔ دکمهٔ رابط کاربری، در این صفحه فعال نیست
- در حال ساخت
نوار پیشرفت با مرحلهٔ جاری، و لاگ زندهٔ قابل مشاهده.
- شکست بیلد
بیلد شکست خورد در مرحلهٔ «اسکن آسیبپذیری».
گزارش را ببینید — نمونهٔ دکمهٔ رابط کاربری، در این صفحه فعال نیست
- سهمیه پر
این محیط به سقف حافظه رسیده. ۲ گیگابایت آزاد لازم است.
مدیریت سهمیه — نمونهٔ دکمهٔ رابط کاربری، در این صفحه فعال نیست
- بدون دسترسی
برای استقرار در این پروژه، نقش «توسعهدهنده» لازم است.
درخواست دسترسی موقت — نمونهٔ دکمهٔ رابط کاربری، در این صفحه فعال نیست
اینها را هم ببینید
این را روی زیرساخت خودتان ببینید.
یک جلسهٔ ۴۵ دقیقهای، محصول واقعی، بدون اسلاید.