۳۰ آذر ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

ایمن کردن شبکه Azure Kubernetes با Calico

با چند خط YAML، Calico همچنان مراقب ایجاد شبکه‌های کنترل‌شده توسط برنامه‌ها خواهد بود.

با چند خط YAML، Calico همچنان مراقب ایجاد شبکه‌های کنترل‌شده توسط برنامه‌ها خواهد بود.

یکی از جنبه‌های جالب حرکت به سمت روش کار از بالا به پایین و برنامه محور، بازنگری در نحوه انجام شبکه است. همانطور که مدل برنامه ابتدا زیرساخت فیزیکی را با مجازی سازی انتزاع کرد و اکنون از Kubernetes و ابزارهای هماهنگ سازی مشابه برای انتزاع ماشین های مجازی زیربنایی استفاده می کند، شبکه در حال دور شدن از پشته های پروتکل مسیریابی همه منظوره به شبکه های مبتنی بر نرم افزار است که از پروتکل های رایج استفاده می کند. توابع شبکه خاص برنامه را اجرا کنید.

می‌توانیم ببینیم که چگونه شبکه‌سازی با معرفی SMB از طریق QUIC در Windows Server 2022 به عنوان جایگزینی برای VPNهای همه منظوره برای اشتراک‌گذاری فایل بین سیستم‌های Azure Stack داخلی و ابر عمومی Azure در حال تکامل است. به طور مشابه، در Kubernetes، ما شاهد فناوری‌هایی مانند سرویس مش (service mesh) هستیم که یک مدل شبکه تعریف‌شده توسط برنامه ارائه می‌کند که مش‌های شبکه را با برنامه توزیع‌شده شما به‌عنوان بخشی از تعریف برنامه ارائه می‌کند نه به عنوان شبکه‌ای که یک برنامه از آن استفاده می‌کند.

یک لایه شبکه جدید: شبکه تعریف شده توسط برنامه

این شبکه مبتنی بر برنامه توسعه منطقی بسیاری از مدل‌های شبکه‌ای تعریف‌شده توسط نرم‌افزار است که زیربنای ابر عمومی است. با این حال، به جای نیاز به درک عمیق از شبکه و مهمتر از آن، سخت‌افزار شبکه، تغییر به یک رویکرد سطح بالاتر است که در آن یک شبکه به طور خودکار با استفاده از اهداف در خط‌مشی و قوانین مستقر می‌شود. زمانی که ما با برنامه‌های خودسازماندهی پویا که بر حسب تقاضا، با نمونه‌هایی در مناطق و جغرافیای متعدد، همه بخشی از یک برنامه هستند، کار می‌کنیم، دور شدن از هر دو حالت مجازی و فیزیکی ضروری است.

هنوز روزهای اولیه برای شبکه‌سازی برنامه محور است، اما می‌بینیم که ابزارهایی در Azure به عنوان بخشی از اجرای Kubernetes ظاهر می‌شوند. البته یک گزینه Open Service Mesh است، اما مجموعه دیگری از ابزارها وجود دارد که به مدیریت امنیت شبکه برنامه های Kubernetes ما کمک می کند: خط مشی شبکه. این به مدیریت اتصال بین اجزای مختلف یک برنامه Kubernetes کمک می‌کند و جریان ترافیک بین پادها را مدیریت می‌کند.

خط مشی های شبکه در سرویس Azure Kubernetes

AKS (سرویس Azure Kubernetes) پشتیبانی از سیاست شبکه را از طریق دو مسیر ارائه می دهد: ابزار بومی خود یا کالیکو توسعه یافته در جامعه. این گزینه دوم شاید جالب‌ترین گزینه باشد، زیرا یک ابزار متقابل ابری را در اختیار شما قرار می‌دهد که می‌تواند نه تنها با AKS، بلکه با Kubernetes داخلی، Red Hat’s Open Shift و بسیاری از پیاده‌سازی‌های Kubernetes کار کند.

هفته بد داکر

