تنصيب التطبيقات في Kubernetes يمكن أن يكون تحديًا، خاصة بالنسبة لتطبيقات ذات الحالة مثل MongoDB في مجموعة Kubernetes. كيف يمكنك تسهيل التنصيب؟ دع مشغل Kubernetes لـ MongoDB يقوم تلقائيًا بتنصيب وإدارة التطبيقات ذات الحالة داخل مجموعة Kubernetes الخاصة بك.
في هذا البرنامج التعليمي، ستتعلم كيفية تنصيب MongoDB في Kubernetes باستخدام مشغل Kubernetes لـ MongoDB.
استمر في القراءة وابدأ في أتمتة تنصيب Kubernetes الخاص بك!
المتطلبات المسبقة
سيكون هذا البرنامج التعليمي عرضًا عمليًا. لمتابعة الخطوات، تأكد من توفر المتطلبات التالية:
- A Kubernetes cluster – This demo uses the Kubernetes cluster v1.23.
- Kubectl مثبت على الجهاز المحلي.
- MongoDB Compass مثبت على الجهاز المحلي.
- Git مثبت على جهازك.
- jq محلل JSON مثبت على الجهاز المحلي.
إنشاء فضاء اسم لـ MongoDB
عند نشر التطبيقات على Kubernetes ، من الأفضل دائمًا إنشاء فضاء اسم محدد لمشاريعك.
تجعل الفضاءات الاسمية إدارة موارد Kubernetes أسهل للمسؤولين وتمنع تعارض الأسماء. في الوقت نفسه ، يمنع إنشاء الفضاءات الاسمية استخدام الموارد بشكل غير صحيح في بيئة Kubernetes.
افتح الطرفية الخاصة بك وقم بتشغيل الأمر التالي kubectl create
أدناه لإنشاء فضاء اسم جديد (ns
) بإسم mongodb
على عقدة Kubernetes الخاصة بك.
الآن قم بتشغيل الأمر التالي kubectl get
للتحقق من قائمة الفضاءات الاسمية على عقدة Kubernetes الخاصة بك.
سترى فضاء اسم جديد باسم mongodb المتاح على عقدتك ، كما هو موضح أدناه.

تنزيل مشغل MongoDB لـ Kubernetes
بعد إنشاء مساحة الأسماء، حان الوقت لتنزيل مشغل MongoDB Kubernetes. مشغل MongoDB Kubernetes هو مجموعة من مشغلات Kubernetes. تقدم هذه المشغلات الأوتوماتيكية نشرًا وتكوينًا وإدارة لـ MongoDB Community على بيئة Kubernetes.
قم بتشغيل الأمر git
أدناه لـ clone
مشروع مشغل MongoDB Kubernetes إلى جهازك المحلي.
الآن، قم بتشغيل كل أمر أدناه لتغيير دليل عملك الحالي إلى mongodb-kubernetes-operator
وقائمة (ls
) جميع الملفات والدلائل المتاحة.
سترى دليلًا فرعيًا يحمل اسم config داخل ~/mongodb-kubernetes-operator كما هو موضح أدناه. يحتوي الدليل الفرعي config على أمثلة من ملفات YAML لنشر MongoDB إلى Kubernetes.

نشر مشغل MongoDB
الآن بعد إعداد مساحتك الخاصة ومشغل MongoDB Kubernetes، أنت مستعد لنشر مشغل MongoDB إلى عنقود Kubernetes الخاص بك. كيف؟ ستستخدم التكوين داخل الدليل config.
يتعامل مشغل MongoDB مع دورة حياة نشر MongoDB الخاص بك على عنقود Kubernetes. سيقوم المشغل تلقائيًا بإنشاء وإدارة وتكييف حالة نشر MongoDB الخاص بك.
لنشر مشغل MongoDB ، يجب عليك إنشاء تعريف مخصص للموارد (CRD) في Kubernetes والتحكم. يمكن توسيع تعريف الموارد المخصصة في Kubernetes لـ Kubernetes API ، مما يتيح لك إنشاء موارد مخصصة في Kubernetes.
1. قم بتشغيل الأمر kubectl apply
التالي لإنشاء تعريف CRD جديد في Kubernetes لنشر MongoDB.
يحل المشغل في Kubernetesمحل كل تفاعل بشري لنشر تطبيق على Kubernetes. المشغل هو تحكم في الحاوية يقوم تلقائيًا بنشر وإدارة التطبيق الذي يحتفظ بحالته على Kubernetes.

