اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)

توجه داشته باشید. ترجمه: نویسنده مطلب اصلی هنینگ جاکوبز از زالاندو است. او یک رابط وب جدید برای کار با Kubernetes ایجاد کرد که به عنوان "kubectl برای وب" قرار می گیرد. چرا یک پروژه منبع باز جدید ظاهر شد و چه معیارهایی توسط راه حل های موجود برآورده نشد - مقاله او را بخوانید.

اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای 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 (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)

*توضیحات من در مورد تعداد محدود رابط های وب برای Kubernetes: سرویس های ابری و فروشندگان Kubernetes معمولاً فرانت اندهای خود را ارائه می دهند، بنابراین بازار رابط کاربری رایگان Kubernetes "خوب" نسبتاً کوچک است.

از طریق توییتی که در مورد آن باخبر شدم K8Dash, کوبرناتور и اکتانت. بیایید به آنها و سایر راه حل های منبع باز موجود نگاه کنیم، بیایید سعی کنیم آنها را بفهمیم.

K8Dash

"K8Dash ساده ترین راه برای مدیریت یک خوشه Kubernetes است."

اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)

K8Dash ظاهر خوب و سریعی دارد، اما برای موارد استفاده ذکر شده در بالا دارای معایبی است:

  • فقط در محدوده یک خوشه کار می کند.
  • مرتب سازی و فیلتر کردن امکان پذیر است، اما پیوند ثابت ندارند.
  • هیچ پشتیبانی برای تعاریف منابع سفارشی (CRD) وجود ندارد.

کوبرناتور

Kubernator یک رابط کاربری جایگزین برای Kubernetes است. برخلاف داشبورد سطح بالای Kubernetes، کنترل سطح پایین و دید عالی را به تمام اشیاء در خوشه با توانایی ایجاد موارد جدید، ویرایش آنها و حل تضادها ارائه می دهد. به عنوان یک برنامه کاملاً سمت کلاینت (مانند kubectl)، به هیچ بک اند دیگری غیر از خود سرور API Kubernetes نیاز ندارد و همچنین به قوانین دسترسی کلاستر احترام می گذارد.

اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)

این یک توصیف بسیار دقیق است کوبرناتور. متأسفانه، برخی از ویژگی ها را ندارد:

  • فقط به یک خوشه خدمت می کند.
  • حالت نمایش فهرستی وجود ندارد (یعنی نمی‌توانید همه پادها را با وضعیت «در انتظار» نمایش دهید).

داشبورد Kubernetes

داشبورد Kubernetes یک رابط وب جهانی برای خوشه‌های Kubernetes است. این به کاربران امکان می دهد برنامه های در حال اجرا در یک کلاستر و همچنین خود خوشه را مدیریت و عیب یابی کنند.

اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)

متاسفانه، داشبورد Kubernetes واقعاً به فعالیت‌های پشتیبانی و واکنش به حوادث من کمک نمی‌کند زیرا:

  • هیچ پیوند دائمی وجود ندارد، برای مثال وقتی منابع را فیلتر می کنم یا ترتیب مرتب سازی را تغییر می دهم.
  • هیچ راه آسانی برای فیلتر کردن بر اساس وضعیت وجود ندارد - به عنوان مثال، همه غلاف ها را با وضعیت "در انتظار" مشاهده کنید.
  • فقط یک خوشه پشتیبانی می شود.
  • CRD ها پشتیبانی نمی شوند (این ویژگی در حال توسعه است).
  • بدون ستون های سفارشی (مانند ستون هایی که بر اساس نوع برچسب گذاری شده اند kubectl -L).

نمای عملیاتی Kubernetes (kube-ops-view)

"System Dashboard Observer for K8s Cluster Space."

اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)

У نمای عملیاتی Kubernetes رویکردی کاملاً متفاوت: این ابزار فقط گره‌ها و غلاف‌های خوشه‌ای را با استفاده از WebGL نشان می‌دهد، بدون هیچ گونه جزئیات شی متنی. برای یک مرور سریع از سلامت خوشه (آیا غلاف ها در حال سقوط هستند؟)* عالی است، اما برای موارد استفاده از پشتیبانی و پاسخ به حادثه که در بالا توضیح داده شد مناسب نیست.

