PuppetConf 2016. Kubernetes لمسؤولي النظام. الجزء 3

PuppetConf 2016. Kubernetes لمسؤولي النظام. الجزء 1 من
PuppetConf 2016. Kubernetes لمسؤولي النظام. الجزء 2

نأخذ تطبيق Lobsters وننشئ صورة جديدة بمتطلبات جديدة. أولاً ، أدخل أمر النشر $ kubectl application –floyments / lobsters.yaml وأرسل التطبيق إلى المجموعة ، التي يجب أن تقوم بتحديثات التحديثات الدورية لكل حالة من مثيلات التطبيق المتاحة وفقًا لسياسة التحديث. أولاً ، يتأكد النظام من تشغيل كل مثيل ، ومن ثم تدميره في المجموعة التالية من الحاويات.



دعونا نرى كيف عملت. للقيام بذلك ، نعيد تحميل الموقع ، والآن عدم وجود نقاط بيضاء سيجعل المسوق سعيدًا.



بصفتك مشرفًا للنظام ، يمكنك القول: "ليس هناك HTTPS هنا ، فهذه المواقع يسهل اختراقها ، إنها خطيرة!" كيف يمكن حل هذه المشكلة؟ أعتقد أن Kubernetes في حلها يمكن أن يعمل كإطار يسمح لمسؤول النظام بتنفيذ نهج مبتكر للعمل. سيكون من الرائع أن أقول بشكل صريح: "أريد الحصول على شهادة Let's Encrypt لهذا الموقع ، لكنني لا أريد إعادة نشر هذه الحاوية." أريد القيام بذلك في حدود قدراتي ، دون اللجوء إلى فريق تطوير التطبيقات للحصول على المساعدة. يسمح Kubernetes بذلك ، لأنه يدعم الامتدادات المخصصة.

لقد تحدثت عن kubectl و pods وعمليات النشر والخدمات ، ولكن لدينا أيضًا أنواع مخصصة - أنواع موارد مخصصة يمكن الحصول عليها من Puppet. في Puppet ، يمكننا تحديد أنواع جديدة ، حتى نتمكن من استخدام هذا النظام لعملنا.
دعونا نرى كيف يبدو في Kubernetes. بادئ ذي بدء ، نحن بحاجة إلى ملحق للشهادات ، هكذا تبدو. هنا لدينا مساحة اسم hightower.com الخاصة بنا ، حيث يوجد الكائن المعتمد.



نقوم بإنشاء ملحق جديد في Kubernetes باستخدام الأمر $ kubectl إنشاء –f extension / Certificate.yaml ، ويتم إنشاء التخزين تلقائيًا في الواجهة الخلفية وتتم إدارة هذه الحالة.



يتطلب ظهور هذا الكائن الجديد مني استخدام أداة جديدة تتعقب التغييرات وتتخذ إجراءً على كائن الشهادة. أي أن هذه الأداة في الخلفية يجب أن تتفاعل مع Let's Encrypt والحصول على شهادة صالحة. لهذا أستخدم السر - سأوضح بسرعة كيف يتم ذلك.

لذا ، نحتاج إلى قسم فرعي جديد ، وسأوضح الفرق مقارنةً بالرمز السابق. أقوم بإضافة nginx إلى حاوية موجودة ، لذا لا نحتاج إلى الاتصال بفريق التطوير. نستمر في استخدام HTTPS ببساطة عن طريق وضع الحاوية في الجزء العلوي من الموقد الموجود.



تقبل هذه الحاوية حركة مرور HTTPS وتحتاج إلى ملف تهيئة للتفاعل مع الواجهة الخلفية. أحتاج أيضًا إلى بعض الشهادات التي يتم تنزيلها من نظام الملفات ، لذلك لا تعمل متغيرات البيئة هنا. لم أكتب nginx ، لذلك لا يمكنني حمله على القيام بذلك.



لذا أضفت هذه الحاوية داخل الموقد مباشرة وانتقل إلى سرّين.



السر الأول والأهم هو شهادة TLS ، والتي يجب أن تأتي من Let's Encrypt. لن أقوم بالإبلاغ عن دعنا نشفر إلى طلبي ، بل أبلغه إلى نظامي. أريد التحكم في هذا التجريد. لذلك علي الآن إنشاء ملف تكوين لـ nginx. هذا هو ملف التكوين الرئيسي الذي يبدو هكذا.

