نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

للعمل الكامل مع النظام ، من المهم معرفة أدوات سطر الأوامر: في حالة Kubernetes ، هذا هو kubectl. من ناحية أخرى ، يمكن أن تؤدي الواجهات الرسومية المصممة جيدًا والمدروسةоمعظم المهام المعتادة وفتح فرص إضافية لتشغيل الأنظمة.

نشرنا العام الماضي ترجمة نظرة عامة صغيرة على واجهة مستخدم الويب بالنسبة إلى Kubernetes ، تم توقيته ليتزامن مع الإعلان عن واجهة الويب Kubernetes WebView. قام مؤلف هذا المقال والمرافق نفسها ، Henning Jacobs من Zalando ، بوضع المنتج الجديد على أنه "kubectl للويب". لقد أراد إنشاء أداة ذات إمكانات سهلة الاستخدام للتفاعل في تنسيق دعم فني (على سبيل المثال ، عرض المشكلة بسرعة باستخدام رابط ويب) وللرد على الحوادث ، والبحث عن المشكلات في العديد من المجموعات في نفس الوقت. نسله يتطور في الوقت الحاضر (بشكل رئيسي من خلال جهود المؤلف نفسه).

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

  • دعم التمايز في حقوق المستخدم (RBAC) ؛
  • تصور حالة مساحة الاسم وأساسيات Kubernetes القياسية (النشر ، StatefulSet ، Service ، Cronjob ، Job ، Ingress ، ConfigMap ، Secret ، PVC) ؛
  • الوصول إلى سطر الأوامر داخل الكبسولة ؛
  • عرض سجلات القرون.
  • عرض حالة القرون (describe status);
  • إزالة القرون.

الوظائف الأخرى ، مثل عرض الموارد المستهلكة (في سياق البودات / وحدات التحكم / مساحات الأسماء) ، وإنشاء / تحرير أساسيات K8s ، ليست ذات صلة بسير العمل لدينا.

سنبدأ المراجعة باستخدام لوحة Kubernetes Dashboard الكلاسيكية ، وهي معيارنا. نظرًا لأن العالم لا يقف ساكنًا (مما يعني أن Kubernetes لديه المزيد والمزيد من واجهات المستخدم الرسومية الجديدة) ، سنتحدث أيضًا عن بدائلها الحالية ، ونلخص كل شيء في جدول مقارن في نهاية المقالة.

NB: في المراجعة ، لن نكرر تلك الحلول التي تم النظر فيها بالفعل المادة الاخيرةومع ذلك ، من أجل الاكتمال ، يتم تضمين الخيارات ذات الصلة منه (K8Dash و Octant و Kubernetes Web View) في الجدول النهائي.

1. لوحة تحكم Kubernetes

  • صفحة التوثيق;
  • مخزن (8000+ نجوم جيثب) ؛
  • الترخيص: Apache 2.0 ؛
  • باختصار: "واجهة ويب عالمية لمجموعات Kubernetes. فهي تتيح للمستخدمين إدارة واستكشاف أخطاء التطبيقات التي تعمل في المجموعة ، فضلاً عن إدارة المجموعة نفسها ".

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

هذه لوحة للأغراض العامة يغطيها مؤلفو Kubernetes في الوثائق الرسمية (لكن غير قابلة للنشر تقصير). إنه مصمم لتلبية احتياجات التشغيل اليومي وتصحيح أخطاء التطبيقات في مجموعة. في المنزل ، نستخدمه كأداة بصرية كاملة وخفيفة الوزن تسمح لنا بتزويد المطورين بالوصول الضروري والكافي إلى المجموعة. تغطي إمكانياته جميع احتياجاتهم التي تنشأ في عملية استخدام الكتلة (في هذا المقال أظهرنا بعض ميزات اللوحة). كما قد تتخيل ، هذا يعني أنه يلبي جميع متطلباتنا المذكورة أعلاه.

من بين الميزات الرئيسية للوحة معلومات Kubernetes:

  • التنقل: اعرض العناصر الرئيسية لـ K8s في سياق مساحات الأسماء.
  • إذا كانت لديك حقوق المسؤول ، فستعرض اللوحة العقد ومساحات الأسماء والأحجام الثابتة. بالنسبة للعقد ، تتوفر إحصاءات حول استخدام الذاكرة والمعالج وتخصيص الموارد والمقاييس والحالة والأحداث وما إلى ذلك.
  • اعرض التطبيقات التي تم نشرها في مساحة اسم حسب نوعها (النشر ، StatefulSet ، إلخ) ، العلاقات بينها (ReplicaSet ، Horizontal Pod Autoscaler) ، والإحصاءات والمعلومات العامة والشخصية.
  • عرض الخدمات والمداخلات ، وكذلك علاقاتهم مع القرون ونقاط النهاية.
  • عرض كائنات الملفات والمخازن: الحجم الثابت والمطالبة بالحجم الثابت.
  • عرض وتحرير ConfigMap و Secret.
  • عرض السجلات.
  • وصول سطر الأوامر في الحاويات.

