7 بهترین روش برای استفاده از کانتینر از نظر گوگل

توجه داشته باشید. ترجمه: نویسنده مقاله اصلی Théo Chamley، معمار Google Cloud Solutions است. در این پست برای وبلاگ Google Cloud، او خلاصه ای از راهنمای دقیق تر شرکت خود را به نام "بهترین روش ها برای کارکرد ظروف" در آن، کارشناسان Google بهترین شیوه‌ها را برای کارکرد کانتینرها در زمینه استفاده از موتور Google Kubernetes و موارد دیگر جمع‌آوری کردند و طیف گسترده‌ای از موضوعات را لمس کردند: از امنیت گرفته تا نظارت و ثبت گزارش. بنابراین مهم‌ترین روش‌های کانتینری از نظر گوگل چیست؟

7 بهترین روش برای استفاده از کانتینر از نظر گوگل

موتور Kubernetes (سرویس مبتنی بر Kubernetes برای اجرای برنامه های کانتینری در Google Cloud - تقریبا ترجمه) یکی از بهترین راه ها برای اجرای بارهای کاری است که نیاز به مقیاس بندی دارند. کوبرنیتس اگر کانتینری شوند، عملکرد روان اکثر برنامه ها را تضمین می کند. اما اگر می‌خواهید مدیریت برنامه‌تان آسان باشد و می‌خواهید از مزایای Kubernetes کامل استفاده کنید، باید بهترین شیوه‌ها را دنبال کنید. آنها عملکرد برنامه، نظارت و اشکال زدایی آن را ساده می کنند و همچنین امنیت را افزایش می دهند.

در این مقاله، فهرستی از چیزهایی را که باید بدانید و انجام دهید تا کانتینرها را به طور موثر در Kubernetes اجرا کنید، مرور خواهیم کرد. کسانی که مایلند به جزئیات بیشتر بپردازند باید مطالب را مطالعه کنند بهترین روش ها برای کارکرد ظروف، و همچنین به ما توجه کنید پست قبلی در مورد مونتاژ ظروف

1. از مکانیسم های ثبت کانتینر بومی استفاده کنید

اگر برنامه روی یک خوشه Kubernetes اجرا می شود، برای لاگ ها چیز زیادی لازم نیست. یک سیستم ثبت مرکزی احتمالاً قبلاً در خوشه ای که استفاده می کنید ساخته شده است. در مورد استفاده از Kubernetes Engine، این مسئول است Stackdriver Logging. (توجه داشته باشید. ترجمه: و اگر از نصب Kubernetes خود استفاده می کنید، توصیه می کنیم نگاهی دقیق تر به راه حل منبع باز ما داشته باشید - خانه چوبی.) زندگی خود را ساده نگه دارید و از مکانیسم های ثبت کانتینر بومی استفاده کنید. گزارش‌ها را در stdout و stderr بنویسید - آنها به طور خودکار دریافت، ذخیره و ایندکس می‌شوند.

در صورت تمایل، می‌توانید گزارش‌هایی را نیز بنویسید فرمت JSON. این رویکرد اضافه کردن ابرداده به آنها را آسان می کند. و با آنها، Stackdriver Logging توانایی جستجو در لاگ ها را با استفاده از این ابرداده خواهد داشت.

2. مطمئن شوید که ظروف بدون حالت و تغییر ناپذیر هستند

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

