Dezkubeدزکوب

قابلیت · زیرساخت

شبکه‌ای که با eBPF ساخته شده، نه با iptables

Gateway API برای ورودی، فایروال eBPF برای شرق-غرب، شبکهٔ خصوصی L2 برای ماشین‌های مجازی، و صدور خودکار گواهی.

چهار لایهٔ شبکه

لایه · مؤلفه · چه می‌کند
لایهمؤلفهچه می‌کند
ورودی L7Gateway API و Envoyمسیریابی HTTP/HTTPS، وزن‌دهی کاناری، فیلترها
ورودی L4Gateway API و تخصیص‌دهندهٔ پورتمسیر TCP/UDP با تخصیص اتمیک پورت
شرق-غربCilium (eBPF)سیاست شبکهٔ L3/L4/L7 با default-deny
شبکهٔ خصوصیMultus و VLANشبکهٔ لایه ۲ اختصاصی برای ماشین‌های مجازی

Gateway API، نه Ingress

کنترلرِ Ingress سنتی، سال‌ها استاندارد بود و حالا در حال پایان عمر است. ما از ابتدا روی Gateway API ساختیم — استاندارد جانشین، با مدل حاکمیتیِ روشن‌تر: چه کسی Gateway را می‌سازد، چه کسی می‌تواند به آن Route وصل کند.

مسیر HTTP/HTTPS
با میزبان، مسیر، هدر و پارامتر
وزن‌دهی
برای کاناری، دقیقاً بر اساس ترافیک
فیلتر درخواست
افزودن/حذف هدر، بازنویسی مسیر، ریدایرکت
مسیر TCP/UDP
با پورت اختصاصی
احراز هویت جلویی
ext-authz برای محافظت از سرویس‌های داخلی
WAF
قواعد فیلتر محتوا روی Envoy
محدودیت نرخ
با محاسبهٔ درست به‌ازای تعداد نمونه
  1. محدودیت نرخ per-instance محاسبه می‌شود. بودجه بر تعداد نمونهٔ Envoy تقسیم و به بالا گرد می‌شود. اگر به پایین گرد می‌شد، سقفِ ۲ درخواست بر ثانیه روی سه نمونه می‌شد صفر — یعنی رد کردن همه‌چیز.
  2. مسیر در سیاست Cilium یک عبارت باقاعده است، نه یک مسیر ساده. یعنی /api/v1.0/users نقطه‌اش هر نویسه‌ای را می‌گیرد. دزکوب هر مسیر را escape و لنگر می‌کند — چون /admin بدون لنگر، /public/admin-docs را هم می‌گیرد.

فایروال و ایزوله‌سازی

پیش‌فرض
default-deny روی هر محیط
استثنای DNS
خروجی DNS همیشه باز است، وگرنه هیچ‌چیز نامی را resolve نمی‌کند
سیاست L3/L4
بر اساس برچسب، namespace، CIDR
سیاست L7
بر اساس مسیر و متد HTTP
گروه امنیتی VM
قواعد به‌ازای هر ماشین، با قالب‌های آماده
سیاست بین مستأجرها
تعریف صریح اینکه کدام مستأجر می‌تواند به کدام برسد

«خالی» یعنی «همه».

در سیاست شبکهٔ Cilium، فهرست خالی به‌معنای «اجازه به همه» تفسیر می‌شود. این یک تلهٔ کلاسیک است که سیاستِ به‌ظاهر محدودکننده را به سیاستِ کاملاً باز تبدیل می‌کند. دزکوب این حالت را در کد رد می‌کند، نه اینکه در مستندات هشدار بدهد.

آدرس و پورت

استخر آدرس
مدیریت مرکزی آدرس‌های عمومی با MetalLB
BGP و ECMP
تبلیغ آدرس ورودی از چند نود برای تحمل خطا
تخصیص اتمیک پورت
دو استقرار هم‌زمان نمی‌توانند یک پورت بگیرند
موجودی
نمای کامل اینکه هر آدرس و پورت به چه چیزی تعلق دارد
دو-پشته
پشتیبانی IPv4 و IPv6

محدودیت اعلام‌شده

در کلاستری که فقط IPv4 دارد، یک CIDR از نوع IPv6 کامپایل می‌شود ولی با هیچ چیزی مطابقت نمی‌کند. دزکوب این وضعیت را گزارش می‌کند، به‌جای اینکه بی‌صدا بی‌اثر بماند.

دامنه و گواهی

دامنهٔ اختصاصی
افزودن دامنهٔ سازمان با راستی‌آزمایی مالکیت
صدور خودکار گواهی
با cert-manager از طریق ACME
چالش DNS-01
برای دامنه‌های wildcard و داخلی
ارائه‌دهندهٔ DNS داخلی
پشتیبانی از ارائه‌دهندهٔ DNS داخلی برای چالش DNS-01
تمدید خودکار
پیش از انقضا، با هشدار در صورت شکست
رکورد CAA
بررسی اینکه کدام مرجع مجاز به صدور است
گواهی داخلی
برای محیط‌های بدون دسترسی به اینترنت

حالت‌ها

متن واقعی رابط کاربری در هر وضعیت. حالت خالی، در حال انجام، و خطا، به همان شکلی که کاربر می‌بیند.

  • دامنه در انتظار راستی‌آزمایی

    رکورد TXT زیر را به DNS خود اضافه کنید.

    بررسی مجدد — نمونهٔ دکمهٔ رابط کاربری، در این صفحه فعال نیست

  • گواهی ناموفق

    صدور گواهی ناموفق: رکورد CAA اجازه نمی‌دهد.

  • تداخل پورت

    پورت ۸۰۸۰ قبلاً به سرویس «api» تخصیص یافته.

  • استخر آدرس تمام

    آدرس عمومی آزادی باقی نمانده.

    مشاهدهٔ موجودی — نمونهٔ دکمهٔ رابط کاربری، در این صفحه فعال نیست

  • بدون سیاست شبکه

    این محیط سیاست شبکه ندارد و default-deny فعال است. برای دسترسی خروجی، قانون تعریف کنید.

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

یک جلسهٔ ۴۵ دقیقه‌ای، محصول واقعی، بدون اسلاید.