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

(سرویس مبتنی بر Kubernetes برای اجرای برنامه های کانتینری در Google Cloud - تقریبا ترجمه) یکی از بهترین راه ها برای اجرای بارهای کاری است که نیاز به مقیاس بندی دارند. اگر کانتینری شوند، عملکرد روان اکثر برنامه ها را تضمین می کند. اما اگر میخواهید مدیریت برنامهتان آسان باشد و میخواهید از مزایای Kubernetes کامل استفاده کنید، باید بهترین شیوهها را دنبال کنید. آنها عملکرد برنامه، نظارت و اشکال زدایی آن را ساده می کنند و همچنین امنیت را افزایش می دهند.
در این مقاله، فهرستی از چیزهایی را که باید بدانید و انجام دهید تا کانتینرها را به طور موثر در Kubernetes اجرا کنید، مرور خواهیم کرد. کسانی که مایلند به جزئیات بیشتر بپردازند باید مطالب را مطالعه کنند ، و همچنین به ما توجه کنید در مورد مونتاژ ظروف
1. از مکانیسم های ثبت کانتینر بومی استفاده کنید
اگر برنامه روی یک خوشه Kubernetes اجرا می شود، برای لاگ ها چیز زیادی لازم نیست. یک سیستم ثبت مرکزی احتمالاً قبلاً در خوشه ای که استفاده می کنید ساخته شده است. در مورد استفاده از Kubernetes Engine، این مسئول است . (توجه داشته باشید. ترجمه: و اگر از نصب Kubernetes خود استفاده می کنید، توصیه می کنیم نگاهی دقیق تر به راه حل منبع باز ما داشته باشید - .) زندگی خود را ساده نگه دارید و از مکانیسم های ثبت کانتینر بومی استفاده کنید. گزارشها را در stdout و stderr بنویسید - آنها به طور خودکار دریافت، ذخیره و ایندکس میشوند.
در صورت تمایل، میتوانید گزارشهایی را نیز بنویسید . این رویکرد اضافه کردن ابرداده به آنها را آسان می کند. و با آنها، Stackdriver Logging توانایی جستجو در لاگ ها را با استفاده از این ابرداده خواهد داشت.
2. مطمئن شوید که ظروف بدون حالت و تغییر ناپذیر هستند
برای اینکه کانتینرها در یک خوشه Kubernetes به درستی کار کنند، باید بدون حالت و تغییر ناپذیر باشند. پس از برآورده شدن این شرایط، Kubernetes میتواند کار خود را انجام دهد و در زمان و مکان مورد نیاز، نهادهای برنامه را ایجاد و از بین ببرد.
بی تابعیت به این معنی است که هر حالت (داده های پایدار از هر نوع) در خارج از ظرف ذخیره می شود. برای این کار بسته به نیاز می توان از انواع مختلف حافظه خارجی استفاده کرد: , , , یا سایر پایگاه های داده مدیریت شده (توجه داشته باشید. ترجمه: بیشتر در مورد این در مقاله ما بخوانید".)
تغییر ناپذیر به این معنی است که ظرف در طول عمر خود تغییر نخواهد کرد: بدون به روز رسانی، وصله، تغییرات پیکربندی. اگر نیاز دارید کد برنامه خود را به روز کنید یا یک پچ اعمال کنید، یک تصویر جدید ایجاد کنید و آن را اجرا کنید. توصیه می شود پیکربندی کانتینر (پورت گوش دادن، گزینه های محیط زمان اجرا و غیره) را به صورت خارجی منتقل کنید - به и . آنها را می توان بدون نیاز به ساخت یک تصویر ظرف جدید به روز کرد. برای ایجاد آسان خطوط لوله با مونتاژ تصویر، می توانید استفاده کنید . (توجه داشته باشید. ترجمه: برای این منظور از ابزار منبع باز استفاده می کنیم .)

نمونه ای از به روز رسانی پیکربندی Deployment در Kubernetes با استفاده از ConfigMap که در پادها به عنوان پیکربندی نصب شده است.
3. از ظروف ممتاز خودداری کنید
شما برنامه ها را به صورت روت روی سرورهای خود اجرا نمی کنید، درست است؟ اگر مهاجمی وارد برنامه شود، دسترسی روت به دست خواهد آورد. همین ملاحظات در مورد عدم اجرای کانتینرهای ممتاز نیز اعمال می شود. اگر نیاز به تغییر تنظیمات در هاست دارید، می توانید کانتینر را مشخص کنید قابلیت های با استفاده از گزینه در Kubernetes اگر نیاز به تغییر دارید sysctls، Kubernetes دارد برای این. به طور کلی سعی کنید از آن نهایت استفاده را ببرید و کانتینرهای کناری برای انجام عملیات ممتاز مشابه. آنها نیازی به دسترسی به ترافیک داخلی یا خارجی ندارند.
اگر یک خوشه را مدیریت می کنید، می توانید استفاده کنید برای محدودیت در استفاده از کانتینرهای ممتاز.
4. از اجرا به عنوان روت خودداری کنید
قبلاً در مورد کانتینرهای ممتاز صحبت شده است، اما اگر علاوه بر این، برنامههای کاربردی را در داخل کانتینر بهعنوان روت اجرا نکنید، بهتر خواهد بود. اگر مهاجم یک آسیبپذیری راه دور در برنامهای با حقوق ریشه پیدا کند که اجازه اجرای کد را میدهد، پس از آن بتواند از طریق یک آسیبپذیری ناشناخته از کانتینر خارج شود، روی هاست ریشه پیدا میکند.
بهترین راه برای جلوگیری از این امر این است که در وهله اول چیزی را به عنوان روت اجرا نکنید. برای این کار می توانید از دایرکتیو استفاده کنید USER в Dockerfile یا runAsUser در Kubernetes مدیر خوشه همچنین می تواند رفتار اجرایی را با استفاده از آن پیکربندی کند .
5. نظارت بر برنامه را آسان کنید
مانیتورینگ نیز مانند ورود به سیستم، بخشی جدایی ناپذیر از مدیریت برنامه است. یک راه حل نظارتی محبوب در جامعه Kubernetes است - سیستمی که به طور خودکار غلاف ها و سرویس هایی را که نیاز به نظارت دارند شناسایی می کند. (توجه داشته باشید. ترجمه: ما را نیز ببینید در موضوع نظارت با استفاده از پرومتئوس و کوبرنتس.) قادر به نظارت بر خوشه های Kubernetes است و شامل نسخه خاص خود از Prometheus برای نظارت بر برنامه است.

داشبورد Kubernetes در Stackdriver
Prometheus از برنامه انتظار دارد که معیارها را به نقطه پایانی HTTP ارسال کند. برای این کار موجود است . همین قالب توسط ابزارهای دیگری مانند استفاده می شود и .
6. وضعیت سلامت برنامه را در دسترس قرار دهید
مدیریت برنامه در تولید به کمک توانایی آن در انتقال وضعیت خود به کل سیستم است. آیا برنامه اجرا می شود؟ خوبه؟ آیا برای دریافت ترافیک آماده هستید؟ او چگونه رفتار می کند؟ رایج ترین راه برای حل این مشکل، اجرای چک های سلامت است (چک سلامت). Kubernetes دو نوع دارد: .
برای کاوشگر زنده بودن (بررسی حیات) برنامه باید یک نقطه پایانی HTTP داشته باشد که اگر کاربردی باشد و وابستگی های اولیه آن برآورده شود، یک پاسخ "200 OK" را برمی گرداند. برای بررسی آمادگی (بررسی آمادگی خدمات) برنامه باید نقطه پایانی HTTP دیگری داشته باشد که اگر برنامه در وضعیت سالم باشد، مراحل اولیه تکمیل شده است و هر درخواست معتبر منجر به خطا نمی شود، پاسخ "200 OK" را برمی گرداند. Kubernetes فقط در صورتی ترافیک را به کانتینر هدایت می کند که برنامه طبق این بررسی ها آماده باشد. اگر بین حالت زنده بودن و آمادگی تفاوتی وجود نداشته باشد، دو نقطه پایانی می توانند ادغام شوند.
میتوانید در مقاله مرتبط Sandeep Dinesh، Developer Advocate از Google، در مورد این موضوع بیشتر بخوانید:'.
7. نسخه تصویر خود را با دقت انتخاب کنید
اکثر تصاویر عمومی و خصوصی از یک سیستم برچسب گذاری مشابه آنچه در توضیح داده شده است استفاده می کنند . اگر تصویر از سیستمی نزدیک به ، باید ویژگی های برچسب گذاری را در نظر گرفت. مثلا تگ کنید latest می تواند به طور مکرر از تصویری به تصویر دیگر حرکت کند - اگر به ساخت ها و نصب های قابل پیش بینی و تکرار نیاز دارید نمی توان به آن اعتماد کرد.
می توانید از تگ استفاده کنید X.Y.Z (تقریباً همیشه بدون تغییر هستند)، اما در این مورد، همه وصلهها و بهروزرسانیهای تصویر را پیگیری کنید. اگر تصویری که استفاده می کنید دارای برچسب است X.Y، این گزینه خوبی برای میانگین طلایی است. با انتخاب آن، به طور خودکار وصله ها را دریافت می کنید و در عین حال به نسخه پایدار برنامه تکیه می کنید.
PS از مترجم
در وبلاگ ما نیز بخوانید:
- «"؛
- «"؛
- «"؛
- «» (بررسی و گزارش تصویری);
- «» (بررسی و گزارش تصویری);
- «» (بررسی و گزارش تصویری);
- «» (بررسی و گزارش تصویری);
- «'.
منبع: www.habr.com
