اگر برنامه شما بر اساس میکروسرویس ها باشد یا به سادگی در چندین کانتینر تقسیم شده باشد، آواز ارکسترها برای برنامه های آماده تولید ضروری است. همانطور که قبلاً معرفی شد، در یک رویکرد مبتنی بر میکروسرویس، هر میکروسرویس دارای مدل و دادههای خود است تا از نقطه نظر توسعه و استقرار مستقل باشد. اما حتی اگر یک برنامه کاربردی سنتی تری داشته باشید که از چندین سرویس تشکیل شده است (مانند SOA)، چندین کانتینر یا سرویس نیز خواهید داشت که شامل یک برنامه تجاری واحد است که باید به عنوان یک سیستم توزیع شده مستقر شوند. این نوع سیستم ها برای بزرگ کردن و مدیریت پیچیده هستند. بنابراین، اگر می خواهید یک برنامه چند کانتینری آماده و مقیاس پذیر داشته باشید، کاملاً به یک ارکستراتور نیاز دارید.
شما از یک کانتینر برای هر نمونه سرویس استفاده می کنید. کانتینرهای داکر «واحدهای استقرار» هستند و کانتینر نمونهای از داکر است. میزبان بسیاری از کانتینرها را اداره می کند. به نظر یک رویکرد منطقی است. اما چگونه میتوانید با متعادلسازی بار، مسیریابی و هماهنگسازی این برنامههای کاربردی ترکیبشده برخورد کنید؟
Docker Engine ساده در هاستهای Docker تنها نیازهای مدیریت نمونههای تصویر واحد را در یک میزبان برآورده میکند، اما زمانی که صحبت از مدیریت چندین کانتینر مستقر در میزبانهای متعدد برای برنامههای پیچیدهتر توزیعشده به میان میآید، کوتاهی میکند. در بیشتر موارد، شما به یک پلتفرم مدیریتی نیاز دارید که به طور خودکار کانتینرها را راه اندازی کند، کانتینرهایی با چندین نمونه در هر تصویر را کاهش دهد، آنها را به حالت تعلیق درآورد یا در صورت نیاز آنها را خاموش کند، و در حالت ایده آل نیز نحوه دسترسی آنها به منابعی مانند شبکه و ذخیره داده را کنترل کند.
برای فراتر رفتن از مدیریت کانتینرهای منفرد یا برنامههای ترکیبی ساده و حرکت به سمت برنامههای بزرگتر سازمانی با میکروسرویسها، باید به پلتفرمهای هماهنگسازی و خوشهبندی روی بیاورید.
از نقطه نظر معماری و توسعه، اگر در حال ساخت یک شرکت بزرگ متشکل از برنامه های کاربردی مبتنی بر میکروسرویس هستید، درک پلتفرم ها و محصولات زیر که از سناریوهای پیشرفته پشتیبانی می کنند بسیار مهم است:
خوشه ها و ارکسترها. هنگامی که شما نیاز دارید که برنامهها را در بسیاری از میزبانهای Docker مقیاسبندی کنید، مانند زمانی که یک برنامه بزرگ مبتنی بر میکروسرویس، بسیار مهم است که بتوانید همه آن میزبانها را به عنوان یک خوشه واحد با انتزاع کردن پیچیدگی پلتفرم زیربنایی مدیریت کنید. این چیزی است که گروه های کانتینر و ارکستراتورها ارائه می دهند. Kubernetes نمونه ای از ارکستراست و در Azure از طریق Azure Kubernetes Service در دسترس است.
برنامه ریزان. زمانبندی به این معنی است که یک مدیر این قابلیت را داشته باشد که کانتینرها را در یک خوشه راهاندازی کند تا آنها یک رابط کاربری نیز ارائه دهند. یک زمانبندی خوشه وظایف متعددی دارد: استفاده کارآمد از منابع خوشه، تنظیم محدودیتهای ارائهشده توسط کاربر، بارگذاری کارآمد محفظهها در گرهها یا میزبانها، و مقاوم بودن در برابر خطاها و در عین حال در دسترس بودن بالا.
مفاهیم خوشه و زمانبندی ارتباط نزدیکی با هم دارند، بنابراین محصولات ارائه شده توسط فروشندگان مختلف اغلب هر دو مجموعه از قابلیت ها را ارائه می دهند. لیست زیر مهم ترین پلتفرم ها و انتخاب های نرم افزاری را که برای خوشه ها و زمان بندی ها دارید نشان می دهد. این ارکسترها معمولاً در ابرهای عمومی مانند Azure ارائه می شوند.
چندین فروشنده ابری پشتیبانی از کانتینرهای Docker به علاوه خوشههای Docker و پشتیبانی هماهنگسازی را ارائه میکنند، از جمله Microsoft Azure، Amazon EC2 Container Service و Google Container Engine. Microsoft Azure از طریق سرویس Azure Kubernetes (AKS) پشتیبانی از Docker Cluster و Orchestrator را فراهم می کند.
یک خوشه Kubernetes چندین میزبان Docker را جمع آوری می کند و آنها را به عنوان یک میزبان Docker مجازی نمایش می دهد، بنابراین شما می توانید چندین کانتینر را در خوشه مستقر کنید و با هر تعداد نمونه کانتینر آن را کوچک کنید. این خوشه تمام لولهکشیهای مدیریتی پیچیده، مانند مقیاسپذیری، سلامت، و غیره را مدیریت میکند.
AKS راهی برای سادهسازی ایجاد، پیکربندی و مدیریت مجموعهای از ماشینهای مجازی در Azure فراهم میکند که برای اجرای برنامههای کانتینری از پیش پیکربندی شدهاند. با استفاده از یک پیکربندی بهینه از ابزارهای برنامهریزی و هماهنگسازی منبع باز محبوب، AKS شما را قادر میسازد تا از مهارتهای موجود خود استفاده کنید یا از تخصص بزرگ و رو به رشد جامعه برای استقرار و مدیریت برنامههای کاربردی مبتنی بر کانتینر در Microsoft Azure استفاده کنید.
سرویس Azure Kubernetes پیکربندی ابزارها و فناوری های منبع باز خوشه بندی محبوب Docker را به طور خاص برای Azure بهینه می کند. شما یک راه حل باز دریافت می کنید که قابلیت حمل هم برای کانتینرها و هم برای پیکربندی برنامه شما ارائه می دهد. شما اندازه، تعداد میزبانها و ابزارهای ارکستراتور را انتخاب میکنید و AKS همه چیز را مدیریت میکند.
در محیط توسعه، داکر در جولای 2018 اعلام کرد که Kubernetes میتواند با نصب Docker Desktop در یک ماشین توسعه (ویندوز 10 یا macOS) نیز اجرا شود. همانطور که در شکل 4-25 نشان داده شده است، می توانید بعداً برای آزمایش های ادغام بیشتر در فضای ابری (AKS) مستقر شوید.
برای شروع استفاده از AKS، یک خوشه AKS را از پورتال Azure یا با استفاده از CLI مستقر می کنید. برای اطلاعات بیشتر در مورد استقرار یک خوشه Kubernetes در Azure، به Deploy an Azure Kubernetes Service (AKS) خوشه مراجعه کنید.
هیچ هزینه ای برای هیچ یک از نرم افزارهای نصب شده به طور پیش فرض به عنوان بخشی از AKS وجود ندارد. همه گزینه های پیش فرض با نرم افزار منبع باز پیاده سازی می شوند. AKS برای چندین ماشین مجازی در Azure در دسترس است. فقط برای نمونههای محاسباتی که انتخاب میکنید، و سایر منابع زیرساختی مصرفشده، مانند ذخیرهسازی و شبکه، هزینه دریافت میکنید. هیچ هزینه افزایشی برای خود AKS وجود ندارد.
گزینه پیشفرض استقرار تولید برای Kubernetes استفاده از نمودارهای Helm است که در بخش بعدی معرفی میشوند.
هنگام استقرار یک برنامه در یک خوشه Kubernetes، میتوانید از ابزار اصلی kubectl.exe CLI با استفاده از فایلهای استقرار بر اساس فرمت اصلی (فایلهایyaml) استفاده کنید، همانطور که قبلاً در بخش قبل ذکر شد. با این حال، برای برنامه های پیچیده تر Kubernetes مانند هنگام استقرار برنامه های پیچیده مبتنی بر میکروسرویس، توصیه می شود از Helm استفاده کنید.
Helm Charts به شما کمک میکند حتی پیچیدهترین برنامه Kubernetes را تعریف، نسخه، نصب، اشتراکگذاری، ارتقا یا عقبگردانی کنید.
در ادامه، استفاده از Helm نیز توصیه میشود زیرا سایر محیطهای Kubernetes در Azure، مانند Azure Dev Spaces نیز بر اساس نمودارهای Helm هستند.
Helm توسط بنیاد محاسبات بومی ابری (CNCF) - با همکاری مایکروسافت، گوگل، بیتنامی و جامعه مشارکت کنندگان Helm نگهداری می شود.