Calico توسط شرکت مدیریت و امنیت Kubernetes Tigera مدیریت می‌شود. این یک پیاده‌سازی منبع باز مشخصات خط‌مشی شبکه Kubernetes، مدیریت اتصال بین بارهای کاری و اعمال سیاست‌های امنیتی بر روی آن اتصالات، افزودن برنامه‌های افزودنی خود به توابع پایه Kubernetes. این برنامه برای کار با صفحات داده مختلف، از eBPF در لینوکس تا شبکه میزبان ویندوز طراحی شده است. این رویکرد آن را برای Azure ایده‌آل می‌کند، که از Kubernetes برای کانتینرهای لینوکس و ویندوز پشتیبانی می‌کند.

تنظیم خط مشی شبکه در AKS مهم است . به‌طور پیش‌فرض، همه پادها می‌توانند داده‌ها را به هر کجا ارسال کنند. اگرچه این امر ذاتاً ناامن نیست، اما خوشه شما را به روی احتمال مصالحه باز می کند. پادهای حاوی سرویس‌های بک‌اند برای دنیای بیرون باز هستند و به هر کسی اجازه می‌دهند به خدمات شما دسترسی داشته باشند. پیاده‌سازی یک خط‌مشی شبکه به شما امکان می‌دهد اطمینان حاصل کنید که آن سرویس‌های پشتیبان فقط توسط سیستم‌های جلویی قابل دسترسی هستند و با کنترل ترافیک خطر را کاهش می‌دهد.

چه با استفاده از سرویس بومی یا Calico، خط‌مشی‌های شبکه AKS اسناد YAML هستند که قوانین مورد استفاده برای مسیریابی ترافیک بین پادها را تعریف می‌کنند. می‌توانید آن خط‌مشی‌ها را بخشی از مانیفست کلی برنامه خود قرار دهید و شبکه خود را با تعریف برنامه خود تعریف کنید. این به شبکه اجازه می‌دهد تا با برنامه مقیاس‌بندی کند، زمانی که AKS به تغییرات بار پاسخ می‌دهد، پادها را اضافه یا حذف کند (یا اگر از آن با KEDA [مقیاس‌سازی خودکار رویداد محور مبتنی بر Kubernetes] استفاده می‌کنید، زیرا برنامه شما به رویدادها پاسخ می‌دهد).< /p>

استفاده از Calico در سرویس Azure Kubernetes

انتخاب ابزار خط مشی شبکه باید هنگام ایجاد خوشه انجام شود. پس از استقرار ابزاری که استفاده می کنید نمی توانید آن را تغییر دهید. تفاوت هایی بین پیاده سازی بومی AKS و پشتیبانی Calico آن وجود دارد. هر دو مشخصات Kubernetes را پیاده‌سازی می‌کنند و هر دو روی خوشه‌های لینوکس AKS اجرا می‌شوند، اما فقط Calico از کانتینرهای ویندوز پشتیبانی می‌کند. توجه به این نکته مهم است که اگرچه Calico در AKS کار خواهد کرد، هیچ پشتیبانی رسمی Azure برای Calico فراتر از گزینه‌های موجود انجمن وجود ندارد.

NET 8 Preview 2 عملکرد Blazor را افزایش می دهد

شروع با Calico در AKS نسبتاً ساده است. ابتدا یک خوشه AKS ایجاد کنید و افزونه Azure Container Networking را اضافه کنید. به خوشه شما. این می تواند خط مشی شبکه AKS یا Calico را میزبانی کند. در مرحله بعد، شبکه مجازی خود را با زیرشبکه هایی که قصد استفاده از آن را دارید راه اندازی کنید. هنگامی که این مورد را ایجاد کردید، تنها کاری که باید انجام دهید این است که از خط فرمان Azure برای ایجاد یک خوشه AKS استفاده کنید و خط مشی شبکه خود را به جای «آژور» روی «calico» تنظیم کنید. این امکان پشتیبانی Calico را در هر دو گره استخر لینوکس و ویندوز فراهم می کند. اگر از Windows استفاده می‌کنید، مطمئن شوید که پشتیبانی Calico را با استفاده از پرچم ویژگی EnableAKSWindowsCalico از Azure CLI ثبت کرده‌اید.

تیم Calico توصیه می‌کند ابزار مدیریت calicoctl را در خوشه خود نصب کنید. گزینه‌های مختلفی برای نصب وجود دارد: اجرای باینری‌ها در ویندوز یا لینوکس یا افزودن یک غلاف Kubernetes به کلاستر. این آخرین گزینه احتمالاً برای کار با AKS بهترین است زیرا می‌توانید Windows و Linux pods را در کلاستر خود ترکیب و مطابقت دهید و هر دو را از یک محیط Kubernetes مدیریت کنید.

