قابلیت · ساخت و استقرار
ایمیجهایتان را میسازیم — و ثابت میکنیم که ما ساختیم
ساخت rootless در کلاستر خودتان، با SBOM، اسکن آسیبپذیری، امضای رمزنگارانه و اطلاعات اصالتِ غیرقابلجعل.
- ساخت rootless
- SBOM بهازای هر ایمیج
- امضای Cosign
- اصالت SLSA
چهار سؤالی که ممیز میپرسد
این ایمیج از کدام commit آمد؟
اطلاعات اصالت، commit و مخزن و زمان ساخت را ثبت میکند
داخلش چه کتابخانههایی است؟
SBOM کامل بهازای هر ایمیج، قابل دانلود
آسیبپذیری شناختهشده دارد؟
اسکن با Trivy در همان خط لوله، با آستانهٔ مسدودکنندهٔ قابل تنظیم
از کجا معلوم همان است که ساختید؟
امضای Cosign؛ قابل راستیآزمایی مستقل
بیلد بدون دسترسی ریشه، داخل خود کلاستر
هر بیلد در یک Job جداگانه اجرا میشود، با BuildKit در حالت rootless. یعنی حتی اگر کدِ بیلدشونده مخرب باشد، دسترسی ریشه روی نود ندارد.
بیلد به شبکهٔ کنترلپلن دسترسی ندارد، در namespace خودش اجرا میشود، سقف زمانی دارد، و تعداد بیلدهای همزمان — هم بهازای هر مستأجر و هم در کل — محدود است.
- rootless
- کدِ مستأجر نباید ریشهٔ نود بگیرد
- سقف زمان بیلد
- جلوگیری از بیلدِ بیپایان که ظرفیت را میبلعد
- سقف بیلد همزمان بهازای مستأجر
- یک تیم نتواند کل ظرفیت بیلد را بگیرد
- سقف صف بهازای مستأجر
- جلوگیری از انباشت بینهایت
- نودِ اختصاصی بیلد (اختیاری)
- جدا کردن بارِ سنگین بیلد از بار کاری تولید
- کش لایه بهازای مستأجر
- سرعت، بدون نشت کش بین مستأجرها
سه تصمیم طراحی که ارزش گفتن دارند
اطلاعات اصالت را کنترلپلن میسازد، نه پادِ بیلد.
پادِ بیلد کدِ مستأجر را اجرا میکند. هر چیزی که آن پاد دربارهٔ خودش اعلام کند، در همان مدلِ تهدیدی که اطلاعات اصالت را ارزشمند میکند، قابل کنترل توسط مهاجم است. پس اصالت را کنترلپلن میسازد و بهصورت رمزگذاریشده به پاد میدهد — چون آدرس مخزن و ref داخلش، خودشان ورودیِ کاربرند.
کش هرگز حیاتی نیست
بیلدی که با کش شکست بخورد، یک بار بدون کش دوباره اجرا میشود. کشِ خراب نباید بیلد را بشکند. این رفتار با اجرای واقعیِ اسکریپت روی یک BuildKit ساختگی که فقط با فلگ کش شکست میخورد، تست میشود — نه با بررسیِ متن اسکریپت.
همهچیز به سمت «بساز» شکست میخورد
commit نامعلوم، نبودِ بیلد موفق قبلی، یا فهرست تغییرات نامعلوم — هر سه باعث میشوند بیلد اجرا شود. مورد سوم مهم است: بعضی ارائهدهندههای گیت فهرست فایلهای تغییریافته را نمیدهند. اگر «نامعلوم» را «خالی» فرض میکردیم، اپلیکیشنهای آن ارائهدهندهها بیصدا کهنه میماندند.
رجیستری
- رجیستری داخلی
- نصب داخل کلاستر، با استوریج ماندگار
- رجیستری خصوصی بیرونی
- اعتبارنامهٔ رمزشده، تزریق خودکار
- آینهٔ pull-through
- کشِ عبوری برای کاهش ترافیک خروجی؛ مقصدهای بالادست allow-list دارند
- پروژههای آینه
- هرگز عمومی نیستند
نکته
آینه مکمّلِ بستهٔ آفلاین است، نه جایگزینش. کشِ عبوری تا وقتی چیزی از آن کشیده نشود خالی است — دقیقاً کاری که سایتِ بدون اینترنت نمیتواند بکند.
حالتها
متن واقعی رابط کاربری در هر وضعیت. حالت خالی، در حال انجام، و خطا، به همان شکلی که کاربر میبیند.
- بیلد در صف
در صف — ۲ بیلد قبل از شما.
- اسکن مسدودکننده
بیلد متوقف شد: ۳ آسیبپذیری با شدت بحرانی.
مشاهدهٔ گزارش کامل — نمونهٔ دکمهٔ رابط کاربری، در این صفحه فعال نیست
- کش خراب
کش در دسترس نبود؛ بدون کش ساخته شد.
- سقف بیلد همزمان
سقف بیلد همزمان تیم شما پر است. این بیلد در صف قرار گرفت.
اینها را هم ببینید
این را روی زیرساخت خودتان ببینید.
یک جلسهٔ ۴۵ دقیقهای، محصول واقعی، بدون اسلاید.