2. بعد ذلك ، قم بتشغيل الأمر kubectl get
التالي للتحقق من قائمة crd
المتاحة في Kubernetes الخاص بك.
أدناه ، يمكنك رؤية CRD بالاسم mongodbcommunity.mongodbcommunity.mongodb.org.

3. قم بتشغيل الأمر التالي لإنشاء تحكم وصول مستند إلى الدور (RBAC) المخصص لمشغل MongoDB ، وحدد تنفيذ RBAC لمساحة الاسم mongodb.
هذا الأمر يقوم بإنشاء دور وربط للدور وحساب خدمة لعامل MongoDB ، وهي أذونات مخصصة على عنقود Kubernetes الخاص بك. تلك الأذونات المخصصة مطلوبة لنشر وإدارة MongoDB تلقائيًا.

4. الآن ، قم بتشغيل كل أمر kubectl
أدناه للتحقق من الدور وربط الدور وحساب الخدمة لعامل MongoDB.
النتيجة أدناه توضح أن الدور وربط الدور وحساب الخدمة mongodb-kubernetes-operator تم إنشاؤها في مساحة الاسم mongodb.

5. بمجرد اكتمال التحقق ، قم بتشغيل الأمر kubectl
أدناه لنشر عامل MongoDB إلى مساحة الاسم mongodb
.
يقوم هذا الأمر بإنشاء وحدة تحكم جديدة (mongodb-kubernetes-operator) بصورة Docker الأساسية (quay.io/mongodb/mongodb-kubernetes-operator). ستعمل هذه الوحدة كمتحكم لنشر ReplicaSets MongoDB تلقائيًا على عنقود Kubernetes.
أدناه ، يمكنك رؤية أن تم إنشاء نشر عامل MongoDB ، ولكن الوحدة لا تزال في طور التهيئة.

6. أخيرًا ، قم بتشغيل الأوامر التالية للتحقق من النشر والوحدات على مساحة الاسم mongodb
.
كما يمكنك رؤية أدناه ، فإن وحدة تحكم عامل MongoDB قيد التشغيل.

