قابلیت · زیرساخت
شبکهای که با eBPF ساخته شده، نه با iptables
Gateway API برای ورودی، فایروال eBPF برای شرق-غرب، شبکهٔ خصوصی L2 برای ماشینهای مجازی، و صدور خودکار گواهی.
چهار لایهٔ شبکه
| لایه | مؤلفه | چه میکند |
|---|---|---|
| ورودی L7 | Gateway API و Envoy | مسیریابی HTTP/HTTPS، وزندهی کاناری، فیلترها |
| ورودی L4 | Gateway 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
- محدودیت نرخ
- با محاسبهٔ درست بهازای تعداد نمونه
- محدودیت نرخ per-instance محاسبه میشود. بودجه بر تعداد نمونهٔ Envoy تقسیم و به بالا گرد میشود. اگر به پایین گرد میشد، سقفِ ۲ درخواست بر ثانیه روی سه نمونه میشد صفر — یعنی رد کردن همهچیز.
- مسیر در سیاست 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 فعال است. برای دسترسی خروجی، قانون تعریف کنید.
اینها را هم ببینید
این را روی زیرساخت خودتان ببینید.
یک جلسهٔ ۴۵ دقیقهای، محصول واقعی، بدون اسلاید.