تم تحديد المنفذ 443 هنا وتم تمكين SSL ، الذي يبحث عن هذين الملفين في نظام الملفات ، ويلتقط حركة المرور ويرسلها إلى المضيف المحلي 127.0.0.1 {000.



هذا هو بالضبط ما يستمع إليه طلبي. الآن سأقوم بإنشاء configmap - خريطة التكوين nginx باستخدام الأمر التالي.



الآن ، باستخدام الأمر $ kubectl get configmaps ، أضع ملف configmap "nginx" على النظام بنفس اسم القرص.



بعد ذلك ، تحتاج إلى إنشاء سر ، أذكرك مرة أخرى - أريد أتمتة كل شيء ، ولا أريد التدخل في عملية الحصول على الشهادات. للقيام بذلك ، أقوم بنشر أداة تسمى "kube-cert-manager" ، وهذه هي النتيجة.



نحن نحاول الحصول على شهادة Let's Encrypt صالحة ، والتي سيثق بها متصفحي ، وإدراجها في الواجهة الخلفية كسرية. لذلك ، لن يكون هناك فرق في موقفي في حقيقة أننا استكملنا محتوياته. إذا كنت تتذكر ، يتم كل هذا عن طريق إنشاء نوع مخصص في Puppet.

ربما تكون هذه فكرة سيئة ، ولكن الآن سأحاول بدء تشغيل وحدة التحكم ، والتي ستعمل في الخلفية. نحن لا نجمع ، ولا ننشئ مزودين ، فهذا البرنامج يعمل فقط في الخلفية ويراقب التغييرات. بمجرد ظهور كائن الشهادة ، فإنه يستلمه باستخدام Let's Encrypt ويدرجه في النظام في الوقت الفعلي دون أي تأخير. لذا ، استخدم الأمر التالي.



يحتوي هذا الشيء أيضًا على مساحة تخزين ، حتى نتمكن من حفظ كل ما نحتاجه. يستغرق بضع ثوانٍ حتى يبدأ مدير شهادة kube-cert-manager العمل.



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



هناك عنوان بريد إلكتروني ومعلومات أخرى ضرورية لـ Let's Encrypt لإعطائي شهادة صالحة. لنرسل لي Encrypt رمزًا مميزًا للتبادل لمعرفة ما إذا كنت أملك هذا النطاق حقًا وسأحتاج إلى تطبيق هذا الرمز المميز على DNS الخاص بي في Google Cloud. إذا نجح الشيك ، فسوف يعطونني شهادة حقيقية ، سأقوم بإدراجها في نظام الملفات الخاص بي. دعونا نرى كيف يعمل هذا بإدخال الأمر $ kubectl get pods.



كما ترى ، لا يزال مدير الشهادة يعمل. دعونا نرى المعلومات التفصيلية حول هذه العملية باستخدام $ kubectl يصف الأمر pods kube-cert-manager ، وإدخال اسم الحاوية من السطر الأول من التعليمات البرمجية.



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

أدخل الأمر kubectl إنشاء –f الشهادات / lobsters.yaml وأحصل على النتيجة التالية.



بعد ذلك ، أستخدم أمرًا يتيح لك عرض سجلات العديد من الحاويات. سأسلط الضوء على ما يتعلق وجوهي.



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



لذا ، تلقيت رمزًا مميزًا من Let's Encrypt والآن أتحقق من توزيع سجل DNS هذا على جميع الخوادم المعتمدة قبل أن أخبر Let's Encrypt للتحقق من إدخال النص هذا في نطاقي.



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

للتأكد من أن كل شيء يعمل بشكل صحيح ، أدخل الأمر $ kubectl get secrets ونرى سرًا واحدًا لـ lobsters.hightowerlabs.com.



الآن أستخدم الأمر $ kubectl حذف أسرار lobsters.hightowerlabs.com ، لأنه نظام تعريفي ، لا نحذف كائن الشهادة ، ولكن نتخلص من السر المرتبط به الموجود داخل Kubernetes. نتيجة لذلك ، يجب أن نتأكد من أنه عند حذف هذا العنصر ، سيعيد النظام شهادة Let's Encrypt نفسها. هذا مشابه جدًا لما نقوم به في Puppet ، هنا فقط يحدث عبر الإنترنت.

بعد التأكد من أن كل شيء يعمل ، نقوم بإعادة نشر تطبيق nginx الخاص بنا المسمى "lobsters-secure" ، والذي سيضمن أمان المجال الجديد. صورته شبيهة بالإصدار السابق ، لكن الفرق هو أننا وضعنا nginx هنا. تلتقط Nginx رابط الأسرار ، ثم تقوم Kubernetes بإدراجه في نظام الملفات ، ونتيجة لذلك أحصل على شهادة صالحة لمجال معين.

للقيام بذلك ، أقوم بإدخال الأمر $ kubectl application –floyments / lobsters-secure.yaml باستخدام نفس الاسم بحيث يستبدل هذا الأمر الحالة الحالية. بعد ذلك ، يتم استخدام الأمر $ kubectl get pods ، مما يدل على أن التحديث المتداول يحدث هنا الآن ، حيث تغيرت تعريفاتنا.

بعد اكتمال التحديث ، من الواضح أنه تم استخدام التعريف الجديد لهذا التطبيق. أريد أن أتأكد من أن الشهادة صالحة لاسم DNS الخاص بنا ، والذي أدخل له الأمر $ kubectl get svc ونسخ عنوان IP لموقع lobsters.



بالانتقال إلى علامة تبويب Google Cloud ، يمكنك أن ترى أن هذا العنوان يطابق العنوان المقابل لاسم النطاق lobsters.hightowerlabs.com. الآن ، إذا قمت بكتابة lobsters.hightowerlabs.com في شريط عنوان المتصفح الخاص بك ، يمكنك أن ترى أن لدينا شهادة صالحة.



شكرًا لك ، هذا كل ما أردت قوله في تقرير Kubernetes for System Admins.


القليل من الدعاية :)


أشكركم على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية لأصدقائك VPS القائم على السحابة للمطورين من $ 4.99 ، وهو نظير فريد من نوعه لخوادم مستوى الدخول التي اخترعناها لك: الحقيقة الكاملة عن VPS (KVM) E5-2697 v3 (6 نوى) 10GB DDR4 480GB SSD 1Gbps من $ 19 أو كيفية تقسيم الخادم؟ (تتوفر الخيارات مع RAID1 و RAID10 ، حتى 24 مركزًا و 40 جيجابايت DDR4).

Dell R730xd أرخص مرتين في مركز بيانات Equinix Tier IV في أمستردام؟ فقط لدينا 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV من 199 دولارًا في هولندا!Dell R420 - 2x E5-2430 2.2 جيجا هرتز 6C 128 جيجا بايت DDR3 2x960GB SSD 1Gbps 100TB - من 99 دولار! اقرأ عن كيفية بناء مبنى البنية التحتية الفئة c باستخدام خوادم Dell R730xd E5-2650 v4 بتكلفة 9000 يورو مقابل سنت واحد؟

All Articles