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

اكتسبت سحابة IBM وظائف على مدى السنوات العشر الماضية. بدأ كل شيء ببناء بنية تحتية مشتركة لخدمة الشركات الكبيرة ، ثم مع الأجهزة الافتراضية والفيزيائية القائمة على مراكز بيانات SoftLayer ، ثم كان هناك خمس سنوات من بناء PaaS (على أساس أوقات تشغيل Cloud Foundry) وتطور عدد كبير من الخدمات. شارك فريق التطوير في موسكو أيضًا في إنشاء جزء من الخدمات. ولكن اليوم لا يتعلق الأمر بالخدمات ، ولكن حول ماهية kubernetes المدارة و openhift المدارة وكيف يعمل في سحابة IBM. لا يمكن إخبار الكثير من التفاصيل ، لأن المشروع داخلي ، لكن من الممكن فتح ستارة معينة.
ما هو kubernetes وكيف يتم إدارة kubernetes / openshift مختلفة عن التثبيت المحلي
تم وضع Kubernetes في البداية كمنصة مفتوحة المصدر لإدارة التطبيقات والخدمات في حاويات. المهام الرئيسية لل kubernetes هي (سأترك دون ترجمة ، حتى لا كسر المصطلحات):
- اكتشاف الخدمة وموازنة الحمل
- تزامن التخزين
- rollouts و rollbacks الآلي
- بن التلقائي التعبئة
- الشفاء الذاتي
- إدارة السرية والتكوين
بشكل عام ، تقوم kubernetes بعمل ممتاز في كل هذه المهام. من ناحية أخرى ، بدأ وضع kubernetes كقاعدة بيانات لتخزين تكوينات التطبيق أو كأداة API لإدارة مكوناتك (ذات الصلة بشكل خاص في سياق تطوير المشغلين).
تتمثل إحدى ميزات kubernetes في أنه يمكنك تشغيل التطبيقات في حاويات على موارد الحوسبة والسحابة. في حالة الموارد السحابية - يوفر العديد من موفري السحابة القدرة على استخدام موارد الحوسبة لتشغيل التطبيقات والقيام بالإدارة الكاملة للمجموعات:
- نشر الكتلة
- تحديد توافر الشبكة والتوزيع
- تثبيت التحديثات و fixpacks
- تكوين كتلة لزيادة التسامح مع الخطأ والأمان (أكثر في المقال)
- ...
إذا كنت تعمل مع kubernetes مدار في أي سحابة ، فأنت بالطبع محدودة في عدد من الإجراءات. على سبيل المثال ، عادةً ما يتم دعم العديد من إصدارات kubernetes ، ومن غير المحتمل أن تتمكن من استخدام إصدارات kubernetes التي لم يتم دعمها لفترة طويلة. الميزة الأساسية هي بلا شك أنه ليس فريقك هو الذي يدير المجموعات ، مما يقلل من الوقت اللازم لتطوير التطبيقات. بالطبع ، لا يمكن استخدام kubernetes المدارة و openhift المدارة في جميع المؤسسات ولأي نوع من التطبيقات ، ولكن هناك مجموعة واسعة من المهام التي تعد كبيرة بالنسبة للحوسبة في السحب.
سحابة العمارة
داخل الشركة ، يطلق على مشروع IBM Managed Kubernetes ومشروع IBM Managed OpenShift مشروع Armada. بدأ المشروع بمركز بيانات واحد ، لكنه الآن متوفر في 60 مركز بيانات سحابية في 6 مناطق مختلفة. من أجل وصف كيفية تحجيم السحابة ، سأستخدم مصطلحين: المحاور والمتكلم. يعتمد مشروع أرمادا بأكمله على kubernetes ، مما يعني أن مجموعاته يتم التحكم فيها بواسطة لوحة تحكم تعمل على kubernetes. بمجرد أن لوحة التحكم لا تملك الموارد الكافية لإدارة المجموعة الضرورية من المجموعات ، فإنها تنشر سماعات إضافية. ستظل هذه المتحدثة مسؤولة عن إدارة المجموعات في منطقة معينة.
تتكون لوحة التحكم من أكثر من 1500 عملية نشر وتقع في 60 مجموعة من مجموعات kubernetes. كل هذا ضروري من أجل إدارة أكثر من 15000 مجموعة من عملائنا (لا يشمل ذلك المجموعات المجانية التي تم اختبارها والتي تم نشرها على نفس العامل).
لإنشاء IKS و Managed OpenShift ، استخدم الفريق نموذج OpenSource داخليًا. يمكن لمعظم موظفي IBM الوصول إلى معظم مستودعات أرمادا ويمكنهم إنشاء مستندات PR خاصة بهم لدمج خدماتهم. كجزء من عمل الخدمة ، تم تطوير عدد كبير من أدوات CI / CD ، والتي تم دمجها في مشروع Razee. في صيف عام 2019 ، قامت IBM بتحميل جميع إنجازات مشروع Razee إلى OpenSource.
بشكل عام ، هندسة IKS و Managed OpenShift هي كما يلي:

