إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)

ملحوظة. ترجمة.: أرسلها في الأصل هينينج جاكوبس من زالاندو. لقد أنشأ واجهة ويب جديدة للعمل مع Kubernetes ، والتي تم وضعها كـ "kubectl للويب". لماذا ظهر مشروع مفتوح المصدر جديد وما هي المعايير التي لم تستوفها الحلول الحالية - اقرأ في مقالته.

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)

في هذا المنشور ، أراجع العديد من واجهات الويب Kubernetes مفتوحة المصدر ، وحدد متطلباتي لواجهة مستخدم عامة ، وأشرح سبب تطويري Kubernetes WebView - واجهة مصممة لتسهيل الدعم واستكشاف الأخطاء وإصلاحها في مجموعات متعددة في وقت واحد.

استخدم حالات

في Zalando ، نخدم عددًا كبيرًا من مستخدمي Kubernetes (900+) والمجموعات (100+). هناك حالتان من حالات الاستخدام النموذجية حيث تكون مساعدة أداة الويب المتخصصة مفيدة للغاية:

  1. التواصل مع الزملاء في إطار الدعم ؛
  2. الاستجابة للحوادث والتحقيق في أسبابها.

Поддержка

من واقع خبرتي ، غالبًا ما يبدو اتصال الدعم كما يلي:

- مساعدة ، خدمة XYZ الخاصة بنا غير متوفرة!
ماذا ترى عندما تفعل kubectl describe ingress ...?

أو شيء مشابه لـ CRD:

- لدي مشكلة مع خدمة تحديد الهوية ...
- ماذا يصدر الأمر؟ kubectl describe platformcredentialsset ...?

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

لذلك ، أريد أن تسمح واجهة الويب Kubernetes بما يلي:

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

الاستجابة للحادث والتحليل

تتطلب الاستجابة لحوادث البنية التحتية وعيًا بالحالة والقدرة على تقييم التأثير والبحث عن الأنماط في المجموعات. بعض الأمثلة الواقعية:

  • تواجه إحدى خدمات الإنتاج المهمة مشكلات وتحتاج إلى ذلك العثور على جميع موارد Kubernetes بالاسم في جميع المجموعاتلاستكشاف الأخطاء وإصلاحها ؛
  • تبدأ العقد في الانخفاض عند القياس وتحتاج إلى ذلك العثور على جميع الكبسولات ذات الحالة "معلقة" في جميع المجموعاتلتقييم نطاق المشكلة ؛
  • يبلغ المستخدمون الفرديون عن مشكلة في DaemonSet المنتشرة عبر جميع المجموعات ويحتاجون إلى معرفة ما إذا كان هل المشكلة منتشرة؟.

الحل القياسي في مثل هذه الحالات هو شيء من هذا القبيل for i in $clusters; do kubectl ...; done. من الواضح أنه من الممكن تطوير أداة توفر قدرات مماثلة.

واجهات ويب Kubernetes الحالية

العالم مفتوح المصدر لواجهات الويب لـ Kubernetes ليس كبيرًا جدًا * ، لذلك حاولت جمع معلومات إضافية باستخدام تويتر:

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)

* تفسيري للعدد المحدود من واجهات مستخدم الويب Kubernetes هو أن الخدمات السحابية وبائعي Kubernetes يقدمون عادةً واجهات أمامية خاصة بهم ، وبالتالي فإن سوق واجهات مستخدم Kubernetes المجانية "الجيدة" صغيرة نسبيًا.

بمساعدة تغريدة ، اكتشفت ذلك K8داش, كوبرناتور и أوكتانت. دعونا نلقي نظرة عليها وحلول مفتوحة المصدر أخرى موجودة ، نحاول فهم ماهيتها.

K8داش

"K8Dash هي أبسط طريقة لإدارة مجموعة Kubernetes."

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)

K8داش يبدو جيدًا وسريعًا ، لكن له بعض العيوب في حالات الاستخدام المذكورة أعلاه:

  • يعمل فقط داخل حدود مجموعة واحدة.
  • الفرز والتصفية ممكنان ، لكن لا توجد روابط ثابتة.
  • لا يوجد دعم لتعريفات الموارد المخصصة (CRDs).

كوبرناتور

"Kubernator هي واجهة مستخدم بديلة لـ Kubernetes. على عكس لوحة تحكم Kubernetes عالية المستوى ، فإنها توفر تحكمًا منخفض المستوى ونظرة عامة رائعة على جميع الكائنات في المجموعة مع القدرة على إنشاء كائنات جديدة وتعديلها وحل التعارضات. نظرًا لكونه تطبيق عميل بالكامل (مثل kubectl) ، فإنه لا يتطلب أي واجهة خلفية بخلاف خادم Kubernetes API نفسه ، كما أنه يحترم قواعد الوصول إلى المجموعة ".

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)