عيب كبير (ولكن ليس بالنسبة لنا) هو أنه لا يوجد دعم للعمل متعدد المجموعات. تم تطوير المشروع بنشاط من قبل المجتمع ويحافظ على الميزات ذات الصلة بإصدار إصدارات ومواصفات جديدة من Kubernetes API: أحدث إصدار من اللوحة هو v2.0.1 22 مايو 2020 - تم اختباره للتوافق مع Kubernetes 1.18.

2. عدسة

  • الموقع;
  • عرض;
  • مخزن (~ 4800 نجمة جيثب) ؛
  • الترخيص: معهد ماساتشوستس للتكنولوجيا.
  • باختصار: "Kubernetes IDE".

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

تم وضع المشروع كبيئة تطوير متكاملة (IDE) لـ Kubernetes. علاوة على ذلك ، تم تحسينه للعمل مع العديد من المجموعات وعدد كبير من الكبسولات التي تعمل فيها (تم اختبارها على 25 جراب).

الميزات / القدرات الرئيسية للعدسة:

  • تطبيق مستقل لا يتطلب تثبيت أي شيء داخل الكتلة (بتعبير أدق ، سيُطلب من Prometheus الحصول على جميع المقاييس ، ولكن يمكن أيضًا استخدام التثبيت الحالي لهذا الغرض). يتم التثبيت "الرئيسي" على جهاز كمبيوتر شخصي يعمل بنظام التشغيل Linux أو macOS أو Windows.
  • إدارة متعددة المجموعات (مئات المجموعات مدعومة).
  • تصور حالة الكتلة في الوقت الحقيقي.
  • الرسوم البيانية والاتجاهات لاستخدام الموارد مع التاريخ على أساس بروميثيوس المدمج.
  • الوصول إلى سطر أوامر الحاويات وعقد الكتلة.
  • دعم كامل لـ Kubernetes RBAC.

الإصدار الحالي - 3.5.0 بتاريخ 16 يونيو 2020 تم إنشاؤه في الأصل بواسطة Kontena ، اليوم تم نقل جميع حقوق الملكية الفكرية إلى منظمة خاصة مختبرات لاكند، المسمى "اتحاد المهوسين والتقنيين الأصليين في السحابة" ، وهو المسؤول عن "الحفاظ على برامج ومنتجات Kontena مفتوحة المصدر وإتاحتها".

يعد Lens ثاني أكثر المشاريع شيوعًا على GitHub من واجهة المستخدم الرسومية لفئة Kubernetes ، "يخسر" فقط Kubernets Dashboard نفسها. جميع الحلول الأخرى مفتوحة المصدر التي ليست من فئة CLI * أقل شعبية بشكل ملحوظ.

* انظر حول K9s في جزء المكافأة من المراجعة.

3. كوبرنيتيك

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

هذا تطبيق خاص يتم تثبيته على جهاز كمبيوتر شخصي (يتم دعم Linux و macOS و Windows). يعد مؤلفوها باستبدال كامل لأداة سطر الأوامر المساعدة ، ومعها - لا داعي لتذكر الأوامر وحتى زيادة السرعة بمقدار عشرة أضعاف.

تتمثل إحدى الميزات المثيرة للاهتمام في الأداة في الدعم المدمج لمخططات Helm ، ومن العيوب عدم وجود مقاييس أداء التطبيق.

الميزات الرئيسية لـ Kubernetic:

  • عرض مناسب لحالة المجموعة. شاشة واحدة لعرض جميع كائنات الكتلة ذات الصلة وتبعياتها ؛ حالة الاستعداد الأحمر / الأخضر لجميع الكائنات ؛ وضع عرض حالة الكتلة مع تحديثات الحالة في الوقت الحقيقي.
  • أزرار الإجراءات السريعة لحذف التطبيق وتوسيع نطاقه.
  • دعم عملية متعددة المجموعات.
  • عمل بسيط مع مساحات الأسماء.
  • دعم مخططات Helm ومستودعات Helm (بما في ذلك المستودعات الخاصة). تثبيت وإدارة الرسوم البيانية في واجهة الويب.

