أفضل ممارسات حاوية Google السبع

ملحوظة. ترجمة.: مؤلف المقال الأصلي هو ثيو شاملي، مهندس حلول السحابة في Google. في هذا المنشور الخاص بمدونة Google Cloud، يقدم ملخصًا للدليل الأكثر تفصيلاً لشركته، والذي يسمى "أفضل الممارسات لتشغيل الحاويات" وفيه، جمع خبراء Google أفضل الممارسات لتشغيل الحاويات في سياق استخدام Google Kubernetes Engine والمزيد، وتطرقوا إلى مجموعة واسعة من المواضيع: من الأمان إلى المراقبة والتسجيل. إذن ما هي أهم ممارسات الحاويات بحسب جوجل؟

أفضل ممارسات حاوية Google السبع

محرك Kubernetes (خدمة قائمة على Kubernetes لتشغيل التطبيقات المعبأة في حاويات على Google Cloud - تقريبا. ترجمة.) هي إحدى أفضل الطرق لتشغيل أعباء العمل التي تحتاج إلى التوسع. Kubernetes سيضمن الأداء السلس لمعظم التطبيقات إذا تم وضعها في حاويات. ولكن إذا كنت تريد أن يكون تطبيقك سهل الإدارة وترغب في الاستفادة الكاملة من Kubernetes، فأنت بحاجة إلى اتباع أفضل الممارسات. سوف يقومون بتبسيط تشغيل التطبيق ومراقبته وتصحيح الأخطاء وكذلك زيادة الأمان.

في هذه المقالة، سنستعرض قائمة بالأشياء التي يجب عليك معرفتها والقيام بها لتشغيل الحاويات بشكل فعال على Kubernetes. أولئك الذين يرغبون في التعمق في التفاصيل يجب عليهم قراءة المادة أفضل الممارسات لتشغيل الحاويات، وكذلك الانتباه إلى لدينا مشاركة سابقة حول تجميع الحاويات.

1. استخدم آليات تسجيل الحاويات الأصلية

إذا كان التطبيق يعمل على مجموعة Kubernetes، فلن تكون هناك حاجة إلى الكثير من السجلات. من المحتمل أن يكون نظام التسجيل المركزي مدمجًا بالفعل في المجموعة التي تستخدمها. وفي حالة استخدام محرك Kubernetes فهذا هو المسؤول Stackdriver التسجيل. (ملحوظة. ترجمة.: وإذا كنت تستخدم تثبيت Kubernetes الخاص بك، فنوصي بإلقاء نظرة فاحصة على الحل مفتوح المصدر الخاص بنا - منزل السجل.) اجعل حياتك بسيطة واستخدم آليات تسجيل الحاويات الأصلية. اكتب السجلات إلى stdout وstderr - سيتم استلامها وحفظها وفهرستها تلقائيًا.

إذا رغبت في ذلك، يمكنك أيضًا كتابة السجلات إلى تنسيق json. سيسهل هذا الأسلوب إضافة البيانات الوصفية إليها. ومعهم، سيكون لدى Stackdriver Logging القدرة على البحث في السجلات باستخدام هذه البيانات الوصفية.

2. تأكد من أن الحاويات عديمة الحالة وغير قابلة للتغيير

لكي تعمل الحاويات بشكل صحيح في مجموعة Kubernetes، يجب أن تكون عديمة الحالة وغير قابلة للتغيير. بمجرد استيفاء هذه الشروط، يمكن لـ Kubernetes القيام بعمله، وإنشاء كيانات التطبيق وتدميرها متى وأينما دعت الحاجة.

عديم الجنسية يعني أن أي حالة (بيانات ثابتة من أي نوع) يتم تخزينها خارج الحاوية. ولهذا، اعتمادًا على الاحتياجات، يمكن استخدام أنواع مختلفة من وحدات التخزين الخارجية: سحابة التخزين, الأقراص الثابتة, رديس, سحابة SQL أو غيرها من قواعد البيانات المدارة. (ملحوظة. ترجمة.: اقرأ المزيد عن هذا في مقالتنا "عوامل تشغيل Kubernetes: كيفية تشغيل التطبيقات ذات الحالة. ")

غير قابل للتغيير يعني أن الحاوية لن يتم تعديلها خلال عمرها الافتراضي: لا توجد تحديثات أو تصحيحات أو تغييرات في التكوين. إذا كنت بحاجة إلى تحديث رمز التطبيق الخاص بك أو تطبيق تصحيح، فقم بإنشاء صورة جديدة ونشرها. يوصى بنقل تكوين الحاوية (منفذ الاستماع، وخيارات بيئة التشغيل، وما إلى ذلك) خارجيًا - إلى أسرار и خرائط التكوين. ويمكن تحديثها دون الحاجة إلى إنشاء صورة حاوية جديدة. لإنشاء خطوط أنابيب بسهولة مع تجميع الصور، يمكنك استخدامها بناء سحابة. (ملحوظة. ترجمة.: نستخدم أداة مفتوحة المصدر لهذه الأغراض DAPP.)

أفضل ممارسات حاوية Google السبع
مثال على تحديث تكوين النشر في Kubernetes باستخدام ConfigMap المثبت في البودات كتكوين

3. تجنب الحاويات المميزة

