
تحياتي يا هبر!
نحن ، فريق المهندسين المعماريين في مجال تكنولوجيا المعلومات من شركة IBM ، والذي يعمل على إنشاء وتسويق الحلول الصناعية لمختلف الصناعات. في وقت فراغنا ، نبحث عن تقنيات جديدة ونجرب ونجرب أفضل الممارسات.
في السنوات الأخيرة ، كان موضوع إنترنت الأشياء شائعًا جدًا. يسأل عملاؤنا عن حلول ومنصات الصناديق الشاملة التي يمكن وضعها محليًا في مركز البيانات الخاص بهم. والأهم من ذلك ، أنه من المتوقع على أساس هذه "الصناديق" ، تطوير جميع الخدمات والتطبيقات الجديدة وإطلاقها بسرعة كبيرة ، أو بالأحرى على الفور أو "أمس".
سألنا أنفسنا: "ماذا لو جمعنا شيئًا مشابهًا في التقنيات المفتوحة والعامة؟"
لقد تحدثنا بالفعل
وأظهرنا الكثير حول استخدام حاويات
Docker وأدوات إدارتها استنادًا إلى
Kubernetes . ومع ذلك ، لم يكن من الممكن حتى الآن رؤية كيف يمكن استخدام جميع هذه التقنيات المتقدمة على نطاق صناعي لمهام الأعمال ، وتحديداً في إطار إنترنت الأشياء. لذا فلنملأ هذه الفجوة. سيتم اعتبار مفهوم الخدمات الصغيرة ، بالإضافة إلى الأساليب العصرية للتنمية (DevOps) ، ودمج ونشر التطبيقات (CI / CD) مهمة مختلفة قليلاً وسيتم وضعها جانباً في وقت لاحق.
في هذه المقالة ، نريد أن نتحدث عن إعداد وتثبيت أحد المكونات الرئيسية - IBM Cloud Private (في الواقع ، التجميع الصناعي لـ Docker / Kubernetes وأكثر من ذلك بقليل) ، والذي يمكن أن يكون بمثابة بنية تحتية مشروطة عند إنشاء منصة إنترنت الأشياء المحلية. اسأل لماذا هو؟
لأننا وعدنا بتقنيات مفتوحة وعامة (نسخة مجانية للمجتمع ودعم من المجتمع):
hub.docker.com/r/ibmcom/icp-inceptionنظرة عامة على IBM Cloud Private
IBM Cloud Private (ICP) هو نظام أساسي سحابي خاص للنشر والعمليات الداخلية. إن ICP عبارة عن بيئة متكاملة تتيح لك تصميم وتطوير ونشر وإدارة التطبيقات المحلية التي تم إنشاؤها مع مراعاة بنية الحاوية. يتضمن تسليم ICP أوركستراتر Kubernetes (K8s) ، ومتجر صور محلي ، بالإضافة إلى وحدة تحكم إدارية وأدوات دعم داعمة.
ما هي السحابة الخاصة أو الخاصة؟
السحابة الخاصة هي نموذج حوسبة سحابية يتم تشغيلها حصريًا لمؤسسة واحدة ، وعادة ما تكون على أراضيها ومواردها. يمكن إدارة هذه السحابة وصيانتها من قبل متخصصيها وموظفي الطرف الثالث. يمكن استضافة منصة مماثلة خلف جدار حماية الشركة وخارجه. توفر السحابة الخاصة مزايا السحابة العامة ، بما في ذلك النشر السريع وقابلية التوسع ، بالإضافة إلى سهولة الاستخدام والإدارة والمرونة. في الوقت نفسه ، يوفر الإصدار المحلي تحكمًا أكبر في النظام ، وزيادة الإنتاجية ، وتكاليف يمكن التنبؤ بها بدقة ، وزيادة متطلبات الأمان وقدرات الإدارة المرنة وفقًا لاحتياجات المؤسسة. تسمح لك السحابة الخاصة بتكوينها مباشرةً لمهام عمل محددة ومتطلبات أمان العملاء.
قبل الشروع في تثبيت ICP ، سنحدد المصطلحات:
العقدة الرئيسية- تراقب وتتحكم في مجموعة K8s.
- kubectl: أداة سطر أوامر لإدارة نظام المجموعة.
- REST API: واجهة للتفاعل مع عقد العمل.
- etcd: هو مخزن مفاتيح ثابت وميسور التكلفة ، يستخدم كمخزن نسخ احتياطي K8s لجميع بيانات المجموعة.
- kube-Scheduler: يراقب هذا المكون الحاويات التي تم إنشاؤها حديثًا (القرون) التي ليس لها عقدة معينة ، ويحدد عقدة لتشغيلها.
- عادة ما تكون هناك حاجة إلى 3 عقد رئيسية أو أكثر من أجل التشغيل المستقر وضمان تحمل الخطأ. في حالتنا ، لتوفير الموارد ، سنقوم بتثبيت جميع مكونات ICP الضرورية على خادم مخصص واحد (عقدة مفردة).
عقدة العمل- آلة العمل في K8s المعروفة سابقًا باسم Minion. يمكن أن تكون هذه العقدة أي من المضيفين الذين يتلقون المهام من العقدة الرئيسية ، ويتحكمون أيضًا في عملية إطلاق الحاويات عليها. اعتمادًا على إعدادات الكتلة ، يمكن أن تكون عقدة العمل إما جهازًا افتراضيًا أو خادمًا فعليًا.
- يمكن تشغيل المكونات التالية على كل عقدة:
- kubelet: هي الخدمة الرئيسية لعقدة العمل. يراقب الحاويات التي تم تعيينها لعقدة (إما apirusver لاتصال آمن ، أو من خلال ملف التكوين المحلي).
- kube-proxy: يعرض الخدمات المحددة في K8s API في كل عقدة ، ويدعم قواعد الشبكة على المضيف وإعادة توجيه الاتصالات.
- عامل ميناء: إطلاق الحاويات وبيئة الإدارة.
- المشرف: هذه عملية مراقبة خفيفة الوزن ونظام تحكم يمكنك استخدامها للحفاظ على تشغيل kubelet و docker.
- fluentd: هذه خدمة تساعد على ضمان التسجيل على مستوى المجموعة.
حاويات- تطبيق يعمل في بيئة معزولة.
- مجموعة العمليات القابلة للتنفيذ والصورة التي تم إطلاقها للبرنامج.
شرانق (قرون)- جراب هو مجموعة واحدة أو أكثر من حاويات Docker ، مع تخزين / شبكة مشتركة ومواصفات كيفية تشغيل الحاويات على عقدة عمل.
- كل Pod لديه IP خاص به.
- يشارك Pod مساحة اسم PID والشبكة واسم المضيف.
تحكم النسخ المتماثل- يوفر إمكانية الوصول والقابلية للتطوير.
- مسؤول عن التحكم في عدد Pods المنشورة.
- يستخدم قالب يصف ما يجب أن يحتوي عليه كل Pod.
التصنيفات- البيانات الوصفية المخصصة لموارد K8s ، على سبيل المثال: الحاويات والخدمات.
- أزواج القيمة الرئيسية المرفقة بالكائنات لتحديدها.
- تعتبر هذه المعلمات حاسمة لأنها تستند إلى طلب كتلة لموارد ذات تصنيفات محددة.
الخدمات- مجموعة حاويات مكشوفة كنقطة نهاية.
- معلومات حول حالة إعدادات الشبكة والشبكة K8s ، والتي تنطبق على جميع عقد العمل.
- باستخدام التكوين الصحيح ، سيتم تسجيل القرون التي تم إنشاؤها بواسطة وحدة تحكم النسخ المتماثل تلقائيًا كخدمة مقابلة.
معلومات سرية (أسرار)- المعلومات السرية المراد قراءتها أو استخدامها بواسطة الحاويات.
- يتم تحميل وحدات التخزين الخاصة بمحرك الأقراص تلقائيًا حتى تتمكن الحاويات من قراءة المحتويات.
- كل إدخال له مساره الخاص.
العمارة
فيما يلي بنية ICP رفيعة المستوى تسرد المكونات الرئيسية حسب العقد الرئيسية والعمل والوكيل. تجدر الإشارة إلى أنه في هذه المقالة يتم التركيز بشكل رئيسي على مزيج من حاويات Docker وبيئة إدارة Kubernetes. هذه المكونات مفتوحة المصدر أساسية وأساسية لمنصة برنامج المقارنات الدولية. ومع ذلك ، للعمل بشكل كامل مع ICP ، ستحتاج أيضًا إلى معرفة Helm ، مدير إدارة حزم البرامج. يتم استخدام K8s لنشر واستضافة مثيلات التطبيق المضمنة في مخططات Helm ، والتي بدورها تشير إلى صور Docker. تحتوي مخططات Helm على معلومات حول تفاصيل التطبيق الخاص بك ، وتحتوي صور Docker على جميع حزم البرامج اللازمة لتشغيل التطبيق الخاص بك.