هذا وصف دقيق جدا. كوبرناتور. للأسف ، يفتقر إلى بعض الميزات:

  • يخدم مجموعة واحدة فقط.
  • لا يوجد وضع لعرض القائمة (أي لا يمكنك إظهار جميع البودات بالحالة "معلقة").

لوحة تحكم Kubernetes

"Kubernetes Dashboard هي واجهة ويب عالمية لمجموعات Kubernetes. فهي تتيح للمستخدمين إدارة واستكشاف أخطاء التطبيقات التي تعمل في المجموعة ، فضلاً عن إدارة المجموعة نفسها ".

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)

للأسف، لوحة تحكم Kubernetes لا تساعدني كثيرًا في دعمي وأنشطة الاستجابة للحوادث لأنها:

  • لا توجد روابط ثابتة ، مثل عندما أقوم بتصفية الموارد أو تغيير ترتيب الفرز ؛
  • لا توجد طريقة سهلة للتصفية حسب الحالة - على سبيل المثال ، لرؤية جميع الكبسولات بالحالة "معلقة" ؛
  • يتم دعم مجموعة واحدة فقط ؛
  • غير مدعوم من قبل CRD (هذه الميزة قيد التطوير) ؛
  • لا توجد أعمدة مخصصة (على سبيل المثال ، الأعمدة المصنفة حسب النوع kubectl -L).

العرض التشغيلي Kubernetes (kube-ops-view)

"مراقب لوحة النظام لمساحة مجموعة K8s".

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)

У عرض Kubernetes التشغيلي نهج مختلف تمامًا: لا تعرض هذه الأداة سوى العقد العنقودية والبودات باستخدام WebGL ، دون أي تفاصيل نصية للكائنات. إنه أمر رائع للحصول على نظرة عامة سريعة على حالة المجموعة ("هل تتدهور البودات؟") * ، ولكنها ليست مناسبة لحالات استخدام الدعم والاستجابة للحوادث الموضحة أعلاه.

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

تقرير موارد Kubernetes (kube-Resource-report)

"اجمع طلبات موارد مجموعة pod و Kubernetes ، وقارنها باستهلاك الموارد ، وقم بإنشاء HTML ثابت."

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)

تقرير موارد Kubernetes تنشئ تقارير HTML ثابتة حول استخدام الموارد وتخصيص التكلفة عبر الفرق / التطبيقات عبر المجموعات. يعد التقرير مفيدًا إلى حد ما في الدعم والاستجابة للحوادث لأنه يتيح لك العثور بسرعة على المجموعة التي تم نشر التطبيق فيها.

ملحوظة. ترجمة.: عند عرض تفاصيل توزيع الموارد وتكلفتها في موفري السحابة ، يمكن أن تكون الخدمة والأداة مفيدة أيضًا. كوبيكوستالتي نراجعها نشرت مؤخرا.

أوكتانت

"نظام أساسي على الويب قابل للتوسيع للمطورين لتوفير فهم أفضل لمدى تعقيد مجموعات Kubernetes."

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)

أوكتانت، الذي تم إنشاؤه بواسطة VMware ، هو منتج جديد تعرفت عليه مؤخرًا نسبيًا. بفضل مساعدتها ، من المريح استكشاف الكتلة الموجودة على الجهاز المحلي (حتى أن هناك تصورات) ، لكنها تتطرق فقط إلى قضايا الدعم والاستجابة للحوادث إلى حد محدود. عيوب Octant:

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

لقد واجهت أيضًا مشكلات في استقرار Octant مع مجموعات Zalando: في بعض CRDs سقط.

تقديم Kubernetes Web View

kubectl للويب.

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)