لا تقوم بتشغيل التطبيقات كجذر على خوادمك، أليس كذلك؟ إذا دخل أحد المهاجمين إلى التطبيق، فسيحصل على حق الوصول إلى الجذر. تنطبق نفس الاعتبارات على عدم تشغيل الحاويات المميزة. إذا كنت بحاجة إلى تغيير الإعدادات على المضيف، فيمكنك إعطاء الحاوية محددة قدرات باستخدام الخيار securityContext في كوبيرنيتيس. إذا كنت بحاجة إلى التغيير sysctls، لدى كوبيرنيتيس ملخص منفصل لهذا. على العموم حاول الاستفادة القصوى فيه- والحاويات الجانبية لإجراء عمليات مميزة مماثلة. لا يلزم أن تكون في متناول حركة المرور الداخلية أو الخارجية.

إذا كنت تدير مجموعة، يمكنك استخدامها نهج أمان جراب للقيود المفروضة على استخدام الحاويات المميزة.

4. تجنب التشغيل كجذر

لقد تمت مناقشة الحاويات المميزة بالفعل، ولكن سيكون من الأفضل، بالإضافة إلى ذلك، عدم تشغيل التطبيقات داخل الحاوية كجذر. إذا وجد المهاجم ثغرة أمنية عن بعد في تطبيق له حقوق الجذر التي تسمح بتنفيذ التعليمات البرمجية، وبعد ذلك يتمكن من مغادرة الحاوية من خلال ثغرة أمنية غير معروفة حتى الآن، فسوف يحصل على الجذر على المضيف.

أفضل طريقة لتجنب ذلك هي عدم تشغيل أي شيء كجذر في المقام الأول. للقيام بذلك، يمكنك استخدام التوجيه USER в Dockerfile أو runAsUser في كوبيرنيتيس. يمكن لمسؤول المجموعة أيضًا تكوين سلوك التنفيذ باستخدام نهج أمان جراب.

5. تسهيل مراقبة التطبيق

مثل التسجيل، تعد المراقبة جزءًا لا يتجزأ من إدارة التطبيقات. أحد حلول المراقبة الشائعة في مجتمع Kubernetes هو محب العمل - نظام يكتشف تلقائيًا القرون والخدمات التي تتطلب المراقبة. (ملحوظة. ترجمة.: انظر أيضا لدينا تقرير مفصل حول موضوع المراقبة باستخدام Prometheus وKubernetes.) ستاك درايفر قادر على مراقبة مجموعات Kubernetes ويتضمن نسخته الخاصة من Prometheus لمراقبة التطبيقات.

أفضل ممارسات حاوية Google السبع
لوحة تحكم Kubernetes على Stackdriver

يتوقع Prometheus أن يقوم التطبيق بإعادة توجيه المقاييس إلى نقطة نهاية HTTP. متاح لهذا مكتبات عملاء بروميثيوس. يتم استخدام نفس التنسيق بواسطة أدوات أخرى مثل التعداد المفتوح и Istio.

6. إتاحة الحالة الصحية للتطبيق

يتم دعم إدارة التطبيقات في الإنتاج من خلال قدرتها على توصيل حالتها إلى النظام بأكمله. هل التطبيق قيد التشغيل؟ هل هو بخير؟ هل أنت مستعد لتلقي حركة المرور؟ كيف يتصرف؟ الطريقة الأكثر شيوعًا لحل هذه المشكلة هي تنفيذ الفحوصات الصحية (فحوصات طبية). لدى Kubernetes نوعان: تحقيقات الحيوية والاستعداد.

لمسبار الحيوية (فحوصات الحيوية) يجب أن يحتوي التطبيق على نقطة نهاية HTTP تُرجع استجابة "200 OK" إذا كان يعمل وتم استيفاء تبعياته الأساسية. لمسبار الاستعداد (فحص جاهزية الخدمة) يجب أن يحتوي التطبيق على نقطة نهاية HTTP أخرى تُرجع استجابة "200 OK" إذا كان التطبيق في حالة صحية، وتم إكمال خطوات التهيئة وأي طلب صالح لا يؤدي إلى خطأ. لن يقوم Kubernetes بتوجيه حركة المرور إلى الحاوية إلا إذا كان التطبيق جاهزًا وفقًا لعمليات التحقق هذه. يمكن دمج نقطتي النهاية إذا لم يكن هناك فرق بين حالتي الحيوية والاستعداد.

يمكنك قراءة المزيد حول هذا الأمر في المقالة ذات الصلة من سانديب دينيش، محامي المطورين من Google: "أفضل ممارسات Kubernetes: إعداد عمليات التحقق من الصحة باستخدام تحقيقات الاستعداد والحيوية".

7. اختر نسخة الصورة الخاصة بك بعناية

تستخدم معظم الصور العامة والخاصة نظام وضع العلامات مشابهًا لذلك الموضح في أفضل الممارسات لبناء الحاويات. إذا كانت الصورة تستخدم نظام قريب من الإصدار الدلالي، فمن الضروري أن تأخذ في الاعتبار تفاصيل وضع العلامات. على سبيل المثال، العلامة latest يمكن أن ينتقل بشكل متكرر من صورة إلى أخرى - لا يمكن الاعتماد عليه إذا كنت بحاجة إلى إنشاءات وعمليات تثبيت يمكن التنبؤ بها وقابلة للتكرار.

يمكنك استخدام العلامة X.Y.Z (وهي دائمًا تقريبًا دون تغيير)، ولكن في هذه الحالة، قم بتتبع جميع التصحيحات والتحديثات للصورة. إذا كانت الصورة التي تستخدمها تحتوي على علامة X.Yهذا خيار جيد للوسط الذهبي. من خلال اختياره، تتلقى التصحيحات تلقائيًا وتعتمد في نفس الوقت على الإصدار الثابت من التطبيق.

PS من المترجم

اقرأ أيضًا على مدونتنا:

المصدر: www.habr.com

إضافة تعليق