Dezkubeدزکوب

فناوری · زنجیرهٔ تأمین

BuildKit در دزکوب

موتور ساخت ایمیج

نسخهٔ پین‌شده
⟦V_BUILDKIT⟧
لایسنس
Apache 2.0
گروه در استک
زنجیرهٔ تأمین

BuildKit چیست

موتور ساخت ایمیج container با گراف ساخت موازی، کش پیشرفته و — مهم‌تر از همه — امکان اجرا بدون دسترسی ریشه.

چرا این را انتخاب کردیم

گزینه‌هایی که بررسی و رد شدند، و دلیل رد هر کدام
گزینه‌ای که رد شدچرا نه
ابزار ساخت آرشیوشدهنگهداری نمی‌شود؛ ساختن روی آن ریسک است
ساخت با دسترسی ریشه روی نودکد مستأجر با دسترسی ریشه — غیرقابل قبول در محیط چندمستأجری
واگذاری ساخت به CI بیرونییک وابستگی بیرونی و یک شکاف در زنجیرهٔ اصالت
دلیل تعیین‌کننده

rootless بودن. در پلتفرمی که کد مشتری‌های مختلف را می‌سازد، این یک الزام امنیتی است، نه یک ترجیح.

ما دقیقاً چطور استفاده‌اش می‌کنیم

  • هر بیلد در یک Job جداگانه و rootless.
  • بدون دسترسی به شبکهٔ کنترل‌پلن.
  • سقف زمان، سقف بیلد هم‌زمان به‌ازای مستأجر و در کل، سقف صف.
  • کش لایه به‌ازای مستأجر — بدون نشت بین مستأجرها.
  • نود اختصاصی بیلد (اختیاری) برای جدا کردن بار سنگین ساخت.
  • اطلاعات اصالت را کنترل‌پلن می‌سازد، نه پاد — و رمزگذاری‌شده به پاد می‌رسد، چون آدرس مخزن و ref داخلش ورودی کاربرند.

برای شما چه چیزی عوض می‌شود

  • ساخت با دسترسی ریشهrootless
  • بیلد یک تیم، ظرفیت همه را می‌بلعدسقف به‌ازای مستأجر
  • اصالتِ قابل جعلاصالتی که پادِ بیلد نمی‌سازد

مرزها و محدودیت‌ها

این سکشن در هر صفحهٔ فناوری اجباری است. هر ابزاری مرزی دارد؛ صفحه‌ای که مرزش را نگوید، بقیه‌اش هم قابل اتکا نیست.

  • rootless بودن به پیکربندی درست هسته و زمان اجرای container نیاز دارد. در معماری مرجع پوشش داده شده.
  • برخی Dockerfileهای پیچیده که به قابلیت‌های سطح ریشه نیاز دارند، در حالت rootless کار نمی‌کنند. صادقانه می‌گوییم؛ در عمل نادر است.
  • کش هرگز حیاتی نیست: بیلدی که با کش شکست بخورد، یک بار بدون کش دوباره اجرا می‌شود.

این را روی زیرساخت خودتان ببینید.

همین مؤلفه را در کلاستر شما پیکربندی می‌کنیم و نشان می‌دهیم.