بی تابعیت به این معنی است که هر حالت (داده های پایدار از هر نوع) در خارج از ظرف ذخیره می شود. برای این کار بسته به نیاز می توان از انواع مختلف حافظه خارجی استفاده کرد: فضای ذخیره ابری, دیسک های ماندگار, Redis, ابر SQL یا سایر پایگاه های داده مدیریت شده (توجه داشته باشید. ترجمه: بیشتر در مورد این در مقاله ما بخوانیداپراتورهای Kubernetes: نحوه اجرای برنامه های حالت دار".)

تغییر ناپذیر به این معنی است که ظرف در طول عمر خود تغییر نخواهد کرد: بدون به روز رسانی، وصله، تغییرات پیکربندی. اگر نیاز دارید کد برنامه خود را به روز کنید یا یک پچ اعمال کنید، یک تصویر جدید ایجاد کنید و آن را اجرا کنید. توصیه می شود پیکربندی کانتینر (پورت گوش دادن، گزینه های محیط زمان اجرا و غیره) را به صورت خارجی منتقل کنید - به اسرار и ConfigMaps. آنها را می توان بدون نیاز به ساخت یک تصویر ظرف جدید به روز کرد. برای ایجاد آسان خطوط لوله با مونتاژ تصویر، می توانید استفاده کنید ساخت ابر. (توجه داشته باشید. ترجمه: برای این منظور از ابزار منبع باز استفاده می کنیم dapp.)

7 بهترین روش برای استفاده از کانتینر از نظر گوگل
نمونه ای از به روز رسانی پیکربندی Deployment در Kubernetes با استفاده از ConfigMap که در پادها به عنوان پیکربندی نصب شده است.

3. از ظروف ممتاز خودداری کنید

شما برنامه ها را به صورت روت روی سرورهای خود اجرا نمی کنید، درست است؟ اگر مهاجمی وارد برنامه شود، دسترسی روت به دست خواهد آورد. همین ملاحظات در مورد عدم اجرای کانتینرهای ممتاز نیز اعمال می شود. اگر نیاز به تغییر تنظیمات در هاست دارید، می توانید کانتینر را مشخص کنید قابلیت های با استفاده از گزینه securityContext در Kubernetes اگر نیاز به تغییر دارید sysctls، Kubernetes دارد چکیده جدا برای این. به طور کلی سعی کنید از آن نهایت استفاده را ببرید شروع- و کانتینرهای کناری برای انجام عملیات ممتاز مشابه. آنها نیازی به دسترسی به ترافیک داخلی یا خارجی ندارند.

اگر یک خوشه را مدیریت می کنید، می توانید استفاده کنید سیاست امنیتی پاد برای محدودیت در استفاده از کانتینرهای ممتاز.

4. از اجرا به عنوان روت خودداری کنید

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

بهترین راه برای جلوگیری از این امر این است که در وهله اول چیزی را به عنوان روت اجرا نکنید. برای این کار می توانید از دایرکتیو استفاده کنید USER в Dockerfile یا runAsUser در Kubernetes مدیر خوشه همچنین می تواند رفتار اجرایی را با استفاده از آن پیکربندی کند سیاست امنیتی پاد.

5. نظارت بر برنامه را آسان کنید

مانیتورینگ نیز مانند ورود به سیستم، بخشی جدایی ناپذیر از مدیریت برنامه است. یک راه حل نظارتی محبوب در جامعه Kubernetes است تیتان فرزند پاپتوس - سیستمی که به طور خودکار غلاف ها و سرویس هایی را که نیاز به نظارت دارند شناسایی می کند. (توجه داشته باشید. ترجمه: ما را نیز ببینید گزارش تفصیلی در موضوع نظارت با استفاده از پرومتئوس و کوبرنتس.) Stackdriver قادر به نظارت بر خوشه های Kubernetes است و شامل نسخه خاص خود از Prometheus برای نظارت بر برنامه است.

7 بهترین روش برای استفاده از کانتینر از نظر گوگل
داشبورد Kubernetes در Stackdriver

Prometheus از برنامه انتظار دارد که معیارها را به نقطه پایانی HTTP ارسال کند. برای این کار موجود است کتابخانه های مشتری پرومتئوس. همین قالب توسط ابزارهای دیگری مانند استفاده می شود سرشماری باز и ایستیو.

6. وضعیت سلامت برنامه را در دسترس قرار دهید

مدیریت برنامه در تولید به کمک توانایی آن در انتقال وضعیت خود به کل سیستم است. آیا برنامه اجرا می شود؟ خوبه؟ آیا برای دریافت ترافیک آماده هستید؟ او چگونه رفتار می کند؟ رایج ترین راه برای حل این مشکل، اجرای چک های سلامت است (چک سلامت). Kubernetes دو نوع دارد: کاوشگرهای سرزندگی و آمادگی.

برای کاوشگر زنده بودن (بررسی حیات) برنامه باید یک نقطه پایانی HTTP داشته باشد که اگر کاربردی باشد و وابستگی های اولیه آن برآورده شود، یک پاسخ "200 OK" را برمی گرداند. برای بررسی آمادگی (بررسی آمادگی خدمات) برنامه باید نقطه پایانی HTTP دیگری داشته باشد که اگر برنامه در وضعیت سالم باشد، مراحل اولیه تکمیل شده است و هر درخواست معتبر منجر به خطا نمی شود، پاسخ "200 OK" را برمی گرداند. Kubernetes فقط در صورتی ترافیک را به کانتینر هدایت می کند که برنامه طبق این بررسی ها آماده باشد. اگر بین حالت زنده بودن و آمادگی تفاوتی وجود نداشته باشد، دو نقطه پایانی می توانند ادغام شوند.

می‌توانید در مقاله مرتبط Sandeep Dinesh، Developer Advocate از Google، در مورد این موضوع بیشتر بخوانید:بهترین شیوه‌های Kubernetes: راه‌اندازی بررسی‌های سلامت با کاوشگرهای آمادگی و سرزندگی'.

7. نسخه تصویر خود را با دقت انتخاب کنید

اکثر تصاویر عمومی و خصوصی از یک سیستم برچسب گذاری مشابه آنچه در توضیح داده شده است استفاده می کنند بهترین روش ها برای ساخت کانتینر. اگر تصویر از سیستمی نزدیک به نسخه سازی معنایی، باید ویژگی های برچسب گذاری را در نظر گرفت. مثلا تگ کنید latest می تواند به طور مکرر از تصویری به تصویر دیگر حرکت کند - اگر به ساخت ها و نصب های قابل پیش بینی و تکرار نیاز دارید نمی توان به آن اعتماد کرد.

می توانید از تگ استفاده کنید X.Y.Z (تقریباً همیشه بدون تغییر هستند)، اما در این مورد، همه وصله‌ها و به‌روزرسانی‌های تصویر را پیگیری کنید. اگر تصویری که استفاده می کنید دارای برچسب است X.Y، این گزینه خوبی برای میانگین طلایی است. با انتخاب آن، به طور خودکار وصله ها را دریافت می کنید و در عین حال به نسخه پایدار برنامه تکیه می کنید.

PS از مترجم

در وبلاگ ما نیز بخوانید:

منبع: www.habr.com

اضافه کردن نظر