كتاب "أنماط Kubernetes: أنماط تطوير التطبيقات السحابية الأصلية"

صورةمرحبا ، هابروجيتلي!

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

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

مقتطفات. النمط الجانبي


نمط Sidecar (مقطورة) هو تعريف الحاوية التي توسع قدرات الحاوية الحالية دون تغييرها. هذا هو أحد أنماط الحاويات الأساسية التي تسمح لك بإنشاء حاويات عالية التخصص تعمل بشكل وثيق مع بعضها البعض. ستتعلم في هذا الفصل كل ما يتعلق بفكرة نمط Sidecar (مقدمة). وفي الفصلين 16 و 17 ، ستتعرف على المتغيرات المتخصصة لهذا النمط - أنماط المحول والسفير ، على التوالي.

مهمة


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

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

القرار


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

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

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

الإدراج 15.1. تنفيذ نمط Sidecar (مقدمة)

apiVersion: v1
kind: Pod
metadata:
    name: web-app
spec:
    containers:
    - name: app
      image: docker.io/centos/httpd ❶
      ports:
      - containerPort: 80
      volumeMounts:
      - mountPath: /var/www/html ❸
      name: git
    - name: poll
      image: axeclbr/git ❷
      volumeMounts:
      - mountPath: /var/lib/data ❸
        name: git
      env:
      - name: GIT_REPO
         value: https://github.com/mdn/beginner-html-site-scripted
      command:
      - "sh"
      - "-c"
      - "git clone $(GIT_REPO) . && watch -n 600 git pull"
      workingDir: /var/lib/data
volumes:
- emptyDir: {}
      name: git

(1) حاوية التطبيق الرئيسية التي تخدم الملفات عبر HTTP.

(2) حاوية مساعدة (مقطورة) تعمل بالتوازي وتتلقى بيانات من خادم Git.

(3) مجلد مشترك لتبادل البيانات بين الحاويات الرئيسية والثانوية.

يوضح هذا المثال كيف تضيف حاوية المزامنة مع Git المحتوى ليتم عرضه بواسطة خادم HTTP ويبقيه محدثًا. يمكنك أيضًا أن تقول أن كلتا الحاويتين تعملان بتعاون وثيق وهما على نفس القدر من الأهمية ، ولكن نمط Sidecar (مقطورة) يفترض وجود حاوية رئيسية (رئيسية) ومساعدة توسع السلوك الجماعي. عادة ما يتم سرد الحاوية الرئيسية أولاً في قائمة الحاويات ويمثل الحاوية الافتراضية (التي يتم إطلاقها بواسطة الأمر kubectl exec ، على سبيل المثال).

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

صورة

تفسير


لقد قيل بالفعل أعلاه أن صور الحاوية مشابهة للفئات ، والحاويات تشبه الكائنات في البرمجة الموجهة للكائنات (OOP). استمرارًا لهذا التشبيه ، يمكننا مقارنة توسيع إمكانات الحاوية بالميراث في OOP ، والعمل المشترك لعدة حاويات في الموقد مع استقبال تركيبة في OOP. يسمح هذان الأسلوبان بإعادة استخدام الكود ، لكن الميراث يحدد علاقة أوثق ويمثل العلاقة "بين" الحاويات.

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

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

»يمكن العثور على مزيد من المعلومات حول الكتاب على موقع الناشر على الويب
» المحتويات
» مقتطفات

لـ Khabrozhiteley خصم 25 ٪ على القسيمة - Kubernetes

عند دفع النسخة الورقية من الكتاب ، يتم إرسال كتاب إلكتروني عبر البريد الإلكتروني.

All Articles