ساخت و استقرار خط مشی های شبکه Calico

شما خط مشی‌های شبکه Calico را با استفاده از YAML ایجاد خواهید کرد، خط‌مشی‌ها را تنظیم می‌کنید برای غلاف با نقش های خاص این نقش‌ها به‌عنوان برچسب‌های غلاف هنگام ایجاد غلاف اعمال می‌شوند، و قوانین شما به یک انتخابگر نیاز دارند تا خط‌مشی شما را به پادهایی که مطابق با برچسب‌های برنامه و نقش شما هستند، متصل کند. هنگامی که یک خط مشی ایجاد کردید، از kubectl برای اعمال آن در خوشه خود استفاده کنید.

تعریف قوانین به اندازه کافی آسان است. می‌توانید سیاست‌های ورودی را برای پادهای خاص تنظیم کنید تا مثلاً فقط از مجموعه دیگری از پادها ترافیک دریافت کنند که با الگوی انتخابگر دیگری مطابقت دارند. به این ترتیب می‌توانید اطمینان حاصل کنید که بک‌اند برنامه‌تان، مثلاً، فقط ترافیک را از قسمت جلویی شما دریافت می‌کند، و سرویس داده‌تان فقط زمانی کار می‌کند که توسط بک‌اندتان آدرس‌دهی شود. مجموعه ساده ای از قوانین ورودی حاصل، جداسازی بین لایه های برنامه را به عنوان بخشی از تعریف برنامه شما تضمین می کند. گزینه‌های دیگر به شما امکان می‌دهند قوانینی را برای فضاهای نام و همچنین نقش‌ها تعریف کنید و از جدایی بین تولید و غلاف تست اطمینان حاصل کنید.

عرضه هوش مصنوعی بسیار جلوتر از تقاضای هوش مصنوعی است

Calico به شما کنترل دقیقی بر خط مشی شبکه برنامه شما می دهد. شما می توانید پورت ها، نقاط پایانی برنامه های خاص، پروتکل ها و حتی نسخه های IP را مدیریت کنید. خط‌مشی‌های شما را می‌توان در یک فضای نام خاص یا در سطح جهانی در نمونه Kubernetes اعمال کرد. قوانینی برای ورود و خروج تنظیم شده‌اند و به شما امکان می‌دهند جریان ترافیک داخل و خارج از غلاف خود را کنترل کنید، با سیاست‌هایی که تمام ترافیک را جدا از آنچه به طور خاص مجاز است، ممنوع می‌کند. با Calico، انعطاف‌پذیری کافی برای ساخت سریع مدل‌های امنیتی شبکه پیچیده با تعداد انگشت شماری از فایل‌های YAML وجود دارد. فقط YAML مورد نیاز خود را ایجاد کنید و از calicoctl برای اعمال قوانین خود استفاده کنید.

شبکه مبتنی بر برنامه مفهومی مهم است که به تیم های توسعه برنامه اجازه می دهد تا نحوه تعامل کدشان با بافت شبکه زیرین را کنترل کنند. مانند ذخیره سازی و – به لطف ابزارهایی مانند Kubernetes – محاسبات، توانایی در نظر گرفتن شبکه به عنوان پارچه ای که می تواند به سادگی در سطح اتصال کنترل شود، مهم است. تیم های شبکه دیگر نیازی به پیکربندی شبکه های برنامه ندارند. تنها کاری که آنها باید انجام دهند این است که به تعریف VNets کمک کنند و سپس سیاست های برنامه را به برنامه بسپارند.

اگر می‌خواهیم برنامه‌های کاربردی انعطاف‌پذیر و مدرن بسازیم، باید از ابزارهایی مانند Calico استفاده کنیم که به شبکه ما اجازه می‌دهد به اندازه کد ما قابل حمل و به همان اندازه انعطاف‌پذیر و مقیاس‌پذیر باشد. ممکن است این تغییری در نحوه تفکر ما در مورد شبکه ها باشد، اما برای پشتیبانی از زیرساخت های کاربردی مدرن، یک مورد ضروری است.