عندما تعمل مع IBM Cloud CLI وتطلب إنشاء كتلة ، في الواقع تذهب طلباتك إلى Armada API ، ثم تحدد لوحة التحكم توافر المتحدث وتبدأ في إنشاء العدد المطلوب من العمال في المناطق التي تحددها. يتم توفير البنية التحتية بأكملها للعاملين باستخدام IBM Cloud Infrastructure (المعروف أيضًا باسم Soflayer) ، في الواقع ، يتم استخدام نفس المثيلات الافتراضية والمضيفات المعدنية العارية ، والتي تتوفر في قسم "Compute" من كتالوج الخدمات السحابية. بعد فترة ، ستتلقى رمزًا مميزًا للتفويض ويمكنك البدء في نشر تطبيقاتك.
نظرًا لاختلاف OpenShift و Kubernetes في قدراتهما وخريطة طريق التطوير الخاصة بهما ، فإن رصة التكنولوجيا الأساسية تختلف في المقابل:

كيف يتم ضمان الأمن؟
يمكن أن نتحدث عن مشروع أرمادا لفترة طويلة للغاية سواء من الناحية الفنية أو من الناحية التسويقية. لكن أولاً وقبل كل شيء ، عند اختيار موفر خدمة السحاب الذي يوفر kubernetes المدارة ، يسأل الجميع نفس السؤال - كيف يضمن الموفر ويضمن الأمان والتسامح مع الخطأ في طلباتي؟ .. من المستحيل تقييم الأداء والراحة ومستوى دعم الخدمة دون تلقي إجابة على هذا السؤال. كمدير تطوير ، خلال تطوير أي مشروع كبير ، أرسم خريطة للتهديدات. من الضروري إدخال جميع خيارات القرصنة الممكنة وتأمين البنية الأساسية والتطبيقات والبيانات الخاصة بك. للتحدث عن أمان نظام kubernetes ، يجب أن تصف النقاط التالية:
- أمن البنية التحتية نفسها ومراكز البيانات
- الوصول إلى Kubernetes API وغيرها
- سيد الأمن والعقد العمال
- أمن الشبكة
- أمن التخزين المستمر
- رصد وتسجيل
- أمن الحاويات وصور الحاويات
الآن ، أول الأشياء أولاً:
أمن البنية التحتية نفسها ومراكز البيانات
بغض النظر عن الطريقة التي نرغب في فصلها تمامًا عن الأجهزة وصيانة حشوة الأجهزة لأنظمة تكنولوجيا المعلومات ، في الواقع ، نحن بحاجة إلى التأكد من أن مزود الخدمة سيغطي الجزء الخلفي تمامًا ، ونؤكد ذلك موثقًا بمساعدة الشهادات الصناعية والصناعية ، وإذا لزم الأمر بمساعدة التقارير على إجراء عمليات التدقيق. تم أخذ هذا الجانب في الاعتبار من قبل فريق IBM بكل جدية ممكنة وتم جمع جميع المعلومات اللازمة وتقديمها في مكان واحد ( https://www.ibm.com/cloud/compliance )
وصول Kubernetes API وغيرها
من أجل الوصول إلى واجهة برمجة تطبيقات Kubernetes والبيانات في etcd ، يجب أن تمر بثلاثة مستويات من التفويض. يرتبط كل رمز مميز للتخويل الصادر برموز المصادقة وبيانات تخويل الكتلة (RBAC) ووحدة التحكم في القبول (انظر الشكل أدناه).

نظرًا لتكوين المعالجات مركزيًا باستخدام مكبرات الصوت ، فهذا يعني أنه لا يمكنك تغيير تكوين المعالج ، حتى أن المعالجات نفسها ليست موجودة حتى في حسابك السحابي ولا تكون مرئية في قائمة أجهزتك (على عكس العمال). لا يمكن إجراء جميع تغييرات التكوين إلا ضمن إمكانيات معينة. من ناحية ، هذا قيد ، لكن بسبب هذا القيد ، لن يتمكن المهاجمون أيضًا من الوصول إلى المعالجات الخاصة بك ، بالإضافة إلى عدم وجود عامل خطأ بشري ، ولا يوجد خطر من استخدام إصدارات غير متوافقة من مكونات kubernetes ، ويتم تسهيل عملية إدارة الكتلة بالكامل. بشكل عام ، يمكننا القول أن IBM مسؤولة عن ضمان التسامح مع الخطأ والتكوين الصحيح لبرنامج kubernetes master. إذا كان مشروعك يحتوي على متطلبات صارمة لاستخدام إصدارات معينة من المكونات ، فلن أطلع في مكانك على kubernetes المدارة على الإطلاق وأستخدم التثبيت الخاص بي.
سيد الأمن والعقد العمال
من أجل ضمان سلامة العمال وسيد العقد ، نستخدم أنفاق VPN المشفرة بين عقد الحوسبة ، وتتمتع المستخدم بفرصة طلب عامل ذي محركات أقراص صلبة مشفرة. كما نستخدم Application Armor لتقييد وصول التطبيق إلى الموارد على مستوى نظام التشغيل. يعد Application Armor امتدادًا لنواة Linux لتكوين الوصول إلى الموارد لكل تطبيق.
عند إنشاء مجموعة ، بعد اختيار التكوين الذي يناسبك ، سيتم إنشاء خوادم افتراضية أو بارميتال بالنسبة لك ، حيث سيتم تثبيت مكونات عمل عمالك. يمكن للمستخدم الوصول إلى نظام التشغيل الخاص بالعامل ، ولكن فقط عند الاتصال عبر VPN الإدارة ، والتي يمكن أن تكون مفيدة لاستكشاف الأخطاء وإصلاحها ، وكذلك لتحديث نظام التشغيل للعامل نفسه. لا يوجد وصول IP عام عبر ssh ، من أجل الحصول على ssh داخل الحاوية تحتاج إلى استخدام kubectl exec ، سيتم إجراء هذا الاتصال من خلال نفق OpenVPN.

أمن الشبكة
في kubernetes المدارة و openhift ، يتم استخدام مكون شبكة Calico كحل افتراضي للشبكة. يتم تحقيق أمان الشبكة من خلال سياسات شبكة Kubernetes و Calico التي تم تكوينها مسبقًا. يمكن أن يكون العاملون لديك في نفس شبكة محلية ظاهرية مثلها مثل كل البنية الأساسية الأخرى الموجودة في مركز البيانات نفسه ، مثل الأجهزة الافتراضية العادية وخوادم baremetal ، بالإضافة إلى تطبيقات الشبكة وأنظمة التخزين ، وبفضل أنظمة calico الموجودة خارج نظامك ، سوف تكون قادرة على التواصل عبر شبكة خاصة مع نشراتك.
عندما يتم إنشاء كتلة مع شبكة محلية ظاهرية عامة ، تقوم لوحة التحكم بإنشاء مورد HostEndpoint
مع ibm.role: worker_public
لكل عامل ibm.role: worker_public
الخارجية للشبكة. لحماية واجهات الشبكة الخارجية ، ستطبق لوحة التحكم جميع سياسات Calico الافتراضية على جميع نقاط النهاية مع علامة ibm.role: worker_public
.
تسمح سياسات Calico الافتراضية لكل حركة المرور الصادرة وتسمح بحركة المرور الواردة من الإنترنت إلى بعض المكونات (خدمة Kubernetes NodePort و LoadBalancer و Ingress). تم حظر كل حركة المرور الأخرى. السياسات الافتراضية لا تنطبق على حركة المرور داخل الكتلة (التفاعل بين القرون)
أمن التخزين المستمر
للأمان على مستوى الثبات ، يتم استخدام التشفير وإذن المفتاح. متاح حاليًا لـ IKS:
- NFS الكلاسيكية
- تخزين بلوك كلاسيكي (iSCSI)
- تخزين كتلة VP
- تخزين الكائنات السحابية Ibm
- SDS المستندة إلى Porworx (يستخدم محركات الأقراص المحلية للعمال الخاص بك)
رصد وتسجيل
يمكنك استخدام IBM Cloud Monitoring أو حل من Sysdig لمراقبة IKS. بطبيعة الحال ، لم يكن بروميثيوس بدون. يستخدم OpenShift المدار أدوات مراقبة مدمجة.
مع سجلات أنفسهم ، الأمور أكثر تعقيدا. من الضروري جمع السجلات من مستويات مختلفة تمامًا ، فنحن نستخدم عددًا كبيرًا من حلولنا الخاصة والمفتوحة المصدر. نحن نجمع ونخزن السجلات التالية:
- سجلات الحاوية نفسها (STDOUT ، STDERR)
- سجلات التطبيق (إذا تم تحديد المسار إليهم)
- سجلات من عقدة العمل
- سجلات API Kubernetes
- دخول سجلات
- سجلات جميع مكونات نظام Kubernetes (مساحة اسم نظام kube)
للتحكم في السجلات ، تتوفر خدمة منفصلة: IBM Cloud Log Analysis مع LogDNA ، والذي يسمح لك بعرض جميع السجلات في وحدة تحكم مشتركة وتحليلها بأثر رجعي أو في الوقت الحقيقي ، حسب التعريفة الجمركية. يمكنك إنشاء مثيل بشكل منفصل في كل منطقة من المناطق الست ، ثم استخدامه لجمع سجلات مجموعة Kubernetes والبنية التحتية الأخرى في حسابك. لتوصيل هذه الخدمة بمجموعتك ، تحتاج إلى وضع جراب مع وكيل LogDNA باتباع تعليمات بسيطة ، وسيتم إرسال جميع السجلات إلى مستودع LogDNA ، وبعد ذلك ، وفقًا للخطة المختارة ، ستكون متاحة لمزيد من التحليل لفترة معينة.
لتحليل الأنشطة داخل الخدمات السحابية الخاصة بك ، بما في ذلك عمليات تسجيل الدخول وأكثر من ذلك بكثير ، يتوفر Activity Tracker مع LogDNA - وهو يتيح لك تتبع الإجراءات المختلفة في خدماتك.
كأداة مراقبة إضافية ، يمكنك ضبط IBM Cloud Monitoring مع Sysdig على نظامك - وهو متاح في جميع المناطق الست ، مما سيتيح لك مراقبة العديد من المقاييس في نظامك في الوقت الفعلي واستخدام عمليات الدمج المدمجة مع العديد من البيئات الشائعة التي تعمل في حاويات. بالإضافة إلى ذلك ، يمكنك تكوين رد الفعل على الأحداث مع إمكانية الإشعارات عبر الركود والبريد الإلكتروني و PagerDuty و WebHook ، إلخ.
حاوية وصورة حاوية الأمن
الشركة لديها رأيها الخاص حول ما هو مدرج في DevOps. إذا كان شخص ما مهتمًا ، يمكنك قراءة المزيد حول هذا الموضوع في طريقة IBM Garage . فهم ما يتكون DevSecOps أيضًا في العديد من الشركات وتطبيقه في الممارسة العملية. لفهم المراحل التي تمر بها صورة Docker لتصبح حاوية Docker ، ألقِ نظرة على الشكل التالي.

في سحابة IBM ، من الممكن استخدام سجل Docker كخدمة. عند إرسال صورة إلى هذا السجل يتم توقيع صورة عامل ميناء. على جزء من عقدة العامل ، يتم تثبيت الملحق ، وهو المسؤول عن التحقق من سلامة والامتثال لسياسات الأمن - مستشار الضعف. باستخدام هذه السياسات ، يمكنك ، على سبيل المثال ، تقييد نطاق السجل ، حيث يكون من الممكن تنزيل صور عامل ميناء.
apiVersion: securityenforcement.admission.cloud.ibm.com/v1beta1 kind: ClusterImagePolicy metadata: name: ibmcloud-default-cluster-image-policy spec: repositories: # CoreOS Container Registry - name: "quay.io/*" policy: # Amazon Elastic Container Registry - name: "*amazonaws.com/*" policy: # IBM Container Registry - name: "registry*.bluemix.net/*" policy
تعمل مشكلة عدم حصانة Advisor مع حاويات التشغيل ، والمسح الضوئي لها دوريًا والكشف تلقائيًا عن الحزم المثبتة. يتم تمييز صور الإرساء التي بها ثغرات محتملة على أنها خطيرة للاستخدام وتوفر معلومات مفصلة حول الثغرات الموجودة.
مستشار الأمن هو مركز لإدارة جميع نقاط الضعف في التطبيق الخاص بك. لأنها تتيح القدرة على العمل مع المشاكل وحلها. إنه يعمل مع نتائج مرشد الثغرات ومع المجموعة نفسها ، مع تحذير في الوقت المناسب بضرورة تحديث مكون معين.
مثال للتسجيل والنشر لمجموعة من kubernetes المدارة
يمكنك نشر واختبار كتلة Kubernetes المدارة في سحابة IBM مجانًا تمامًا:
- سجل في سحابة IBM: https://ibm.biz/rucloud (عليك تأكيد عنوان بريدك الإلكتروني ، لست بحاجة إلى إضافة بيانات بطاقة الائتمان في هذه المرحلة)
- لاستخدام خدمة IKS ، يمكنك تحويل حسابك إلى حساب مدفوع (بالنقر فوق ترقية وإدخال تفاصيل بطاقتك المصرفية - ستتلقى 200 دولار في الحساب). أو خاصةً لقراء مكتبة Habr ، يمكنك الحصول على قسيمة لتحويل حسابك إلى وضع تجريبي - سيتيح لك ذلك نشر مجموعة الحد الأدنى مجانًا لمدة 30 يومًا. بعد هذه الفترة ، يمكن إعادة إنشاء الكتلة مرة أخرى ومواصلة الاختبار. يمكنك طلب قسيمة على الرابط - https://ibm.biz/cloudcoupon . يتم تأكيد القسيمة خلال يوم العمل.
- يمكنك إنشاء كتلة مجانية (ذاكرة وصول عشوائي واحدة للعاملين 4 جيجا بايت وحدة ذاكرة الوصول العشوائي) من كتالوج الخدمات - https://cloud.ibm.com/kubernetes/catalog/cluster/create
- سوف يستغرق الأمر من 5 إلى 7 دقائق لإنشاء كتلة ، وبعدها ستكون IKS متاحة لك.
استنتاج
آمل بعد قراءة هذا المقال أن يكون لدى القارئ أسئلة أقل حول كيفية عمل kubernetes المدارة وعمل التحول المفتوح. يمكن استخدام هذه المقالة أيضًا كتعليم للعمل على تنفيذ البرامج الخاصة بك. جميع الممارسات التي تستخدمها شركة IBM قابلة للتطبيق على السحب الخاصة ، ومع بعض الجهد ، يتم تنفيذها في أي مركز بيانات.
موارد
الركود IKS
https://ibm-container-service.slack.com/
https://www.ibm.com/cloud/blog/announcements/ibm-cloud-activity-tracker-with-logdna-for-ibm-cloud-object-storage
https://www.ibm.com/cloud/blog/announcements/introducing-the-portworx-software-defined-storage-solution
https://cloud.ibm.com/docs/services/Monitoring-with-Sysdig؟topic=Sysdig-getting-started