Azure Container Apps یک سرویس Kubernetes بدون سرور است که مقیاسبندی را برای شما مدیریت میکند. فقط کانتینرهای برنامه خود را آماده اجرا بیاورید.
ساخت و مدیریت زیرساخت Kubernetes در فضای ابری ممکن است سخت باشد، حتی با استفاده از یک محیط مدیریت شده مانند Azure Kubernetes Service (AKS). هنگام طراحی یک برنامه کاربردی ابری، باید زیرساخت مجازی زیربنایی را در نظر بگیرید و کلاس مناسبی از سرورها را برای حجم کاری خود و تعداد مناسب برای پشتیبانی از مقیاس پیش بینی شده خود تهیه کنید. سپس نیاز به ساخت و مدیریت یک مش سرویس برای مدیریت شبکه و امنیت وجود دارد.
این کار بسیار زیادی است که چندین لایه devops جدید را به تیم توسعه شما اضافه می کند: یکی برای زیرساخت های فیزیکی یا مجازی، یکی برای برنامه شما و سرویس های مرتبط با آن، و دیگری برای مدیریت پلت فرم برنامه شما، خواه Kubernetes یا هر چیز دیگری باشد. ارکستراسیون یا لایه مدیریت کانتینر. این یک مسئله مهم است که بسیاری از مزایای انتقال به یک ارائه دهنده ابر مقیاس بزرگ را نفی می کند. اگر بودجه لازم برای مدیریت Kubernetes را ندارید، نمیتوانید از بیشتر این فناوریها استفاده کنید.
Cloud-native می تواند سخت باشد
جایگزینهایی وجود داشته است که براساس back-end-as-a -فناوری های خدماتی مانند Azure App Service. در اینجا میتوانید از کانتینرها بهعنوان جایگزینی برای زمانهای اجرا داخلی استفاده کنید و محیط کاربری Azure را جایگزین سرزمین کاربری خود کنید. با این حال، این ابزارها بر روی ساخت و اجرای سرویسهایی متمرکز هستند که از برنامههای وب و موبایل پشتیبانی میکنند، نه محیطهای مقیاسپذیر مبتنی بر پیامرسانی که برای کار با اینترنت اشیا یا سایر سیستمهای رویداد محور مورد نیاز است. اگرچه میتوانید از فناوریهای بدون سرور مانند توابع Azure استفاده کنید، اما توانایی بستهبندی تمام عناصر یک برنامه یا کار با شبکه و سرویسهای امنیتی را ندارید.
آنچه نیاز است راهی برای ارائه خدمات Kubernetes به روشی بدون سرور است که به شما امکان میدهد عملیات سرورهای زیربنایی یا زیرساخت مجازی را به یک ارائهدهنده ابری بسپارید. برای مدیریت خدمات برنامه خود و همچنین شبکهها و سرورهای مجازی زیربنایی، میتوانید از تخصص زیرساخت ارائهدهنده استفاده کنید. در جایی که زمان خود را صرف ساختن YAML و پیکربندی Kubernetes میکردید، اکنون به اتوماسیون ارائهدهنده خود تکیه کردهاید و روی ساخت برنامه خود تمرکز کردهاید.
معرفی برنامه های کانتینر Azure
در Ignite، مایکروسافت پیشنمایش یک سرویس پلتفرم جدید Azure، Azure Container Apps (ACA)، که این کار را انجام میدهد و یک سرویس ظرف بدون سرور که مقیاسبندی را برای شما مدیریت میکند. تنها کاری که باید انجام دهید این است که ظروف بسته بندی شده خود را آماده اجرا بیاورید. زیر کاپوت، ACA بر روی سرویسهای آشنای AKS، با پشتیبانی از KEDA (بر اساس Kubernetes Event-Driven Autoscaling) و شبکه سرویس Envoy ساخته شده است. برنامهها میتوانند از مزیت Dapr (زمان اجرای برنامه توزیعشده) استفاده کنند، که به شما یک هدف مشترک برای کدتان میدهد که به کانتینرهای برنامه اجازه میدهد هم در زیرساختهای فعلی Kubernetes و هم در سرویس جدید اجرا شوند.
مایکروسافت چهار سناریو مختلف را پیشنهاد میکند که در آن برنامههای کانتینر Azure ممکن است مناسب باشند:
- مدیریت APIهای مبتنی بر HTTP
- اجرای پردازش پسزمینه
- راهاندازی رویدادها از هر منبع سازگار با KEDA
- اجرای معماری های میکروسرویس مقیاس پذیر
این گزینه آخر، ACA را به ابزاری بسیار انعطافپذیر تبدیل میکند، که ابزارهای مقیاس تا صفر را برای اجزای برنامه ارائه میکند که ممکن است در بیشتر مواقع مورد استفاده قرار نگیرند. میتوانید برنامهای را در چندین سرویس مختلف Azure میزبانی کنید و سرویسهای ACA خود را در صورت نیاز و در صورت نیاز بدون متحمل شدن هزینه در حالی که ساکن هستند، فراخوانی کنید.
هزینهها در پیشنمایش کم است در اینجا تعدادی اعداد برای منطقه East US 2 آمده است:
- هزینه درخواستها ۰.۴۰ دلار در هر میلیون است که ۲ میلیون اول هر ماه رایگان است.
- هزینه های vCPU عبارتند از: فعال با ۰.۰۰۰۰۲۴ دلار در ثانیه و بیکار با ۰.۰۰۰۰۰۳ دلار در ثانیه.
- حافظه نیز به ازای هر گیگابایت در ثانیه قیمت دارد: ۰.۰۰۰۰۰۳ دلار در هر ثانیه برای کانتینرهای فعال و بیکار.
- هزینه ۱۸۰۰۰۰ vCPU-ثانیه و ۳۶۰۰۰۰ گیگابایت ثانیه در ماه یک کمک هزینه رایگان وجود دارد.
تنها چیزی که برای استفاده از Azure Container Apps نیاز دارید یک برنامه بسته بندی شده در container، با استفاده از هر زمان اجرا که می خواهید. این تقریباً شبیه اجرای Kubernetes است، با کانتینرهایی که برای نصب با تمام وابستگیهای برنامه شما پیکربندی شدهاند و برای اجرا بدون حالت طراحی شدهاند. اگر به حالت نیاز دارید، باید یک محیط ذخیره سازی Azure یا پایگاه داده را پیکربندی کنید تا وضعیت برنامه را برای شما نگه دارد و مدیریت کند، مطابق با بهترین شیوه ها برای استفاده از AKS. دسترسی به APIهای Kubernetes وجود ندارد. همه چیز توسط پلتفرم مدیریت می شود.
اگرچه شباهت هایی با توابع Azure وجود دارد، اما با گزینه های بدون سرور مقیاس تا صفر، برنامه های کانتینر Azure جایگزینی برای توابع نیستند. در عوض، بهتر است به عنوان خانه ای برای کاربردهای پیچیده تر در نظر گرفته شود. کانتینرهای Azure Container Apps طول عمر محدودی ندارند، بنابراین می توانید از آنها برای میزبانی برنامه های پیچیده ای که برای مدت طولانی اجرا می شوند یا حتی برای برنامه های پس زمینه استفاده کنید.
شروع به کار با برنامه های کانتینر Azure
شروع با برنامههای کانتینر Azure نسبتاً ساده است، با استفاده از پورتال Azure و کار با الگوهای ARM یا به صورت برنامه ای از طریق Azure CLI. در پورتال Azure، با تنظیم محیط برنامه خود شروع کنید و نظارت و ذخیره سازی مرتبط در یک گروه منبع Azure. محیط برنامه مرز ایزوله برای خدمات شما است که به طور خودکار یک شبکه محلی را برای کانتینرهای مستقر راه اندازی می کند. سپس یک فضای کاری Log Analytics برای محیط خود ایجاد کنید.
به کانتینرها هستههای CPU و حافظه اختصاص داده میشود که از ۰.۲۵ هسته و ۰.۵ گیگابایت حافظه در هر ظرف، تا ۲ هسته و ۴ گیگابایت حافظه شروع میشود. هسته های کسری نتیجه استفاده از مستاجران مشترک هستند، که در آن محاسبات مبتنی بر هسته بین کاربران به اشتراک گذاشته می شود. این به مایکروسافت اجازه میدهد تا محیطهای برنامههای کانتینر Azure با چگالی بسیار بالا را اجرا کند و امکان استفاده کارآمد از منابع Azure را برای کانتینرهای رویداد محور کوچک فراهم میکند.
کانتینرها از رجیستری کانتینر Azure یا هر رجیستری عمومی دیگر، از جمله داکر هاب، بارگیری می شوند. این رویکرد به شما امکان میدهد برنامههای کانتینر Azure را از خط لوله CI/CD (ادغام پیوسته و تحویل مداوم) خود هدفگیری کنید و یک ظرف بستهبندی شده را در یک رجیستری آماده برای استفاده در برنامههای کانتینر Azure تحویل دهید. در حال حاضر فقط از کانتینرهای مبتنی بر لینوکس پشتیبانی میشود، اگرچه با پشتیبانی از .NET، Node.js و Python، باید بتوانید به سرعت هر برنامه یا سرویسی را به یک کانتینر آماده ACA منتقل کنید.
پس از انتخاب یک ظرف، میتوانید اجازه دسترسی خارجی برای اتصالات HTTPS را انتخاب کنید. شما نیازی به اضافه کردن و پیکربندی ویژگی های شبکه Azure، مانند VNets یا load balancer ندارید. در صورت نیاز سرویس به طور خودکار آنها را اضافه می کند.
استفاده از Azure CLI برای کار و مقیاس با Dapr
برنامههای پیچیدهتر، مانند برنامههای ساخته شده با استفاده از Dapr، باید از طریق Azure CLI پیکربندی شود. کار با CLI مستلزم افزودن پسوند و فعال کردن فضای نام جدید است. این سرویس هنوز در پیش نمایش است، بنابراین باید افزونه CLI را از یک حباب Microsoft Azure بارگیری کنید. همانند پورتال، یک محیط Azure Container Apps و یک فضای کاری Log Analytics ایجاد کنید. با راهاندازی یک فروشگاه حالت در یک حساب ذخیرهسازی Azure Blob برای هر برنامه Dapr مستقر در سرویس، همراه با فایلهای پیکربندی مناسب YAML برای برنامهتان شروع کنید. اینها باید حاوی جزئیات محفظه برنامه شما، همراه با یک اشاره گر به سمت کاروان Dapr باشد که وضعیت برنامه را مدیریت می کند.
اکنون می توانید کانتینرهای برنامه خود را از یک رجیستری راه دور با استفاده از یک خط کد برای اضافه کردن آن به گروه منابع خود و فعال کردن هر ویژگی Dapr مستقر کنید. در همان زمان، حداقل و حداکثر تعداد کپیها را پیکربندی کنید تا بتوانید نحوه مقیاسبندی سرویس برنامههایتان را مدیریت کنید. در حال حاضر شما به حداکثر ۲۵ کپی محدود شدهاید، با گزینه مقیاسگذاری تا صفر. مهم است که به یاد داشته باشید که زمان راه اندازی مربوط به راه اندازی هر نسخه جدید است، بنابراین ممکن است بخواهید یک نسخه واحد را همیشه در حال اجرا نگه دارید. با این حال، این به معنای دریافت صورتحساب برای استفاده از آن منبع در هزینه بیحرکتی Azure Container Apps است.
سپس میتوانید راهاندازهای مقیاس خود را بهعنوان قوانینی در پیکربندی JSON تعریف کنید. فایل ها. برای درخواستهای HTTP (مثلاً زمانی که یک میکروسرویس REST API را اجرا میکنید)، میتوانید تعداد درخواستهای همزمانی را که یک نمونه میتواند خدمات ارائه کند، انتخاب کنید. به محض اینکه از آن محدودیت عبور کردید، برنامه های کانتینر Azure یک کپی کانتینر جدید راه اندازی می کند تا زمانی که به محدودیت از پیش تعیین شده خود برسید. مقیاسگذاری رویداد محور از فراداده KEDA برای تعیین قوانین اعمال شده استفاده میکند.
نام رویداد مورد استفاده برای مقیاسبندی برنامه، نوع سرویسی که استفاده میکنید، و فراداده و راهاندازی که برای مقیاسبندی استفاده میشود را انتخاب کنید. به عنوان مثال، یک صف پیام ممکن است حداکثر طول صف داشته باشد، بنابراین وقتی صف به حداکثر طول خود رسید، یک کپی ظرف جدید راه اندازی شده و به صف متصل می شود. سایر گزینه های مقیاس بندی بر اساس توابع استاندارد Kubernetes هستند، بنابراین می توانید از استفاده از CPU و استفاده از حافظه برای مقیاس استفاده کنید. توجه به این نکته مهم است که این فقط یک سیستم مقیاسپذیر است. شما نمی توانید منابع اختصاص داده شده به یک ظرف را تغییر دهید.
Kubernetes ساده تر شد
اینجا چیزهای زیادی برای دوست داشتن وجود دارد. Azure Container Apps راه طولانی را برای ساده سازی پیکربندی و مدیریت برنامه های Kubernetes انجام می دهد. با در نظر گرفتن یک کانتینر به عنوان واحد برنامه پیشفرض و بهرهگیری از فناوریهایی مانند Dapr، میتوانید برنامههایی بسازید که هم در محیطهای استاندارد Kubernetes و هم در Azure Container Apps اجرا شوند. پیکربندی ساده است، با تعاریف اولیه برای برنامه شما و نحوه مقیاس آن، به شما امکان می دهد بدون نیاز به یک تیم توسعه دهنده کامل، به سرعت برنامه های مقیاس پذیر و بومی ابری را ارائه دهید.
Azure زندگی خود را بهعنوان میزبان ابزارهای پلتفرم بهعنوان سرویس آغاز کرد، و برنامههای کانتینر Azure آخرین نمونه از این دیدگاه هستند. در جایی که سرویس اصلی برنامه Azure شما را به مجموعهای از APIها و زمانهای اجرا محدود میکرد، برنامههای کانتینر Azure دسترسی بسیار گستردهتری دارد و چارچوبی را ارائه میدهد که به سادگی قرار دادن کد شما در یک کانتینر، تبدیل شدن به ابر را ساده میکند.
پست های مرتبط
Kubernetes مایکروسافت برای بقیه ما
Kubernetes مایکروسافت برای بقیه ما
Kubernetes مایکروسافت برای بقیه ما