* توجه داشته باشید. ترجمه: از این نظر، ممکن است به افزونه ما نیز علاقه مند باشید grafana-statusmap، که در مورد آن با جزئیات بیشتر صحبت کردیم این مقاله.

گزارش منبع Kubernetes (kube-resource-report)

درخواست‌های منابع خوشه‌ای پاد و Kubernetes را جمع‌آوری کنید، آنها را با مصرف منابع مقایسه کنید و HTML ایستا تولید کنید.

اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)

گزارش منبع Kubernetes گزارش های HTML ایستا در مورد استفاده از منابع و توزیع هزینه در بین تیم ها / برنامه های کاربردی در خوشه ها ایجاد می کند. این گزارش تا حدودی برای پشتیبانی و پاسخ به رویداد مفید است زیرا به شما امکان می دهد به سرعت خوشه ای را که برنامه در آن مستقر شده است پیدا کنید.

توجه داشته باشید. ترجمه: یک سرویس و ابزار همچنین ممکن است برای مشاهده اطلاعات مربوط به تخصیص منابع و هزینه های آنها در میان ارائه دهندگان ابر مفید باشد. کوبکوست، که بررسی می کنیم اخیرا منتشر شده است.

اکتانت

"یک پلتفرم وب قابل توسعه برای توسعه دهندگان طراحی شده برای ارائه درک بیشتر از پیچیدگی خوشه های Kubernetes."

اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)

اکتانت، که توسط VMware ایجاد شده است، محصول جدیدی است که من نسبتاً اخیراً با آن آشنا شدم. با کمک آن، کاوش خوشه در یک ماشین محلی راحت است (حتی تجسم هایی وجود دارد)، اما مسائل مربوط به پشتیبانی و پاسخ حادثه را فقط تا حد محدودی بررسی می کند. معایب اکتانت:

  • جستجوی خوشه ای وجود ندارد.
  • فقط روی ماشین محلی کار می کند (در یک خوشه مستقر نمی شود).
  • نمی توان اشیا را مرتب کرد/فیلتر کرد (فقط انتخابگر برچسب پشتیبانی می شود).
  • شما نمی توانید ستون های سفارشی را مشخص کنید.
  • شما نمی توانید اشیاء را بر اساس فضای نام فهرست کنید.

من همچنین با پایداری Octant با خوشه های Zalando مشکل داشتم: در برخی از CRD او در حال سقوط بود.

معرفی Kubernetes Web View

"kubectl برای وب".

اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)

پس از تجزیه و تحلیل گزینه های رابط موجود برای Kubernetes، تصمیم گرفتم یک رابط جدید ایجاد کنم: Kubernetes WebView. در واقع، من فقط به تمام قدرت نیاز دارم kubectl در وب، یعنی:

  • در دسترس بودن همه عملیات (فقط خواندنی) که کاربران ترجیح می دهند برای آنها از kubectl استفاده کنند.
  • همه URL ها باید دائمی باشند و صفحه را به شکل اصلی خود نشان دهند تا همکاران بتوانند آنها را به اشتراک بگذارند و از آنها در ابزارهای دیگر استفاده کنند.
  • پشتیبانی از تمام اشیاء Kubernetes، که به شما امکان می دهد هر نوع مشکلی را حل کنید.
  • لیست های منابع باید برای کارهای بیشتر قابل دانلود باشند (در صفحات گسترده، ابزارهای CLI مانند grep) و ذخیره سازی (به عنوان مثال، برای پس از مرگ)؛
  • پشتیبانی از انتخاب منابع بر اساس برچسب (شبیه به kubectl get .. -l);
  • توانایی ایجاد لیست های ترکیبی از انواع مختلف منابع (مشابه با kubectl get all) برای به دست آوردن یک تصویر عملیاتی مشترک در بین همکاران (به عنوان مثال، در طول یک واکنش حادثه)؛
  • امکان افزودن پیوندهای عمیق هوشمند سفارشی به ابزارهای دیگر مانند داشبورد، لاگر، رجیستری برنامه و غیره. برای تسهیل عیب یابی/رفع خطاها و پاسخگویی به حوادث؛
  • قسمت جلویی باید تا حد امکان ساده باشد (HTML خالص) تا از مشکلات تصادفی مانند جاوا اسکریپت منجمد جلوگیری شود.
  • پشتیبانی از چندین خوشه برای ساده کردن تعامل در طول مشاوره از راه دور (به عنوان مثال، برای به خاطر سپردن تنها یک URL).
  • در صورت امکان، تجزیه و تحلیل موقعیتی باید ساده شود (به عنوان مثال، با پیوندهایی برای دانلود منابع برای همه خوشه ها / فضاهای نام).
  • فرصت های اضافی برای ایجاد پیوندهای انعطاف پذیر و برجسته کردن اطلاعات متنی، به عنوان مثال، به طوری که شما می توانید همکاران را به یک بخش خاص در توضیحات منبع راهنمایی کنید (یک خط در YAML).
  • توانایی سفارشی سازی بر اساس نیازهای یک کلاینت خاص، به عنوان مثال، به شما امکان می دهد الگوهای نمایشی ویژه ای برای CRD، نمای جدول خود و تغییر سبک های CSS ایجاد کنید.
  • ابزارهایی برای کاوش بیشتر در خط فرمان (به عنوان مثال، نمایش دستورات کامل kubectl، آماده برای کپی کردن)؛