نشر ReplicaSet لـ MongoDB إلى Kubernetes
بعد نشر MongoDB الخاص بك، ستقوم بنشر ReplicaSet إلى Kubernetes الخاص بك لتوفير التوافر العالي والتكرار لنشر MongoDB الخاص بك. لن ترغب في وقت توقف في نشرك.
نشر ReplicaSets لـ MongoDB باستخدام Operator Kubernetes لـ MongoDB آمنة افتراضيًا باستخدام المصادقة SCRAM للمستخدمين. في نفس الوقت، يمكنك استخدام اتصال آمن بـ TLS لاتصالات المستخدمين والتطبيقات وتعريض مقاييس Prometheus لمراقبة الموارد.
ذات صلة: البدء مع رصد عنقود Kubernetes باستخدام Grafana & Prometheus
داخل الدليل config/samples/، سترى عينات متعددة من ملفات YAML لنشر ReplicaSet. يمكن استخدام كل ملف في سيناريوهات نشر مختلفة، ولكن ملف نشر ReplicaSet الافتراضي هو mongodb.com_v1_mongodbcommunity_cr.yaml.
1. قم بتحرير ملف YAML الخاص بنشرك باستخدام محرر النصوص المفضل لديك. في هذا العرض التوضيحي، يستخدم هذا الملف /mongodb.com_v1_hostpath.yaml للنشر المحلي. يقع هذا الملف YAML في الدليل config/samples/arbitrary_statefulset_configuration/.
إذا كنت تقوم بنشر مشغل MongoDB Kubernetes على خدمات السحابة مثل GKE و AKS ، استخدم ملف YAML mongodb.com_v1_mongodbcommunity_cr.yaml. ولكن إذا كنت تنشره محليًا داخل Kind أو Minikube ، يمكنك استخدام ملف YAML المخصص (arbitrary_statefulset_configuration/mongodb.com_v1_hostpath.yaml) ، الذي ينشئ تلقائيًا PV و PVC مخصصة لحاويات MongoDB ReplicaSet.
قم بتغيير عدد ReplicaSets الذي ترغب في نشره اعتمادًا على بيئتك ، ولكن القيمة الافتراضية هي 3. لهذا البرنامج التعليمي ، تم تعيين عدد ReplicaSets على 2.
استبدل <your-password-here> بكلمة مرور قوية. ستستخدم هذه الكلمة المرور لتسجيل الدخول إلى قاعدة بيانات MongoDB ، وبشكل افتراضي ، يتم استخدام المصادقة SCRAM.
احفظ التغييرات وأغلق المحرر عندما تكون راضيًا عن كلمة المرور.
2. بعد ذلك ، قم بتشغيل الأمر kubectl
أدناه لنشر (apply) مجموعة النسخ الاحتياطي MongoDB باستخدام mongodb.com_v1_hostpath.yaml
إلى مساحة الأسماء mongodb.
ينشئ هذا الأمر ما يلي:
- A new custom resource (MongoDBCommunity) with the name mdb0 under the
mongodbcommunity.mongodb.com/v1
CRD
- أسرار Kubernetes لتخزين كلمات مرور مستخدمي MongoDB. في نفس الوقت ، بعض PV و PVC بنوع
hostPath
لمجموعة نسخ MongoDB.
النشر سيستغرق بعض الوقت ، اعتمادًا على حجم ReplicaSets التي يجب إنشاؤها وعلى نفس مجموعة Kubernetes.

3. بعد النشر ، قم بتشغيل كل أمر أدناه للتحقق من الموارد المخصصة والهللات على مساحة الاسم mongodb
.
الإخراج أدناه يظهر ما يلي:
- موارد MongoDBCommunity المخصصة بالاسم mdb0 تعمل بنظام MongoDB v4.4.0.
- هللتا ReplicaSet لـ MongoDB تعمل بالاسم mdb0-0 و mdb0-1. كل هللة تحتوي على حاويتين مختلفتين ، الحاوية mongod ، وحاوية mongodb-agent.

4. أخيرًا ، قم بتشغيل أمر آخر kubectl
أدناه للتحقق من pv
و pvc
على مساحة الاسم mongodb
.
الإخراج أدناه يظهر بعض pv و pvc المستخدمة من قبل هللات ReplicaSet لـ MongoDB.

إنشاء مستخدم وقاعدة بيانات جديدة لنشر MongoDB
لقد أكملت نشر مشغل MongoDB و ReplicaSets إلى مجموعة Kubernetes الخاصة بك في هذه المرحلة. الخطوة التالية هي إنشاء قاعدة بيانات ومستخدم جديدين لتطبيقك.
ستقوم بإنشاء سر جديد للمستخدم الجديد في Kubernetes ، تحرير معيار معالجة البيانات لنشر ReplicaSet ، وتحديث ReplicaSet الخاص بك في مجموعة Kubernetes الخاصة بك.
1. أنشئ ملف YAML جديد باستخدام محررك المفضل واملأ السر الكامن التالي لكوبرنيتيس. يمكنك تسمية ملف YAML كما تريد، ولكن الملف يتم تسميته new-user.yaml في هذا البرنامج التعليمي.
ينشئ هذا الملف YAML سرًا جديدًا لـ Kubernetes بالاسم myappdata وكلمة المرور هي myapppassword.
2. بعد ذلك، قم بتشغيل الأمر kubectl
أدناه لتنفيذ تكوين new-user.yaml
.
يقوم هذا الأمر بإنشاء وتطبيق (apply) سر Kubernetes جديد على عنقودك ويطبق هذا السر على مساحة أسماء mongodb.