التكلفة الحالية للمنتج عبارة عن دفعة لمرة واحدة قدرها 30 يورو مقابل استخدامها من قبل شخص واحد لأي عدد من مساحات الأسماء والمجموعات.

4. كوبيوس

  • الموقع;
  • عرض;
  • مخزن (~ 500 نجمة جيثب) ؛
  • الترخيص: Apache 2.0
  • باختصار: "Kubevious تجعل مجموعات Kubernetes وتهيئة التطبيق وعرض الحالة آمنة وسهلة الفهم."

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

فكرة المشروع هي إنشاء أداة مصممة لتحليل وتصحيح تكوينات التطبيق المنتشرة في الكتلة. ركز المؤلفون بشكل أساسي على تنفيذ هذه الميزات ، تاركين أشياء أكثر عمومية لوقت لاحق.

الميزات والوظائف الرئيسية لـ Kubevious:

  • تصور الكتلة بطريقة تتمحور حول التطبيق: يتم تجميع الكائنات ذات الصلة في الواجهة ، وتصطف في تسلسل هرمي.
  • عرض مرئي للاعتماديات في التكوينات والنتائج المتتالية لتغييراتها.
  • عرض أخطاء تكوين المجموعة: إساءة استخدام الملصقات ، والمنافذ الفائتة ، وما إلى ذلك. (بالمناسبة ، إذا كنت مهتمًا بهذه الميزة ، فاحرص على الانتباه إلى بولاريسحول الذي نحن كتب بالفعل.)
  • بالإضافة إلى النقطة السابقة ، يتوفر الكشف عن الحاويات التي يحتمل أن تكون خطرة ، أي امتلاك الكثير من الامتيازات (السمات hostPID, hostNetwork, hostIPC، تتعدد docker.sock إلخ).
  • نظام بحث متقدم للكتلة (ليس فقط بأسماء الكائنات ولكن أيضًا بخصائصها).
  • أدوات لتخطيط القدرات وتحسين الموارد.
  • مدمج "آلة الزمن" (القدرة على رؤية التغييرات السابقة في تكوين الكائنات).
  • إدارة RBAC مع جدول الأدوار المترابط المحوري ، و RoleBindings ، و ServiceAccounts.
  • يعمل مع مجموعة واحدة فقط.

للمشروع تاريخ قصير جدًا (تم الإصدار الأول في 11 فبراير 2020) ويبدو أن هناك فترة استقرار أو تباطؤ في التطوير. إذا تم إصدار الإصدارات السابقة بشكل متكرر ، فإن الإصدار الأخير (v0.5 15 أبريل 2020) تخلفت عن الوتيرة الأولية للتنمية. ربما يرجع ذلك إلى قلة عدد المساهمين: لا يوجد سوى 4 منهم في تاريخ المستودع ، وكل العمل الفعلي يقوم به شخص واحد.

5. كوبوايز

  • صفحة المشروع;
  • الترخيص: ملكية (ستصبح مفتوحة المصدر) ؛
  • باختصار: "عميل بسيط متعدد الأنظمة الأساسية لـ Kubernetes."

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

منتج جديد من VMware ، تم إنشاؤه في الأصل كجزء من هاكاثون داخلي (في يونيو 2019). مثبتة على جهاز كمبيوتر شخصي ، وتعمل على أساس الإلكترون (يدعم Linux و macOS و Windows) ويتطلب kubectl v1.14.0 أو أحدث.

الميزات الرئيسية لـ Kubewise:

  • تفاعل الواجهة مع كيانات Kubernetes الأكثر استخدامًا: العقد ومساحات الأسماء وما إلى ذلك.
  • دعم ملفات kubeconfig متعددة لمجموعات مختلفة.
  • المحطة الطرفية مع القدرة على تعيين متغير البيئة KUBECONFIG.
  • قم بإنشاء ملفات kubeconfig مخصصة لمساحة الاسم المحددة.
  • ميزات الأمان المتقدمة (RBAC ، كلمات المرور ، حسابات الخدمة).

حتى الآن ، المشروع لديه إصدار واحد فقط - نسخة 1.1.0 بتاريخ 26 نوفمبر 2019. علاوة على ذلك ، خطط المؤلفون لإصداره على الفور كمصدر مفتوح ، ولكن بسبب مشاكل داخلية (لا تتعلق بالمسائل الفنية) لم يتمكنوا من القيام بذلك. اعتبارًا من مايو 2020 ، يعمل المؤلفون على الإصدار التالي ويجب أن يبدأوا عملية فتح الكود في نفس الوقت.

6. وحدة تحكم OpenShift

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

