ProHoster > وبلاگ > اداره > بهترین روش ها و بهترین روش ها برای اجرای کانتینرها و Kubernetes در محیط های تولید
بهترین روش ها و بهترین روش ها برای اجرای کانتینرها و Kubernetes در محیط های تولید
اکوسیستم فناوری کانتینرسازی به سرعت در حال تحول و تغییر است، بنابراین فقدان شیوه های کاری خوب در این زمینه وجود دارد. با این حال، Kubernetes و کانتینرها به طور فزاینده ای مورد استفاده قرار می گیرند، هم برای مدرن کردن برنامه های کاربردی قدیمی و هم برای توسعه برنامه های کاربردی ابری مدرن.
تیم Kubernetes aaS از Mail.ru پیش بینی ها، توصیه ها و بهترین شیوه ها را برای رهبران بازار از Gartner، 451 Research، StacxRoх و دیگران جمع آوری کرد. آنها استقرار کانتینرها را در محیط های تولیدی فعال و تسریع می کنند.
چگونه بفهمیم که آیا شرکت شما آماده استقرار کانتینرها در یک محیط تولید است؟
به گفته گارتنر، در سال 2022، بیش از 75 درصد از سازمان ها از برنامه های کاربردی کانتینری در تولید استفاده خواهند کرد. این به طور قابل توجهی بیشتر از حال حاضر است، زمانی که کمتر از 30٪ شرکت ها از چنین برنامه هایی استفاده می کنند.
طبق تحقیقات 451بازار پیش بینی شده برای کاربردهای فناوری کانتینر در سال 2022 4,3 میلیارد دلار خواهد بود که بیش از دو برابر میزان پیش بینی شده در سال 2019 با نرخ رشد بازار 30 درصد است.
В نظرسنجی Portworx و Aqua Security 87 درصد از پاسخ دهندگان گفتند که در حال حاضر از فناوری های کانتینری استفاده می کنند. برای مقایسه، در سال 2017، 55 درصد از این پاسخ دهندگان وجود داشت.
با وجود علاقه روزافزون و پذیرش ظروف، تولید آنها به منحنی یادگیری به دلیل عدم بلوغ تکنولوژیکی و کمبود دانش نیاز دارد. سازمانها باید در مورد فرآیندهای تجاری که نیاز به کانتینریسازی برنامه دارند، واقع بین باشند. رهبران فناوری اطلاعات باید ارزیابی کنند که آیا آنها مهارت لازم برای حرکت رو به جلو و نیاز به یادگیری سریع را دارند یا خیر.
کارشناسان گارتنر ما فکر میکنیم که سوالات در تصویر زیر به شما کمک میکند تا مشخص کنید آیا آماده استقرار کانتینرها در تولید هستید یا خیر:
رایج ترین اشتباهات هنگام استفاده از ظروف در تولید
سازمانها اغلب تلاشهای لازم برای استفاده از ظروف در تولید را دستکم میگیرند. گارتنر کشف کرد برخی از اشتباهات رایج در سناریوهای مشتری هنگام استفاده از کانتینر در محیط های تولید:
چگونه ظروف را ایمن نگه داریم
امنیت را نمی توان «بعداً» بررسی کرد. باید در فرآیند DevOps تعبیه شود، به همین دلیل است که حتی یک اصطلاح خاص وجود دارد - DevSecOps. سازمان ها باید برنامه ریزی کنند حفاظت از محیط کانتینر خود در طول چرخه عمر توسعه، که شامل فرآیند ساخت و توسعه، استقرار و راه اندازی برنامه است.
فرآیند اسکن تصاویر برنامه برای آسیبپذیریها را در خط لوله یکپارچهسازی/تحویل پیوسته (CI/CD) خود ادغام کنید. برنامه ها در مراحل ساخت و راه اندازی نرم افزار اسکن می شوند. بر نیاز به اسکن و شناسایی اجزای منبع باز، کتابخانه ها و چارچوب ها تاکید کنید. توسعه دهندگانی که از نسخه های قدیمی و آسیب پذیر استفاده می کنند یکی از دلایل اصلی آسیب پذیری کانتینر است.
پیکربندی خود را با تست های مرکز امنیت اینترنت (CIS) که برای Docker و Kubernetes در دسترس هستند.
مطمئن شوید که کنترل های دسترسی را اعمال کنید، از تفکیک وظایف اطمینان حاصل کنید و یک سیاست مدیریت اسرار را اجرا کنید. اطلاعات حساس، مانند کلیدهای لایه ایمن سوکت (SSL) یا اعتبار پایگاه داده، توسط ارکستراتور یا خدمات مدیریت شخص ثالث رمزگذاری شده و در زمان اجرا در معرض دید قرار می گیرند.
با مدیریت سیاست های امنیتی برای کاهش خطرات احتمالی نقض، از کانتینرهای مرتفع اجتناب کنید.
از ابزارهای امنیتی استفاده کنید که لیست سفید، نظارت بر رفتار و تشخیص ناهنجاری را برای جلوگیری از فعالیت های مخرب ارائه می دهند.
از قابلیت های داخلی Kubernetes استفاده کنید. راهاندازی دسترسی برای کاربرانی که از نقشها استفاده میکنند. اطمینان حاصل کنید که مجوزهای غیر ضروری را به نهادهای فردی اعطا نمی کنید، حتی اگر فکر کردن به حداقل مجوزهای مورد نیاز مدتی طول بکشد. ممکن است وسوسه انگیز باشد که به مدیر خوشه امتیازات گسترده ای بدهید زیرا در ابتدا باعث صرفه جویی در زمان می شود. با این حال، هر گونه مصالحه یا اشتباه در حساب می تواند منجر به عواقب ویرانگر بعدی شود.
از مجوزهای دسترسی تکراری خودداری کنید. گاهی اوقات همپوشانی نقش های مختلف می تواند مفید باشد، اما این می تواند منجر به مشکلات عملیاتی شود و همچنین هنگام حذف مجوزها نقاط کور ایجاد کند. حذف نقش های استفاده نشده و غیرفعال نیز مهم است.
تنظیم سیاست های شبکه: ماژول ها را جدا کنید تا دسترسی به آنها را محدود کنید. صراحتاً اجازه دسترسی به اینترنت را به ماژول هایی که به آن نیاز دارند با استفاده از برچسب ها می دهد. صریحاً اجازه دهید ارتباط بین آن دسته از ماژول هایی که نیاز به برقراری ارتباط با یکدیگر دارند.
نحوه سازماندهی نظارت بر کانتینرها و خدمات موجود در آنها
امنیت و نظارت - مشکلات اصلی شرکت ها هنگام استقرار خوشه های Kubernetes. توسعه دهندگان همیشه بیشتر بر ویژگی های برنامه هایی که توسعه می دهند تمرکز می کنند تا جنبه های آن نظارت بر این برنامه ها.
از ابزارهایی برای کشف و ردیابی خودکار معیارهای کانتینر، همبستگی معیارهای عملکرد مانند CPU، حافظه و زمان کار استفاده کنید.
با پیشبینی تاریخهای تخلیه ظرفیت بر اساس معیارهای نظارت بر کانتینر، از برنامهریزی ظرفیت بهینه اطمینان حاصل کنید.
برنامه های کاربردی کانتینری را برای در دسترس بودن و عملکرد نظارت کنید، که هم برای برنامه ریزی ظرفیت و هم برای عیب یابی مشکلات عملکرد مفید است.
با ارائه پشتیبانی مدیریت و مقیاسبندی برای کانتینرها و محیطهای میزبانی آنها، گردشهای کاری را خودکار کنید.
کنترل دسترسی را به صورت خودکار برای نظارت بر پایگاه کاربر خود، غیرفعال کردن حساب های منسوخ و مهمان و حذف امتیازات غیر ضروری انجام دهید.
مطمئن شوید که مجموعه ابزار شما میتواند این کانتینرها و برنامهها را در چندین محیط (ابر، درون محل یا ترکیبی) نظارت کند تا عملکرد در زیرساختها، شبکه، سیستمها و برنامهها را تجسم و معیار قرار دهد.
نحوه ذخیره داده ها و اطمینان از امنیت آن
با ظهور کانتینرهای stateful worker، مشتریان باید حضور داده ها در خارج از میزبان و نیاز به محافظت از آن داده ها را در نظر بگیرند.
طبق نظرسنجی Portworx و Aqua Security، امنیت داده ها در صدر فهرست نگرانی های امنیتی است که اکثر پاسخ دهندگان (61٪) به آنها اشاره کرده اند.
رمزگذاری داده ها استراتژی اصلی امنیتی است (64%)، اما پاسخ دهندگان از نظارت زمان اجرا نیز استفاده می کنند
(49٪)، اسکن رجیستری برای آسیب پذیری ها (49٪)، اسکن برای آسیب پذیری در خطوط لوله CI/CD (49٪)، و مسدود کردن ناهنجاری ها از طریق حفاظت در زمان اجرا (48٪).
راه حل های ذخیره سازی بر اساس اصول را انتخاب کنید معماری میکروسرویس. بهتر است روی مواردی تمرکز کنید که الزامات ذخیره سازی داده برای سرویس های کانتینری را برآورده می کنند، مستقل از سخت افزار هستند، مبتنی بر API هستند، دارای معماری توزیع شده هستند، از استقرار محلی و استقرار در ابر عمومی پشتیبانی می کنند.
از پلاگین ها و رابط های اختصاصی خودداری کنید. فروشندگانی را انتخاب کنید که یکپارچه سازی Kubernetes را ارائه می دهند و از رابط های استاندارد مانند CSI (رابط ذخیره سازی کانتینر) پشتیبانی می کنند.
نحوه کار با شبکه ها
مدل شبکه سنتی سازمانی، که در آن تیمهای فناوری اطلاعات، توسعه شبکهای، آزمایش، تضمین کیفیت و محیطهای تولید را برای هر پروژه ایجاد میکنند، همیشه با گردش کار توسعه مستمر مطابقت ندارد. علاوه بر این، شبکه های کانتینری چندین لایه را پوشش می دهند.
В وبلاگ Magalix جمع آوری شد قوانین سطح بالایی که اجرای راه حل شبکه خوشه ای باید با آنها مطابقت داشته باشد:
پادهای برنامه ریزی شده در همان گره باید بتوانند با سایر پادها بدون استفاده از NAT (ترجمه آدرس شبکه) ارتباط برقرار کنند.
همه دیمونهای سیستم (فرایندهای پسزمینه مانند kubelet) که روی یک گره خاص اجرا میشوند، میتوانند با پادهای در حال اجرا در همان گره ارتباط برقرار کنند.
با استفاده از غلاف شبکه میزبان، باید قادر به برقراری ارتباط با سایر پادها در تمام گره های دیگر بدون استفاده از NAT باشد. لطفاً توجه داشته باشید که شبکه هاست فقط در هاست های لینوکس پشتیبانی می شود.
راه حل های شبکه باید کاملاً با اصول و سیاست های Kubernetes ادغام شوند. رهبران فناوری اطلاعات باید برای درجه بالایی از اتوماسیون شبکه تلاش کنند و ابزارهای مناسب و انعطاف کافی را در اختیار توسعه دهندگان قرار دهند.
دریابید که آیا CaaS شما (کانتینر به عنوان سرویس) یا SDN (شبکه تعریف شده نرم افزار) از شبکه های Kubernetes پشتیبانی می کند. اگر نه یا پشتیبانی کافی نیست، از رابط شبکه CNI (رابط شبکه کانتینر) برای کانتینرهای خود استفاده کنید که از عملکرد و سیاست های لازم پشتیبانی می کند.
مطمئن شوید که CaaS یا PaaS شما (پلتفرم به عنوان یک سرویس) از ایجاد کنترلکنندههای ورودی و/یا متعادلکنندههای بار پشتیبانی میکند که ترافیک ورودی را بین گرههای خوشه توزیع میکنند. اگر این گزینه نیست، با استفاده از پراکسی های شخص ثالث یا مش های سرویس کاوش کنید.
مهندسان شبکه خود را در شبکه های لینوکس و ابزارهای اتوماسیون شبکه آموزش دهید تا شکاف مهارت ها را کاهش داده و چابکی را افزایش دهید.
نحوه مدیریت چرخه عمر برنامه
برای تحویل خودکار و بدون درز برنامه، باید ارکستراسیون کانتینر را با سایر ابزارهای اتوماسیون، مانند محصولات زیرساختی به عنوان کد (IaC) تکمیل کنید. اینها شامل سرآشپز، عروسک، Ansible و Terraform هستند.
ابزارهای اتوماسیون برای ساخت و عرضه برنامه ها نیز مورد نیاز است (نگاه کنید به "ربع جادویی برای ارکستراسیون انتشار برنامه"). کانتینرها همچنین قابلیتهای توسعهپذیری مشابه آنچه در هنگام استقرار ماشینهای مجازی (VM) در دسترس هستند، ارائه میکنند. بنابراین، رهبران فناوری اطلاعات باید داشته باشند ابزارهای مدیریت چرخه حیات کانتینر.
استانداردهایی را برای تصاویر کانتینر پایه بر اساس اندازه، مجوز و انعطاف پذیری برای توسعه دهندگان برای افزودن اجزا تنظیم کنید.
از سیستم های مدیریت پیکربندی برای مدیریت چرخه حیات کانتینرهایی استفاده کنید که پیکربندی لایه ها را بر اساس تصاویر پایه واقع در مخازن عمومی یا خصوصی انجام می دهند.
پلت فرم CaaS خود را با ابزارهای اتوماسیون ادغام کنید تا کل گردش کار برنامه خود را خودکار کنید.
نحوه مدیریت کانتینرها با ارکستراتورها
عملکرد اصلی برای استقرار کانتینرها در لایه های ارکستراسیون و برنامه ریزی ارائه شده است. در طول زمانبندی، کانتینرها بر روی بهینهترین میزبانها در خوشه قرار میگیرند، همانطور که توسط الزامات لایه ارکستراسیون دیکته میشود.
Kubernetes با یک جامعه فعال به استاندارد ارکستراسیون کانتینری تبدیل شده است و توسط اکثر فروشندگان تجاری پیشرو پشتیبانی می شود.
الزامات اساسی برای کنترل های امنیتی، نظارت، مدیریت خط مشی، ماندگاری داده ها، شبکه و مدیریت چرخه حیات کانتینر را تعریف کنید.
بر اساس این الزامات، ابزاری را انتخاب کنید که به بهترین وجه با نیازها و موارد استفاده شما مطابقت دارد.
از تحقیقات گارتنر استفاده کنید (نگاه کنید به "نحوه انتخاب مدل استقرار Kubernetes") برای درک مزایا و معایب مدل های مختلف استقرار Kubernetes و انتخاب بهترین آنها برای برنامه خود.
ارائهدهندهای را انتخاب کنید که بتواند ارکستراسیون ترکیبی را برای کانتینرهای کاری در چندین محیط با یکپارچهسازی باطن سخت، برنامههای مدیریتی رایج و مدلهای قیمتگذاری ثابت ارائه دهد.
نحوه استفاده از قابلیت های ارائه دهندگان ابر
گارتنر معتقد استعلاقه به استقرار کانتینرها در ابر عمومی IaaS به دلیل در دسترس بودن پیشنهادات آماده CaaS و همچنین ادغام شدید این پیشنهادها با سایر محصولات ارائه شده توسط ارائه دهندگان ابری در حال افزایش است.
ابرهای IaaS مصرف منابع بر اساس تقاضا، مقیاس پذیری سریع و مدیریت خدمات، که به جلوگیری از نیاز به دانش عمیق زیرساخت و نگهداری آن کمک می کند. اکثر ارائه دهندگان ابر خدمات مدیریت کانتینر را ارائه می دهند و برخی گزینه های هماهنگ سازی متعددی را ارائه می دهند.
ارائه دهندگان خدمات مدیریت ابری کلیدی در جدول ارائه شده اند:
ارائه دهنده ابر نوع خدمات محصول/خدمت
علی بابا
سرویس ابری بومی
سرویس کانتینر ابری علی بابا، سرویس کانتینر ابری علی بابا برای کوبرنتیس
خدمات وب آمازون (AWS)
سرویس ابری بومی
خدمات کانتینر الاستیک آمازون (ECS)، آمازون ECS برای Kubernetes (EKS)، AWS Fargate
ازدحام غول پیکر
MSP
زیرساخت Kubernetes مدیریت شده توسط Giant Swarm
گوگل
سرویس ابری بومی
موتور کانتینر Google (GKE)
آی بی ام
سرویس ابری بومی
سرویس IBM Cloud Kubernetes
* ما آن را پنهان نمی کنیم، ما خودمان را در طول ترجمه اینجا اضافه کردیم :)
ارائهدهندگان ابر عمومی نیز قابلیتهای جدیدی را اضافه کرده و محصولات داخلی را منتشر میکنند. در آینده نزدیک، ارائه دهندگان ابر پشتیبانی از ابرهای ترکیبی و محیط های چند ابری را توسعه خواهند داد.
توانایی سازمان خود را برای استقرار و مدیریت ابزارهای مناسب ارزیابی کنید و خدمات مدیریت کانتینر ابری جایگزین را در نظر بگیرید.
نرم افزار را با دقت انتخاب کنید، در صورت امکان از منبع باز استفاده کنید.
ارائهدهندگانی را با مدلهای عملیاتی رایج در محیطهای ترکیبی انتخاب کنید که مدیریت واحد شیشهای خوشههای فدرال را ارائه میدهند، و همچنین ارائهدهندگانی که میزبانی IaaS خود را آسان میکنند.
ارزش آن را دارد که به دنبال توزیع هایی باشید که از در دسترس بودن بالا در خارج از جعبه پشتیبانی می کنند. این شامل پشتیبانی از چندین معماری اصلی، اجزای etcd بسیار در دسترس، و پشتیبان گیری و بازیابی است.
برای اطمینان از تحرک در محیطهای Kubernetes خود، بهتر است ارائهدهندگان ابری را انتخاب کنید که از طیف گستردهای از مدلهای استقرار، از داخلی گرفته تا هیبریدی و چند ابری پشتیبانی میکنند.
پیشنهادات ارائهدهنده نیز باید بر اساس سهولت راهاندازی، نصب، و ایجاد خوشه و همچنین بهروزرسانی، نظارت و عیبیابی ارزیابی شوند. نیاز اساسی پشتیبانی از بهروزرسانیهای خوشهای کاملاً خودکار با زمان توقف صفر است. راه حلی که انتخاب میکنید باید به شما امکان اجرای دستی بهروزرسانیها را نیز بدهد.
مدیریت هویت و دسترسی از هر دو منظر امنیتی و حاکمیتی مهم است. اطمینان حاصل کنید که توزیع Kubernetes که انتخاب میکنید از ادغام با ابزارهای احراز هویت و مجوزی که در داخل استفاده میکنید پشتیبانی میکند. RBAC و کنترل دسترسی ریز دانه نیز مجموعه ویژگی های مهمی هستند.
توزیعی که انتخاب میکنید باید یا دارای راهحل شبکهای تعریفشده توسط نرمافزار باشد که طیف گستردهای از نیازهای زیرساختی یا برنامههای کاربردی مختلف را پوشش میدهد، یا یکی از پیادهسازیهای شبکه مبتنی بر CNI از جمله Flannel، Calico، kube-router یا OVN را پشتیبانی میکند.
معرفی ظروف به تولید در حال تبدیل شدن به جهت اصلی است، همانطور که نتایج یک نظرسنجی انجام شده در جلسات گارتنر در مورد زیرساخت ها، عملیات و استراتژی های ابری (IOCS) در دسامبر 2018:
همانطور که می بینید، 27٪ از پاسخ دهندگان در حال حاضر از کانتینر در کار خود استفاده می کنند، و 63٪ در حال برنامه ریزی برای انجام این کار هستند.
В نظرسنجی Portworx و Aqua Security 24 درصد از پاسخ دهندگان گزارش کرده اند که بیش از نیم میلیون دلار در سال روی فناوری های کانتینری سرمایه گذاری کرده اند و 17 درصد از پاسخ دهندگان بیش از یک میلیون دلار در سال برای آنها هزینه کرده اند.