فناوری · زنجیرهٔ تأمین
BuildKit در دزکوب
موتور ساخت ایمیج
- نسخهٔ پینشده
- ⟦V_BUILDKIT⟧
- لایسنس
- Apache 2.0
- گروه در استک
- زنجیرهٔ تأمین
BuildKit چیست
موتور ساخت ایمیج container با گراف ساخت موازی، کش پیشرفته و — مهمتر از همه — امکان اجرا بدون دسترسی ریشه.
چرا این را انتخاب کردیم
| گزینهای که رد شد | چرا نه |
|---|---|
| ابزار ساخت آرشیوشده | نگهداری نمیشود؛ ساختن روی آن ریسک است |
| ساخت با دسترسی ریشه روی نود | کد مستأجر با دسترسی ریشه — غیرقابل قبول در محیط چندمستأجری |
| واگذاری ساخت به CI بیرونی | یک وابستگی بیرونی و یک شکاف در زنجیرهٔ اصالت |
دلیل تعیینکننده
rootless بودن. در پلتفرمی که کد مشتریهای مختلف را میسازد، این یک الزام امنیتی است، نه یک ترجیح.
ما دقیقاً چطور استفادهاش میکنیم
- هر بیلد در یک Job جداگانه و rootless.
- بدون دسترسی به شبکهٔ کنترلپلن.
- سقف زمان، سقف بیلد همزمان بهازای مستأجر و در کل، سقف صف.
- کش لایه بهازای مستأجر — بدون نشت بین مستأجرها.
- نود اختصاصی بیلد (اختیاری) برای جدا کردن بار سنگین ساخت.
- اطلاعات اصالت را کنترلپلن میسازد، نه پاد — و رمزگذاریشده به پاد میرسد، چون آدرس مخزن و ref داخلش ورودی کاربرند.
برای شما چه چیزی عوض میشود
- ساخت با دسترسی ریشهrootless
- بیلد یک تیم، ظرفیت همه را میبلعدسقف بهازای مستأجر
- اصالتِ قابل جعلاصالتی که پادِ بیلد نمیسازد
مرزها و محدودیتها
این سکشن در هر صفحهٔ فناوری اجباری است. هر ابزاری مرزی دارد؛ صفحهای که مرزش را نگوید، بقیهاش هم قابل اتکا نیست.
- rootless بودن به پیکربندی درست هسته و زمان اجرای container نیاز دارد. در معماری مرجع پوشش داده شده.
- برخی Dockerfileهای پیچیده که به قابلیتهای سطح ریشه نیاز دارند، در حالت rootless کار نمیکنند. صادقانه میگوییم؛ در عمل نادر است.
- کش هرگز حیاتی نیست: بیلدی که با کش شکست بخورد، یک بار بدون کش دوباره اجرا میشود.
اینها را هم ببینید
این را روی زیرساخت خودتان ببینید.
همین مؤلفه را در کلاستر شما پیکربندی میکنیم و نشان میدهیم.