بعد تحليل خيارات الواجهة المتاحة لـ Kubernetes ، قررت إنشاء واجهة جديدة: Kubernetes WebView. بعد كل شيء ، في الواقع ، أنا فقط بحاجة إلى كل القوة kubectl على الويب ، أي:

  • توافر جميع العمليات (للقراءة فقط) التي يفضل المستخدمون فيها استخدام kubectl ؛
  • يجب أن تكون جميع عناوين URL دائمة وأن تقدم الصفحة في شكلها الأصلي حتى يتمكن الزملاء من مشاركتها واستخدامها في أدوات أخرى ؛
  • دعم جميع كائنات Kubernetes ، مما سيتيح لك حل أي نوع من المشكلات ؛
  • يجب أن تكون قوائم الموارد قابلة للتنزيل لمزيد من العمل (في جداول البيانات وأدوات CLI مثل grep) والتخزين (على سبيل المثال ، بعد الوفاة) ؛
  • دعم اختيار الموارد عن طريق التسميات (على غرار kubectl get .. -l);
  • القدرة على إنشاء قوائم مجمعة لأنواع مختلفة من الموارد (على غرار kubectl get all) للحصول على صورة تشغيلية مشتركة بين الزملاء (على سبيل المثال ، في عملية الاستجابة لحادث ما) ؛
  • القدرة على إضافة روابط عميقة "ذكية" مخصصة إلى أدوات أخرى مثل لوحات المعلومات ، وأجهزة التسجيل ، وسجلات التطبيق ، وما إلى ذلك. لتسهيل استكشاف الأخطاء وإصلاحها / تصحيح الأخطاء والاستجابة للحوادث ؛
  • يجب أن تكون الواجهة الأمامية بسيطة قدر الإمكان (HTML خالص) لتجنب المشكلات العرضية ، مثل تعليق JavaScript ؛
  • دعم مجموعات متعددة لتبسيط التفاعل أثناء الاستشارات عن بُعد (على سبيل المثال ، لتذكر عنوان URL واحد فقط) ؛
  • إن أمكن ، يجب تبسيط تحليل الموقف (على سبيل المثال ، مع روابط لتنزيل الموارد عبر جميع المجموعات / مساحات الأسماء) ؛
  • فرص إضافية لإنشاء روابط مرنة وإبراز المعلومات النصية ، على سبيل المثال ، بحيث يمكنك توجيه الزملاء إلى قسم معين في وصف المورد (سطر في YAML) ؛
  • القدرة على التكيف مع متطلبات عميل معين ، على سبيل المثال ، السماح لك بإنشاء قوالب عرض خاصة لـ CRD ، وطرق عرض الجدول الخاصة بك ، وتغيير أنماط CSS ؛
  • أدوات لمزيد من الدراسة على سطر الأوامر (على سبيل المثال ، إظهار الأوامر الكاملة kubectlجاهز للنسخ) ؛

خارج المهام التي تم حلها في Kubernetes Web View (غير الأهداف) بقي:

  • تجريد كائنات Kubernetes ؛
  • إدارة التطبيقات (على سبيل المثال ، إدارة النشر ، مخططات Helm ، إلخ) ؛
  • عمليات الكتابة (يجب أن تتم من خلال CI / CD آمن و / أو صندوق أدوات GitOps) ؛
  • واجهة جميلة (JavaScript ، سمات ، إلخ) ؛
  • التصور (انظر عرض kube-ops);
  • تحليل التكلفة (انظر تقرير الموارد kube).

كيف يساعد Kubernetes Web View في دعم الحوادث والاستجابة لها؟

Поддержка

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

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)
البحث العنقودي في Kubernetes Web View

الاستجابة للحادث

  • بحث عالمي (بحث عالمي) يسمح لك بالبحث عن كائنات في جميع المجموعات.
  • طرق عرض القائمة يمكن عرض جميع الكائنات مع حالة / عمود معين في جميع المجموعات (على سبيل المثال ، نحتاج إلى العثور على جميع البودات بالحالة "معلقة").
  • يمكن تنزيل قوائم الكائنات بتنسيق قيم مفصولة بعلامات جدولة (TSV) لتحليلها لاحقًا.
  • روابط خارجية مخصصة تسمح لك بالتبديل إلى لوحات المعلومات والأدوات الأخرى ذات الصلة.

إعلان عن Kubernetes Web View (ونظرة عامة مختصرة عن واجهات مستخدم الويب الأخرى لـ Kubernetes)
Kubernetes Web View: قائمة البودات بالحالة "معلقة" في جميع المجموعات

إذا كنت تريد تجربة Kubernetes Web View ، فإنني أوصيك بالقراءة توثيق أو إلقاء نظرة على عرض حي.

بالطبع ، يمكن أن تكون الواجهة أفضل ، ولكن في الوقت الحالي ، Kubernetes Web View هي أداة "للمستخدمين المتقدمين" الذين لا يخجلون من معالجة مسارات URL يدويًا إذا لزم الأمر. إذا كان لديك أي تعليقات / إضافات / اقتراحات ، يرجى الاتصال تابعني على تويتر!

هذه المقالة هي مقدمة موجزة للخلفية التي أدت إلى إنشاء Kubernetes Web View. سيتبع الآخرون! (ملحوظة. ترجمة.: يجب توقعها في مدونة المؤلف.)

PS من المترجم

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

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

إضافة تعليق