على الرغم من حقيقة أن واجهة الويب هذه جزء من توزيع OpenShift (يتم تثبيتها هناك باستخدام مشغل خاص)، المؤلفون قدمت القدرة على تثبيته / استخدامه في تركيبات Kubernetes العادية (الفانيليا).

تم تطوير OpenShift Console لفترة طويلة ، لذا فقد تضمنت العديد من الميزات. سنذكر أهمها:

  • نهج الواجهة المشتركة - "منظورين" للإمكانيات المتاحة في وحدة التحكم: للمسؤولين وللمطورين. وضع منظور المطور يقوم بتجميع الكائنات في شكل أكثر قابلية للفهم للمطورين (حسب التطبيقات) ويركز الواجهة على حل مثل هذه المهام النموذجية مثل نشر التطبيقات ، وتتبع حالة البناء / النشر ، وحتى تحرير التعليمات البرمجية من خلال Eclipse Che.
  • إدارة أعباء العمل والشبكة والتخزين وحقوق الوصول.
  • الفصل المنطقي لأحمال العمل في المشاريع والتطبيقات. في أحد أحدث الإصدارات - v4.3 - ظهر خاص لوحة تحكم المشروع، والتي تعرض البيانات المعتادة (عدد وحالات النشر ، البودات ، إلخ ؛ استهلاك الموارد والمقاييس الأخرى) في شريحة المشروع.
  • تحديث في عرض الوقت الحقيقي لحالة الكتلة ، التغييرات (الأحداث) التي حدثت فيه ؛ عرض السجلات.
  • عرض بيانات المراقبة بناءً على Prometheus و Alertmanager و Grafana.
  • إدارة المشغلين الممثلة في المشغل.
  • إدارة البنيات التي يتم تشغيلها من خلال Docker (من مستودع محدد باستخدام Dockerfile) ، S2I أو المرافق الخارجية التعسفية.

NB: لم نضف اخرين للمقارنة توزيعات Kubernetes (على سبيل المثال ، أقل شهرة بكثير كوبسفير): على الرغم من حقيقة أن واجهة المستخدم الرسومية يمكن أن تكون متقدمة جدًا فيها ، إلا أنها تأتي عادةً كجزء من مكدس متكامل لنظام كبير. ومع ذلك ، إذا كنت تعتقد أنه لا توجد حلول كافية تعمل بشكل كامل في تثبيت Vanilla K8s ، فأخبرنا بذلك في التعليقات.

علاوة

1. Portainer على Kubernetes في الإصدار التجريبي

  • الموقع;
  • مخزن (~ 100 نجمة جيثب) ؛
  • الترخيص: Zlib (؟) (نفس الشيء بالنسبة للمشروع الرئيسي).

مشروع من فريق Portainer طور واجهة شائعة تحمل نفس الاسم للعمل مع Docker. نظرًا لأن المشروع في مرحلة مبكرة من التطوير (الإصدار التجريبي الأول والوحيد خرج 16 أبريل 2020) ، لم نقم بتقييم ميزاته. ومع ذلك ، قد يثير اهتمام الكثيرين: إذا كان هذا يتعلق بك ، فاتبع التطوير.

2. لوحة الجليد

  • الموقع;
  • الترخيص: ملكية ؛
  • باختصار: محرر Visual Kubernetes.

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

يهدف تطبيق سطح المكتب الصغير هذا إلى تصور موارد Kubernetes وإدارتها في الوقت الفعلي باستخدام واجهة سحب وإفلات بسيطة. الكائنات المدعومة حاليًا هي Pod و Service و Deployment و StatefulSet و PersistentVolume و PersistentVolumeClaim و ConfigMap و Secret. وسرعان ما يعدون بإضافة دعم إلى هيلم. العيوب الرئيسية هي قرب الكود (متوقع فتح "بطريقة ما") ونقص دعم Linux (حتى الآن لا تتوفر سوى إصدارات لنظامي التشغيل Windows و macOS ، على الرغم من أن هذا أيضًا على الأرجح مجرد مسألة وقت).

3.k9s

  • الموقع;
  • مظاهرة;
  • مخزن (~ 7700 نجمة جيثب) ؛
  • الترخيص: Apache 2.0 ؛
  • باختصار: "واجهة وحدة تحكم لنظام Kubernetes تتيح لك إدارة مجموعتك بأسلوب أنيق."

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

