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

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



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

استخدام الحالات


في 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 for i in $clusters; do kubectl ...; done for i in $clusters; do kubectl ...; done من الواضح ، يمكنك تطوير أداة توفر إمكانيات مماثلة.

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


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



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

لقد قمت بالتغريد عن K8Dash و Kubernator و Octant . لنلقِ نظرة عليها وعلى الحلول الأخرى مفتوحة المصدر ، حاول أن تفهم ما هي عليه.

K8Dash


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



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

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

Kubernator


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



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

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

Kubernetes Dashboard


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



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

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

Kubernetes Operational View (kube-ops-view)


"لوحة نظام المراقبة الفضائية K8s."



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

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

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


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



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

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

ثمن محيط الدائرة


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



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

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

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

تقديم Kubernetes Web View


"Kubectl للويب."



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

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

خارج الأهداف التي تم حلها بواسطة Kubernetes Web View ، هناك:

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

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

دعم


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



البحث العنقودي في Kubernetes Web View

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


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



Kubernetes Web View: قائمة بالقرون ذات الوضع المعلق في جميع المجموعات

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

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

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

PS من المترجم


اقرأ أيضًا في مدونتنا:

Source: https://habr.com/ru/post/ar468041/


All Articles