إدارة Cluster Apps
تتيح ميزة Cluster Apps تثبيت تطبيقات جاهزة من الكتالوج داخل تجمع (cluster) Kubernetes Autopilot الخاص بك، وتعرض التطبيقات التي تعمل فيه. يمكنك تثبيت التطبيقات وعرض تفاصيلها وترقيتها وإلغاء تثبيتها من صفحة تفاصيل التجمع.
تعمل التطبيقات داخل تجمعك وتستخدم سعته. أنت مالك هذه التطبيقات: يمكنك إدارتها من هذه الصفحة أو بأي أداة Kubernetes، مثل helm أو kubectl أو Lens.
Cluster Apps وMarketplace
يقدّم كلاهما تطبيقات جاهزة، لكن طريقة عملهما مختلفة.
| Marketplace | Cluster Apps | |
|---|---|---|
| مكان تشغيل التطبيق | على المنصة، وتديره المنصة نيابةً عنك | داخل تجمع Autopilot الخاص بك |
| من يدير التطبيق | المنصة | أنت |
| الفوترة | رسوم التطبيق إضافةً إلى الموارد التي يستخدمها | لا فوترة منفصلة؛ تدفع مقابل حجم التجمع |
| مكانه في الواجهة | قائمة Marketplace | قسم Apps في صفحة تفاصيل التجمع |
اختر Marketplace إذا أردت أن تشغّل المنصة التطبيق نيابةً عنك. واختر Cluster Apps إذا كان مكان التطبيق بجوار أحمال العمل (workloads) الخاصة بك، في تجمع تتحكم فيه.
فتح قسم Apps
- افتح Kubernetes >> Autopilot وانقر على اسم التجمع.
- في قائمة التجمع، افتح Apps:
- Installed: قائمة التطبيقات التي تعمل في التجمع.
- Catalog: قائمة التطبيقات التي يمكنك تثبيتها.
يجب أن تكون حالة التجمع Running.
الكتالوج
| التطبيق | الفئة | الوظيفة |
|---|---|---|
| CloudNativePG | Database | مشغّل (Operator) يشغّل تجمعات PostgreSQL ويديرها، مع التبديل عند الفشل (failover) والنسخ الاحتياطي والتحديثات المتدرجة. |
| Kyverno | Security | محرك سياسات يتحقق من موارد Kubernetes ويعدّلها وينشئها وفق سياسات تعريفية. |
| NGINX Ingress Controller | Networking | متحكم Ingress من F5 NGINX يوجّه حركة HTTP وHTTPS إلى الـ Services داخل التجمع. |
| Percona Operator for MongoDB | Database | مشغّل (Operator) يشغّل مجموعات النسخ المتماثلة (replica sets) والتجمعات المجزأة (sharded clusters) لـ Percona Server for MongoDB، مع النسخ الاحتياطي والاستعادة إلى نقطة زمنية. |
| Percona Operator for MySQL | Database | مشغّل (Operator) يشغّل Percona XtraDB Cluster، وهو MySQL عالي التوفر مع نسخ متزامن ونسخ احتياطي واستعادة إلى نقطة زمنية. |
| Strimzi | Messaging | مشغّل (Operator) يدير تجمعات Apache Kafka والمواضيع (topics) والمستخدمين عبر موارد Kubernetes. |
| Valkey | Database | مخزن مفتاح-قيمة في الذاكرة، وهو تفرّع مفتوح المصدر من Redis. |
يستخدم كل إدخال في الكتالوج إصدار chart مختبرًا وقيمًا افتراضية مناسبة للتجمعات الصغيرة. سيتوسع الكتالوج مع الوقت.
تثبيت تطبيق
- افتح Apps >> Catalog وانقر على Install في التطبيق.
- تحقق من Release name وNamespace. كلاهما مملوء بالقيم الافتراضية للكتالوج. يُنشأ الـ namespace إذا لم يكن موجودًا.
- عدّل Values (YAML) عند الحاجة. يبدأ المحرر بالقيم الافتراضية للكتالوج، وقيمك تتجاوزها؛ أما المحرر الفارغ فيستخدم القيم الافتراضية للـ chart نفسه.
- انقر على Check capacity. تعرض المنصة التطبيق بقيمك وتفحصه مقابل تجمعك، دون تثبيت أي شيء.
- عندما تظهر النتيجة The app fits in this cluster، انقر على Install. يبقى زر Install معطّلًا حتى ينجح الفحص للمدخلات الحالية؛ وإذا غيّرت أي شيء، فافحص مرة أخرى.
تُفتح لوحة تفاصيل التطبيق، وتظهر أحمال العمل بحالة Starting ثم Ready مع بدء تشغيل الـ pods.
لا يُنفَّذ في التجمع الواحد سوى تثبيت أو ترقية واحدة في كل مرة. إذا كانت هناك عملية أخرى قيد التنفيذ، فانتظر قليلًا ثم أعد المحاولة.
نتائج فحص السعة
عندما لا ينجح الفحص، تظهر الرسالة The app cannot be installed as it is مع الأسباب:
| السبب | ما يجب فعله |
|---|---|
| Not enough capacity | يعرض جدول لكل مورد ما يحتاجه التطبيق، وما هو متاح، ومقدار النقص، مع أصغر حجم تجمع يكفي (Smallest cluster size that fits). انقر على Resize cluster لتكبير التجمع، أو خفّض قيم التطبيق (عدد النسخ، والـ request، والـ limit). |
| Request above its limit | تطلب حاوية أكثر مما يسمح به الـ limit الخاص بها. اضبط الـ limit بحيث لا يقل عن الـ request. |
| Resource values required | لا توجد لحاوية قيم للمعالج أو الذاكرة أو التخزين، ولا يمنحها التجمع قيمًا افتراضية. حدّد هذه القيم في الـ values. |
| Pod Security | يحتاج التطبيق إلى صلاحيات غير مسموح بها للـ pods في تجمع Autopilot، مثل الوضع المميّز (privileged) أو مسارات المضيف (host paths). لا يمكن تشغيل هذا التطبيق في تجمع Autopilot. |
| Kubernetes version | لا يدعم التطبيق إصدار Kubernetes في التجمع. قم بترقية التجمع إذا توفّر إصدار مدعوم. |
| The chart cannot be rendered | الـ values غير صالحة لهذا التطبيق. تعرض الرسالة الخطأ. |
| Not enough room to uninstall | التطبيق يتسع، لكن المساحة المتبقية في التجمع لن تكفي للخطوات التي يشغّلها التطبيق عند إلغاء تثبيته (مثل إزالة admission webhooks الخاصة به)، فيتوقف إلغاء التثبيت ويترك أجزاء خلفه. كبّر التجمع إلى الحجم المقترح أو خفّض قيم التطبيق. |
قد يعرض الفحص الناجح تحذيرات أيضًا:
| التحذير | المعنى |
|---|---|
| Little room for updates | التطبيق يتسع، لكن المساحة المتبقية في التجمع قليلة جدًا للـ pods الإضافية التي يشغّلها التحديث المتدرج. قد يتوقف تحديث لاحق للتطبيق في منتصفه حتى يُكبَّر التجمع. |
| Little room for autoscaling | لا تستطيع أدوات التوسع التلقائي في التطبيق الوصول إلى الحد الأقصى من الـ pods بالمساحة المتبقية. |
| No quota | لا توجد حدود سعة للتجمع يمكن الفحص مقابلها، لذا لم تُفحص السعة. |
تشغّل المشغّلات (Operators) مثل CloudNativePG وStrimzi مزيدًا من الـ pods لاحقًا، عندما تنشئ قاعدة بيانات أو تجمع Kafka. هذه الـ pods غير مشمولة في الفحص، وتشير النتيجة إلى ذلك. اترك مساحة لها.
عرض التطبيقات المثبتة
تعرض Apps >> Installed كل إصدارات التطبيقات (releases) في التجمع، مع الـ namespace، والـ chart وإصداره، والمصدر، والحالة، وأحمال العمل، وآخر تحديث. يمكنك التصفية حسب الـ namespace أو البحث بالاسم.
يوضح عمود Source مصدر التطبيق:
- Catalog: ثُبّت من الكتالوج.
- Other: ثُبّت بأداة أخرى، مثل
helmأو Lens، ويُعرض كما هو.
انقر على اسم التطبيق لفتح لوحة تفاصيله. تعرض اللوحة إصدار الـ chart والتطبيق، والحالة، والمراجعة (revision)، وأحمال العمل، والملاحظات التي يطبعها التطبيق بعد تثبيته. ينقلك Open workloads in Explorer إلى الـ pods والكائنات الأخرى الخاصة بالتطبيق.
حالات أحمال العمل
| الحالة | المعنى |
|---|---|
| Ready | جميع أحمال عمل التطبيق لديها pods جاهزة. |
| Starting | الـ pods قيد التشغيل. |
| Needs attention | تعذّر تشغيل بعض الـ pods. تعرض اللوحة السبب مع عدد الـ pods المتأثرة. |
أسباب تعذّر تشغيل الـ pod:
| السبب | ما يجب فعله |
|---|---|
| Waiting for cluster capacity | التجمع ممتلئ، وتذكر اللوحة المورد الذي نفد. كبّر التجمع أو قلّل احتياجات التطبيق. تبدأ الـ pods تلقائيًا عند توفّر المساحة، ولا حاجة لإعادة التثبيت. |
| Waiting for platform capacity | لا تتوفر لدى المنصة حاليًا مساحة للـ pod. تواصل مع مسؤول المنصة. |
| Resource values required | حدّد قيم المعالج والذاكرة والتخزين للحاوية. |
| Blocked by Pod Security | يحتاج الـ pod إلى صلاحيات غير مسموح بها في تجمع Autopilot. |
| Storage pending | وحدة تخزين (volume) الخاصة بالـ pod ليست جاهزة بعد. |
| Image cannot be pulled | تحقق من اسم الصورة (image) ومن الوصول إلى السجل (registry). |
| Crashing repeatedly | تتوقف الحاوية بشكل متكرر. راجع سجلاتها في Explorer. |
| Configuration error | هناك ConfigMap أو Secret أو إعداد تحتاجه الحاوية مفقود أو غير صالح. |
| Pods not created | تعذّر على حمل العمل إنشاء الـ pods، مثلًا لأن سياسة داخل التجمع رفضتها. |
ترقية تطبيق
إذا كان في الكتالوج إصدار أحدث من تطبيق ثبّته منه، تعرض القائمة الإصدار الجديد بجوار الإصدار الحالي مع زر الترقية.
- انقر على زر الترقية في القائمة، أو على Upgrade في لوحة تفاصيل التطبيق.
- عدّل الـ values عند الحاجة. يعرض المحرر القيم الحالية للتطبيق، وما تحفظه يحلّ محلها، لذا يُحذف أي مفتاح تزيله.
- انقر على Check capacity. يأخذ الفحص في الحسبان فقط ما يضيفه التغيير إلى ما يستخدمه التطبيق حاليًا.
- انقر على Upgrade.
يمكنك أيضًا استخدام Upgrade دون إصدار جديد، لتغيير قيم التطبيق.
لا يمكن ترقية سوى التطبيقات المثبتة من الكتالوج من هنا. إذا فشلت الترقية، يُعاد التطبيق إلى مراجعته السابقة.
إلغاء تثبيت تطبيق
- انقر على زر الحذف في القائمة، أو على Uninstall في لوحة تفاصيل التطبيق.
- أكّد العملية.
يُزال التطبيق والكائنات التي أنشأها. قد تُحذف أيضًا وحدات التخزين التي أنشأها التطبيق، بحسب التطبيق. يبقى الـ namespace؛ احذفه من Cluster >> Namespaces إذا لم تعد بحاجة إليه. كما تُبقي المشغّلات مثل CloudNativePG وStrimzi ومشغّلات Percona تعريفات الموارد المخصصة (CRDs) والموارد التي أنشأتها بها، حتى لا تُحذف بياناتك عن طريق الخطأ.
إذا امتلأ التجمع منذ التثبيت وتعذّر بدء خطوات إلغاء تثبيت التطبيق، يُرفض إلغاء التثبيت مع الرسالة The app cannot be uninstalled cleanly right now والموارد الناقصة وأصغر حجم تجمع يكفي، ولا يُزال أي شيء. كبّر التجمع أو حرّر بعض المساحة، ثم أعد محاولة إلغاء التثبيت.
لا يمكن إلغاء تثبيت التطبيقات الموجودة في namespaces النظام في Kubernetes (kube-system وkube-public وkube-node-lease) من هنا.
الفوترة
لا تُفوتر Cluster Apps بشكل منفصل. تتم فوترة تجمعك حسب حجمه، كما هو موضح في إدارة Kubernetes. يستخدم التطبيق جزءًا من هذا الحجم؛ وإذا احتاج إلى المزيد، فكبّر التجمع.
القيود
- تتوفر Cluster Apps لتجمعات Autopilot. التجمعات المضافة إلى Explorer عبر kubeconfig غير مدعومة.
- لا يُمنح التطبيق اسم مضيف (hostname) عامًا. يمكنك الوصول إليه من داخل التجمع عبر الـ Services الخاصة به، أو إتاحته بنفسك، مثلًا باستخدام NGINX Ingress Controller من الكتالوج. تحتاج نقطة الوصول العامة إلى عنوان IP محجوز (reserved IP)؛ حدّده في قيم المتحكم عبر
controller.service.loadBalancerIP.