كانت الأداة المساعدة فقط في جزء المكافأة من المراجعة لسبب أنها توفر واجهة مستخدم رسومية لوحدة التحكم. ومع ذلك ، فقد استخرج المؤلفون حرفيًا الحد الأقصى من الجهاز ، ولم يقدموا فقط واجهة سهلة الاستخدام ، ولكن أيضًا 6 موضوعات محددة مسبقًا ، ونظامًا متقدمًا لاختصارات لوحة المفاتيح والأسماء المستعارة للأوامر. لم يقتصر نهجهم الشامل على المظهر: ميزات k9s مثيرة للإعجاب: إدارة الموارد ، وعرض حالة الكتلة ، وعرض الموارد في تمثيل هرمي مع التبعيات ، وسجلات العرض ، ودعم RBAC ، وتوسيع القدرات من خلال المكونات الإضافية ... لمجتمع K8s الواسع: عدد نجوم GitHub في المشروع بجودة لوحة Kubernetes Dashboard الرسمية تقريبًا!

4. تطبيق لوحات التحكم

وفي نهاية المراجعة - فئة مصغرة منفصلة. تضمنت واجهتين للويب مصممتين ليس للإدارة الشاملة لمجموعات Kubernetes ، ولكن لإدارة ما يتم نشره فيها.

كما تعلم ، تعد Helm واحدة من أكثر الأدوات نضجًا وانتشارًا لنشر التطبيقات المعقدة في Kubernetes. خلال فترة وجودها ، تراكمت العديد من الحزم (مخططات Helm) لنشرها بسهولة العديد من التطبيقات الشعبية. لذلك ، فإن ظهور الأدوات المرئية المناسبة التي تسمح لك بإدارة دورة حياة المخططات أمر منطقي تمامًا.

4.1. أحادي

  • مخزن (1300+ نجوم جيثب) ؛
  • الترخيص: Apache 2.0 ؛
  • باختصار: "تطبيق ويب للبحث عن مخططات Helm واكتشافها عبر مستودعات متعددة. يعمل كأساس لمشروع هيلم هور ".

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

تم تثبيت هذا التطوير من مؤلفي Helm في Kubernetes ويعمل ضمن نفس المجموعة ، حيث يؤدي المهمة. ومع ذلك ، في الوقت الحاضر ، لم يتم تطوير المشروع تقريبًا. والغرض الرئيسي منه هو دعم وجود Helm Hub. للاحتياجات الأخرى ، يوصي المؤلفون بـ Kubeapps (انظر أدناه) أو Red Hat Automation Broker (جزء من OpenShift ، ولكن أيضًا لم يعد قيد التطوير).

4.2 كوبيبس

  • الموقع;
  • عرض;
  • مخزن (~ 2100 نجمة جيثب) ؛
  • الترخيص: Apache 2.0
  • باختصار: "لوحة معلومات التطبيق الخاصة بك لـ Kubernetes."

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes

منتج من Bitnami ، تم تثبيته أيضًا في مجموعة Kubernetes ، ولكنه يختلف عن Monocular في تركيزه الأولي على العمل مع المستودعات الخاصة.

الوظائف والميزات الرئيسية لـ Kubeapps:

  • عرض وتثبيت مخططات Helm من المستودعات.
  • فحص وتحديث وإزالة التطبيقات المستندة إلى Helm المثبتة على الكتلة.
  • دعم مستودعات الرسوم البيانية المخصصة والخاصة (يدعم ChartMuseum و JFrog Artifactory).
  • عرض الخدمات الخارجية والعمل معها - من كتالوج الخدمة ووسطاء الخدمة.
  • نشر التطبيقات المثبتة باستخدام آلية ربط كتالوج الخدمة.
  • دعم المصادقة وفصل الحقوق باستخدام RBAC.

جدول التلخيص

يوجد أدناه جدول ملخص حاولنا فيه تلخيص وتجميع الميزات الرئيسية للواجهات المرئية الموجودة لتسهيل المقارنة:

نظرة عامة على واجهات المستخدم الرسومية لنظام Kubernetes
(نسخة على الإنترنت من الجدول متاح في مستندات جوجل.)

اختتام

تعد واجهات المستخدم الرسومية لـ Kubernetes مكانًا محددًا وشابًا إلى حد ما. ومع ذلك ، فهي تتطور بنشاط كبير: من الممكن بالفعل العثور على حلول ناضجة تمامًا ، وحلول صغيرة جدًا ، والتي لا يزال لديها مجال للنمو. إنها تلبي مجموعة متنوعة من التطبيقات ، وتقدم ميزات ومظهرًا يناسب جميع الأذواق تقريبًا. نأمل أن تساعدك هذه المراجعة في اختيار الأداة التي تناسب احتياجاتك الحالية.

PS

شكرًا لك kvaps للحصول على البيانات الموجودة على وحدة التحكم OpenShift لجدول المقارنة!

اقرأ أيضًا على مدونتنا:

المصدر: www.habr.com

إضافة تعليق