فراتر از وظایف حل شده در Kubernetes Web View (بدون گل) باقی ماند:

  • انتزاع اشیاء Kubernetes.
  • مدیریت برنامه (به عنوان مثال، مدیریت استقرار، نمودارهای هلم و غیره)؛
  • عملیات نوشتن (باید از طریق ابزارهای امن CI/CD و/یا GitOps انجام شود).
  • رابط کاربری زیبا (جاوا اسکریپت، تم ها و غیره)؛
  • تجسم (نگاه کنید به kube-ops-view);
  • تجزیه و تحلیل هزینه (نگاه کنید به kube-resource-report).

چگونه Kubernetes Web View به پشتیبانی و پاسخ به حادثه کمک می کند؟

پشتیبانی

  • همه لینک ها دائمی هستند، که تبادل اطلاعات با همکاران را آسان تر می کند.
  • می توانید ایجاد کنید ایده های توبه عنوان مثال، همه Deployments و Pods را با یک برچسب خاص در دو کلاستر خاص نمایش دهید (چند نام خوشه و نوع منبع را می توان در پیوند مشخص کرد که با کاما از هم جدا شده اند).
  • می توانید مراجعه کنید خطوط خاص در یک فایل YAML شی، مشکلات بالقوه در مشخصات شی را نشان می دهد.

اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)
جستجو بر اساس خوشه ها در نمای وب Kubernetes

پاسخ حادثه

  • جستجوی جهانی (جستجوی جهانی) به شما امکان می دهد اشیاء را در همه خوشه ها جستجو کنید.
  • نماهای فهرست می تواند تمام اشیاء را با یک وضعیت/ستون خاص در همه خوشه ها نمایش دهد (به عنوان مثال، ما باید همه غلاف ها را با وضعیت "در انتظار" پیدا کنیم).
  • لیست اشیاء را می توان دانلود کرد در قالب ارزش جدا شده با تب (TSV) برای تجزیه و تحلیل بعدی.
  • پیوندهای خارجی قابل تنظیم به شما امکان می دهد به داشبوردهای مرتبط و ابزارهای دیگر سوئیچ کنید.

اعلام نمای وب Kubernetes (و مروری کوتاه بر سایر رابط های وب برای Kubernetes)
نمای وب Kubernetes: لیستی از غلاف ها با وضعیت "در انتظار" در همه خوشه ها

اگر می خواهید Kubernetes Web View را امتحان کنید، توصیه می کنم بررسی کنید مستندات یا نگاه کنید نسخه ی نمایشی زنده.

البته، رابط می تواند بهتر باشد، اما در حال حاضر Kubernetes Web View ابزاری برای «کاربران پیشرفته» است که در صورت لزوم از دستکاری مسیرهای URL به صورت دستی ابایی ندارند. اگر نظر/اضافه/پیشنهادی دارید لطفا تماس بگیرید با من در توییتر!

این مقاله تاریخچه مختصری از پیشینه ای است که منجر به ایجاد وب نمای Kubernetes شد. بیشتر دنبال خواهد شد! (توجه داشته باشید. ترجمه: باید از آنها انتظار داشت وبلاگ نویسنده.)

PS از مترجم

در وبلاگ ما نیز بخوانید:

منبع: www.habr.com

اضافه کردن نظر