3. عدل ملف YAML تكوين ReplicaSet CRD الخاص بك (mongodb.com_v1_hostpath.yaml) في الدليل config/samples/arbitrary_statefulset_configuration
أضف التكوين التالي إلى ملف mongodb.com_v1_hostpath.yaml الذي ينشئ قاعدة البيانات والمستخدم لـ MongoDB.
تأكد من استبدال scram-secret-myapp ببيانات الاعتماد الخاصة بك، واحفظ التغييرات في الملف وأغلق المحرر.
4. الآن، قم بتشغيل الأمر أدناه لتطبيق التغييرات الجديدة التي قمت بها في ملف mongodb.com_v1_hostpath.yaml
في الخطوة الثالثة.

5. في النهاية، قم بتشغيل كل أمر أدناه لإنشاء اتصالات MongoDB المفصلة لتطبيقك. تولد هذه الأوامر اتصال MongoDB المفصل لتطبيقاتك بتنسيق JSON وتحليل الإخراج باستخدام أمر السطر الأمري jq
.
استبدل mdb0-admin-mongoadmin بتفاصيل بيئتك كما يلي:
mdb0
– اسم البيانات الوصفية لموارد MongoDB.
admin
– قاعدة البيانات للمصادقة.
mongoadmin
– المستخدم الذي ستستخدمه للمصادقة.
يوضح الإخراج أدناه كيف يمكنك الاتصال بـ MongoDB باستخدام الاتصالات القياسية و standardSrv. سترى أيضًا اسم المستخدم وكلمة المرور لنشر MongoDB الخاص بك.

الاتصال بنشر MongoDB
لقد أكملت نشر MongoDB على عنقود Kubernetes باستخدام مشغل Kubernetes لـ MongoDB. ولكن كيف تعرف أن النشر يعمل؟ ستتحقق من اتصال قاعدة البيانات المحلية على جهاز الكمبيوتر الخاص بك واتصال المستخدم بـ MongoDB داخل عنقود Kubernetes.
للتحقق من الاتصال بنشر MongoDB الخاص بك، ستستخدم توجيه المنفذ. يسمح توجيه المنفذ في Kubernetes بإنشاء منفذ توجيه من أي خدمة Kubernetes إلى منفذك المحلي.
1. تشغيل الأمر kubectl
أدناه للحصول على قائمة الخدمات (svc
) في مساحة الأسماء mongodb
(-n
).
فيما يلي، سترى الخدمة المسماة mdb0-svc، التي تعرض منفذ 27017 (المنفذ الافتراضي لـ MongoDB).

2. بعد ذلك، قم بتشغيل الأمر أدناه لإنشاء توجيه النطاق الى عقدة Kubernetes.
ينشئ هذا الأمر توجيه نطاق جديد على خدمة Kubernetes (mdb0-svc) ويوجه المنفذ المحلي 27017 إلى منفذ خدمة Kubernetes 27017.

3. في النهاية، افتح تطبيق MongoDB Compass على جهازك المحلي، أضف اتصالًا جديدًا بالشكل التالي، وانقر فوق الاتصال للاتصال بـ MongoDB.
قم بتغيير حقل اسم المستخدم وكلمة المرور بمستخدم MongoDB وكلمة مرورك.


عندما يكون الاتصال ناجحًا، ستحصل على النافذة التالية التي تؤكد أن نشر MongoDB إلى Kubernetes يعمل بشكل صحيح.
بالنسبة لمستخدم mongoadmin، سترى قواعد بيانات افتراضية (local و config و admin).

بالنسبة للمستخدم appuser، سترى قاعدة بيانات صلاحيات واحدة تحمل اسم appdb1.

الختام
خلال هذا البرنامج التعليمي، تعلمت كيفية نشر MongoDB إلى عقدة Kubernetes باستخدام عامل MongoDB Kubernetes. كما لمسنا الاستخدام الأساسي لعامل Kubernetes. والآن، لديك معرفة جيدة بالفعل حول نشر التطبيقات وإدارتها تلقائيًا على Kubernetes.
لماذا لا تقوم بإعداد اتصال TLS على تنفيذ MongoDB الخاص بك للاستفادة من هذا المعرفة الجديدة؟ يؤمّن اتصال TLS الاتصالات بين مجموعات النسخ الاحتياطي ويؤمّن اتصالات العميل أو التطبيق بـ MongoDB.