للحصول على مقدمة تفصيلية عن بنية ومكونات النظام الأساسي لبرنامج المقارنات الدولية ، يمكنك استخدام ارتباط التوثيق في
مركز معرفة IBM .
تحضير
من أجل إكمال تثبيت ICP بسهولة في 20-30 دقيقة ، يلزم الحد الأدنى من موارد الأجهزة التالية والوصول إلى الإنترنت:
• مضيف واحد (فعلي أو افتراضي)
• CPU = 8 نوى (أو نوى افتراضية)
• ذاكرة الوصول العشوائي = 10 جيجابايت (في الواقع ، قد تكون هناك حاجة إلى 14 جيجابايت)
• قرص = 40 جيجا بايت (على SSD أسرع دائمًا)
ملاحظة: إذا كان لديك وقت فراغ أكثر قليلًا وموارد أقل للأجهزة ، فيمكنك تثبيت ICP في مكان ما خلال 40-60 دقيقة على i5 و 1 غيغابايت من ذاكرة الوصول العشوائي.
التثبيت
تنزيل Ubuntu
قم بتنزيل
إصدار توزيع
Ubuntu Server 16.04.05 . قم بإجراء تثبيت قياسي لنظام التشغيل على جهاز افتراضي أو فعلي بالخصائص المذكورة أعلاه.
الحصول على عنوان IP
بعد إكمال عملية تثبيت نظام التشغيل ، في سطر الأوامر ، اكتشف عنوان IP لجهازك الظاهري باستخدام الأمر التالي:
ifconfig
تحتاج إلى كتابة / تذكر عنوان Ethernet IP (inet addr) ، بالإضافة إلى Bcast و Mask. سيتم عرض هذه المعلمات بعد تنفيذ الأمر المطابق:
الشكل 1. مثال على الأمر ifconfigاتصال SSH
إذا استخدمت وظيفة "Easy Install" عند إعداد الجهاز الظاهري ، فبعد التثبيت الكامل لخادم Ubuntu ، ستحتاج إلى تثبيت خادم OpenSSH. يمكنك القيام بذلك باستخدام الأوامر التالية:
apt install openssh-server sudo systemctl enable sshd
بعد تنفيذ الأوامر المناسبة ، ستتمكن من الاتصال بالجهاز الظاهري باستخدام SSH. اعتمادًا على نظام التشغيل ، يمكنك استخدام طرق اتصال مختلفة. بالنسبة لنظام التشغيل Windows ، يمكنك استخدام أداة
PuTTY الشائعة ؛ وبالنسبة لنظام التشغيل Mac ، يمكنك استخدام الأمر ssh في النهاية الطرفية.
الشكل 2. مثال اتصال عبر PuTTY لنظام التشغيل Windowsالخطوة التالية هي تعيين كلمة مرور للمستخدم المميز (الجذر):
sudo -i passwd
الشكل 3. تعيين كلمة مرور جديدة للمستخدم الجذرتحديث واجهة الشبكة
بعد تكوين القدرة على الاتصال عبر SSH وتحديث كلمة مرور المستخدم الفائق ، نحتاج إلى تكوين واجهة الشبكة لتحديد معلمات الشبكة الثابتة. يتم ذلك باستخدام الأمر التالي:
nano /etc/network/interfaces
نقوم بتحديث إعدادات واجهة الشبكة (واجهة الشبكة الأساسية) بناءً على المعلومات التي تم الحصول عليها أثناء الأمر ifconfig ، يبدو مثالنا كما يلي:
auto ens33 iface ens33 inet static address 192.168.175.7 netmask 255.255.255.0 network 192.168.175.0 broadcast 192.168.175.255 gateway 192.168.175.2 dns-nameservers 192.168.175.2 8.8.8.8
ملاحظة: من المهم تحديد خادم DNS بشكل صحيح ، لأن الوصول إلى الإنترنت ضروري للتثبيت اللاحق لمكونات ICP.
الشكل 4. تكوين واجهة الشبكةاحفظ الملف المحدث باستخدام الخطوات التالية: Ctrl + X ، نعم ، أدخل.
لتبسيط تسجيل الدخول إلى جهاز افتراضي بامتيازات المستخدم الخارق (الجذر) ، تحتاج إلى إجراء تغييرات على تكوين خدمة SSH. للقيام بذلك ، قم بتشغيل الأمر التالي:
nano /etc/ssh/sshd_config
بعد ذلك ، ابحث عن سطر إذن الوصول وقم بتحريره وفقًا لذلك:
PermitRootLogin yes
الشكل 5. تحديث تكوين SSHاحفظ الملف كما في الخطوة السابقة: Ctrl + X ، نعم ، أدخل.
بعد إجراء جميع التغييرات ، لتطبيق المعلمات الجديدة ، من المنطقي إعادة تشغيل الجهاز الظاهري بالكامل أو إعادة تشغيل الخدمات المقابلة (الشبكات و ssh) ، على سبيل المثال ، باستخدام الأوامر التالية:
shutdown -r 0
أو
service <service_name> restart
بعد إعادة تشغيل الجهاز ، يجب عليك تسجيل الدخول مرة أخرى من خلال SSH.
تحديث المكون
قم بتحديث خادم Ubuntu بالأمر التالي (يجب تشغيل الأمر كجذر):
apt update
ملاحظة: في حالة حدوث خطأ أثناء التحديث: "المستودع 'cdrom: // Ubuntu-Server 16.04.5 LTS _Xenial Xerus_ - Release amd64 (20180731) xenial Release" ليس له ملف إصدار. ". يجب تشغيل الأمر التالي:
sudo nano /etc/apt/sources.list
وعلق خارج الخط:
deb cdrom:[Ubuntu-Server 16.04.5 LTS …
الشكل 6. تصحيح خطأ محتملبعد ذلك ، احفظ الملف ، كما تم من قبل: Ctrl + X ، نعم ، أدخل
بعد إصلاح خطأ محتمل ، شغّل أمر التحديث مرة أخرى ، ونتيجة لذلك سترى شيئًا مثل هذا:
الشكل 7. تحديث أوبونتوقم بتثبيت IBM Cloud Private
قبل تثبيت ICP ، تحتاج إلى تحرير ملف المضيفين:
nano /etc/hosts
استبدل السلسلة 127.0.1.1 ubuntu بعنوان IP الخاص بك وأي اسم مضيف مناسب.
تأكد من فصل اسم المضيف والاسم المستعار في السطر بعلامة تبويب أو مسافة:
الشكل 8. تغيير ملف المضيفيناحفظ الملف: Ctrl + X ، نعم ، أدخل
سيسمح لك الأمران التاليان بتحديث النظام وتثبيت وحدات إضافية.
apt update apt-get install apt-transport-https ca-certificates curl software-properties-common python-minimal jq
تحقق من وجود أخطاء في الجهاز الطرفي:
الشكل 9. تثبيت مكونات إضافيةقم بزيادة الحد الأقصى للذاكرة الافتراضية باستخدام الأمر:
sysctl -w vm.max_map_count=262144
لن تبدأ K8s بتمكين التبديل. يمكنك تعطيله باستخدام الأمر:
swapoff –a
ملاحظة: سيعمل الأمران السابقان في الجلسة الحالية. عند إعادة التشغيل ، ستفقد هذه المعلمات وتحتاج إلى تسجيلها مرة أخرى.
يمكن تمكين تطبيق هذه المعلمات عند تحميل نظام التشغيل من خلال الأوامر التالية:
sed -i '/ swap / s/^/#/' /etc/fstab echo "vm.max_map_count=262144" >> /etc/sysctl.conf
إضافة مفتاح GPG
نستخدم الأمر التالي:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
إضافة مستودع لتثبيت Docker
لإكمال تثبيت المستودع ، يجب تشغيل الأمرين التاليين:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update
تثبيت Docker
استخدم الأمر التالي لتثبيت Docker (Docker الإصدار 17.12.1 هو الحد الأقصى للإصدار المدعوم لـ IBM Cloud Private 2.1.0.3):
apt-get install docker-ce=17.12.1~ce-0~ubuntu
الشكل 10. عملية تثبيت عامل الميناءيمكنك التحقق من وظائف Docker باستخدام الأمر التالي:
docker version
الشكل 11. التحقق من عامل الميناءقم بتنزيل IBM Cloud Private
لتنزيل صورة ICP-ce (Community Edition) من مورد dockerHub ، تحتاج إلى استخدام مجموعة أدوات Docker. يمكنك القيام بذلك باستخدام الأمر التالي:
docker pull ibmcom/icp-inception:2.1.0.3
الشكل 12. تحميل برنامج المقارنات الدوليةقامت شركة IBM بتعبئة جميع المكونات الأساسية اللازمة للتثبيت في حزمة واحدة (لاحظ أنه يمكنك تغيير الإصدار إلى إصدار أحدث إذا لزم الأمر). سيقوم الأمر pull بتحميل الصورة إلى نظام الملفات المحلي (سيتم تشغيل الصورة لتثبيت ICP).
قم بإنشاء دليل وانتقل إليه:
mkdir /opt/icp cd /opt/icp
انسخ حزمة ICP إلى هذا الدليل:
docker run -e LICENSE=accept -v "$(pwd)":/data ibmcom/icp-inception:2.1.0.3 cp -r cluster /data
ملاحظة: يقوم أمر Docker toolkit بتنفيذ أمر نسخ (cp) Linux من الدليل المحدد (خيار -v). سيتم إنشاء دليل نظام المجموعة في / opt / icp مع جميع الملفات الضرورية.
تكوين مفاتيح SSH
أنشئ مفاتيح ssh جديدة في دليل / opt / icp / الكتلة:
ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N "" cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys systemctl restart sshd cp ~/.ssh/id_rsa ./cluster/ssh_key
تحقق من أن المفتاح تم إنشاؤه وأنه موجود في مجلد / opt / icp / الكتلة:
ls /opt/icp/cluster
الشكل 13. محتويات مجلد الكتلةإعداد ICP
أضف عنوان IP لكل عقدة في المجموعة إلى الملف / opt / icp / الكتلة / المضيفين (في حالتنا ، نستخدم نفس عنوان IP لكل مكون حددناه في / etc / hosts). نقوم بذلك بالأمر التالي:
nano /opt/icp/cluster/hosts
الشكل 14. محتويات ملف المضيفيناحفظ الملف: Ctrl + X ، نعم ، أدخل
يمكن العثور على معلومات تفصيلية حول خيارات التثبيت في ملف التكوين:
more /opt/icp/cluster/config.yaml
لا نوصي بتغيير إعدادات التثبيت الافتراضية.
ملاحظة: أهم ملفي تثبيت هما hosts و config.yaml ، اللذين يصفان خيارات تثبيت ICP. في تكوين متعدد العاملين ، يجب عليك تحديد قائمة بعناوين IP في قسم العامل. عند تثبيت الإصدار الحالي من ICP في وضع العقدة المفردة ، تتغير عناوين IP في ملف المضيفين فقط.
تثبيت ICP
انتقل إلى دليل نظام المجموعة وقم بتشغيل التثبيت:
cd /opt/icp/cluster docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 install
اعتمادًا على الموارد المتاحة ، يمكن أن يستمر التثبيت من 20 إلى 60 دقيقة. في حالة حدوث أخطاء (رسائل حمراء) ، قم بإجراء التغييرات المناسبة على ملفات التكوين. في بعض الأحيان قد يتباطأ التثبيت قليلاً بسبب محاولات إعادة الاتصال بالمكونات التي لم تبدأ بعد (على سبيل المثال ، عند بدء تشغيل Cloudant أو IAM).
يجب أن يبدو التثبيت كما يلي:
الشكل 15. نتيجة تثبيت ICPفي حالة وجود أخطاء ، قد يلزم إلغاء تثبيت ICP:
docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 uninstall
قبل المتابعة إلى الخطوة التالية ، انتظر حوالي 5 دقائق حتى تبدأ جميع مكونات ICP في التشغيل بنجاح.
اتبع الرابط المقدم بعد اكتمال التثبيت ، أدخل وحدة تحكم ICP (admin / admin):
https://<ip_address>:8443
الشكل 16. صفحة تسجيل الدخول إلى لوحة التحكمصفحة ترحيب ICP:
الشكل 17. واجهة ويب للوحة التحكمفي أعلى اليمين ، حدد قائمة الكتالوج ، يتم عرض قائمة بالتطبيقات المتاحة:
الشكل 18. كتالوج المكونيحتوي هذا الدليل على قائمة بالتطبيقات والبرامج ، والتي يمكنك وصفها في وقت فراغك ، ولكن حتى الآن لا تتسرع في نشرها.
لم نتعلم بعد كيفية التعامل بشكل صحيح مع ICP المثبت حديثًا (ليس فقط من خلال واجهة الويب ، ولكن أيضًا وحدة التحكم في شكل CLI - واجهة سطر الأوامر) ، وربط التخزين المستمر وإجراء إعدادات صغيرة.
في الختام
لتلخيص.
لقد نجحنا في نشر إصدار مجتمع IBM Cloud Private (الإصدار 2.1.0.3) على مضيف واحد في جهاز ظاهري يعمل بنظام Ubuntu Server OS 04/16/05. في الوقت الحالي ، تحققنا شخصيًا من التثبيت على VMware و Hyper-V hypervisors ، وهو بالتأكيد يعمل على XenServer ولا ينبغي أن يكون هناك أي صعوبات لـ VirtualBox و KVM.
من هو حريص حقًا على الانغماس أكثر في دراسة برنامج المقارنات الدولية ، أي مجموعة ممتازة من العمل المخبري لزميلنا هنا:
github.com/phthom/IBMCloudPrivateمن الخطوات القادمة - بعد التثبيت الجديد ، نحتاج فقط إلى تكوين ICP قليلاً والبدء في ملئه بشيء مفيد وقريب من المهام العملية.
إذا كان مجتمع هابر يدعم هذه المبادرة بشكل إيجابي ، فعندما تتقدم أبحاثنا وتجاربنا ، سنملأ قلب النظام الأساسي بالمكونات الضرورية لجمع القياس عن بُعد ، وتخزين البيانات ، ومعالجتها ، وتحليلها ، والتنبؤ بها ، وتكوين واجهات البرنامج الخارجية وإنشاء تطبيقات المستخدم. وبناء على ذلك ، تطوير سلسلة من هذه المواد.
في انتظار ملاحظاتك واقتراحاتك!
أيضًا ، أعد الأشخاص المتشابهون في التفكير من
AIXportal.ru مقطع فيديو رائعًا حول تثبيت IBM Cloud Private على قناتهم على Youtube ، وسيكون شخصًا أكثر راحة مثل هذا:
youtu.be/eQwOOTzjM24الروابط والمواد المفيدة
•
صفحة المنتج باللغة الروسية• من يريد ممارسة اللغة الإنجليزية ، كتاب - "
ICP for Dummies " 2018. (40 صفحة)
•
أوراق بيضاء لبرنامج المقارنات الدولية 2.1.0.3 في مركز المعرفة IBM
• فتح مجتمع
ICP على IBM developerWorks•
وصفات ICP للمطورين