ProHoster > وبلاگ > اداره > مروری بر رابطهای کاربری گرافیکی برای Kubernetes
مروری بر رابطهای کاربری گرافیکی برای Kubernetes
برای کار کامل با سیستم، دانش ابزارهای خط فرمان مهم است: در مورد Kubernetes، این Kubectl است. از سوی دیگر، رابط های گرافیکی خوب طراحی شده و متفکرانه می توانند عملکرد خوبی داشته باشندоبسیاری از وظایف معمول و باز کردن فرصت های اضافی برای بهره برداری از سیستم ها.
سال گذشته ترجمه ای را منتشر کردیم نمای کلی کوچک از رابط کاربری وب برای Kubernetes، همزمان با اعلام رابط وب Kubernetes WebView. نویسنده آن مقاله و خود ابزار، هنینگ جاکوبز از Zalando، محصول جدید را به عنوان "kubectl برای وب" معرفی کرد. او میخواست ابزاری با قابلیتهای کاربر پسند برای تعامل در قالب پشتیبانی فنی (مثلاً نشان دادن سریع مشکل با یک لینک وب) و برای پاسخگویی به حوادث، جستجوی مشکلات در بسیاری از خوشهها به طور همزمان ایجاد کند. نسل او در حال حاضر (عمدتاً با تلاش خود نویسنده) در حال رشد است.
از آنجایی که ما به بسیاری از خوشههای Kubernetes در اندازههای مختلف خدمات میدهیم، همچنین علاقهمندیم که بتوانیم یک ابزار بصری به مشتریان خود ارائه دهیم. هنگام انتخاب یک رابط مناسب، ویژگی های زیر برای ما کلیدی بود:
پشتیبانی از تمایز حقوق کاربر (RBAC)؛
تجسم وضعیت فضای نام و استانداردهای اولیه Kubernetes (استقرار، StatefulSet، Service، Cronjob، Job، Ingress، ConfigMap، Secret، PVC).
دسترسی به خط فرمان داخل غلاف؛
مشاهده سیاهههای مربوط به غلاف.
مشاهده وضعیت غلاف ها (describe status);
برداشتن غلاف
سایر عملکردها، مانند مشاهده منابع مصرف شده (در زمینه پادها / کنترلرها / فضاهای نام)، ایجاد / ویرایش اولیه K8s، در جریان کاری ما مرتبط نیستند.
ما بررسی را با داشبورد کلاسیک Kubernetes، که استاندارد ما است، آغاز خواهیم کرد. از آنجایی که دنیا ثابت نمیماند (به این معنی که Kubernetes دارای رابط کاربری گرافیکی جدید و بیشتری است)، ما همچنین در مورد جایگزینهای فعلی آن صحبت خواهیم کرد و همه چیز را در یک جدول مقایسهای در پایان مقاله خلاصه میکنیم.
NB: در بررسی، با آن راه حل هایی که قبلاً در نظر گرفته شده است، تکرار نمی کنیم آخرین مقالهبا این حال، به منظور کامل بودن، گزینه های مربوطه از آن (K8Dash، Octant، Kubernetes Web View) در جدول نهایی گنجانده شده است.
به طور خلاصه: "رابط وب جهانی برای خوشه های Kubernetes. این به کاربران اجازه می دهد تا برنامه های در حال اجرا در کلاستر را مدیریت و عیب یابی کنند و همچنین خود خوشه را مدیریت کنند.
این یک پانل با هدف عمومی است که توسط نویسندگان Kubernetes در اسناد رسمی پوشش داده شده است (ولی غیر قابل استقرار پیش فرض). برای نیازهای عملیات روزمره و اشکال زدایی برنامه ها در یک خوشه طراحی شده است. در خانه، ما از آن به عنوان یک ابزار بصری سبک وزن کامل استفاده می کنیم که به ما امکان می دهد دسترسی لازم و کافی به خوشه را برای توسعه دهندگان فراهم کنیم. قابلیت های آن تمامی نیازهای آنها را که در فرآیند استفاده از خوشه به وجود می آید را پوشش می دهد (در این مقاله ما برخی از ویژگی های پانل را نشان دادیم). همانطور که ممکن است حدس بزنید، این بدان معنی است که تمام الزامات ذکر شده در بالا را برآورده می کند.
از جمله ویژگی های اصلی داشبورد Kubernetes:
ناوبری: اشیاء اصلی K8s را در زمینه فضای نام مشاهده کنید.
اگر حقوق سرپرست دارید، پانل گرهها، فضاهای نام و حجمهای پایدار را نشان میدهد. برای گره ها، آماری در مورد استفاده از حافظه، پردازنده، تخصیص منابع، معیارها، وضعیت، رویدادها و غیره موجود است.
برنامه های کاربردی مستقر در یک فضای نام را بر اساس نوع آنها (Deployment، StatefulSet، و غیره)، روابط بین آنها (ReplicaSet، Horizontal Pod Autoscaler)، آمار و اطلاعات عمومی و شخصی مشاهده کنید.
مشاهده سرویسها و ورودیها، و همچنین روابط آنها با پادها و نقاط پایانی.
مشاهده اشیاء و ذخیرهسازیهای فایل: حجم پایدار و ادعای حجم پایدار.
ConfigMap و Secret را مشاهده و ویرایش کنید.
دیدن گزارش وقایع.
دسترسی به خط فرمان در کانتینرها
یک ایراد قابل توجه (اما نه برای ما) این است که هیچ پشتیبانی از کار چند خوشه ای وجود ندارد. این پروژه به طور فعال توسط جامعه توسعه داده می شود و ویژگی های مربوطه را با انتشار نسخه های جدید و مشخصات Kubernetes API حفظ می کند: آخرین نسخه پنل v2.0.1 22 مه 2020 - برای سازگاری با Kubernetes 1.18 تست شده است.
این پروژه به عنوان یک محیط توسعه یکپارچه کامل (IDE) برای Kubernetes قرار گرفته است. علاوه بر این، برای کار با بسیاری از خوشه ها و تعداد زیادی پاد در حال اجرا در آنها بهینه شده است (تست شده روی 25 پاد).
ویژگی ها/قابلیت های اصلی لنز:
برنامه مستقلی که نیازی به نصب هیچ چیز در داخل خوشه ندارد (به طور دقیق تر، Prometheus برای دریافت تمام معیارها مورد نیاز است، اما نصب موجود نیز می تواند برای این کار استفاده شود). نصب "اصلی" بر روی یک رایانه شخصی با لینوکس، macOS یا ویندوز انجام می شود.
مدیریت چند خوشه ای (صدها خوشه پشتیبانی می شود).
تجسم وضعیت خوشه در زمان واقعی.
نمودارهای استفاده از منابع و روندها با تاریخچه بر اساس پرومتئوس داخلی.
دسترسی به خط فرمان کانتینرها و گره های خوشه ای.
پشتیبانی کامل از Kubernetes RBAC.
نسخه فعلی - 3.5.0 مورخ 16 ژوئن 2020 که در اصل توسط Kontena ایجاد شد، امروز تمام مالکیت معنوی به یک سازمان خاص منتقل شده است. آزمایشگاه لاکند، "اتحادیه متخصصان و متخصصان بومی ابری" نامیده می شود که مسئولیت "حفظ و در دسترس بودن نرم افزار و محصولات منبع باز Kontena" را بر عهده دارد.
لنز دومین پروژه محبوب GitHub از دسته رابط کاربری گرافیکی Kubernetes است که فقط داشبورد Kubernets را از دست می دهد. همه راه حل های منبع باز دیگر که از دسته CLI* نیستند از نظر محبوبیت به طور قابل توجهی پایین تر هستند.
این یک برنامه اختصاصی است که بر روی رایانه شخصی نصب شده است (لینوکس، macOS، ویندوز پشتیبانی می شوند). نویسندگان آن وعده جایگزینی کامل ابزار خط فرمان را می دهند و با آن - نیازی به یادآوری دستورات و حتی افزایش ده برابری سرعت نیست.
یکی از ویژگی های جالب این ابزار پشتیبانی داخلی از نمودار Helm است و یکی از ایرادات آن عدم وجود معیارهای عملکرد برنامه است.
ویژگی های اصلی Kubernetic:
نمایش راحت وضعیت خوشه. یک صفحه برای مشاهده تمام اشیاء خوشه مرتبط و وابستگی های آنها. وضعیت آمادگی قرمز/سبز برای همه اشیا؛ حالت نمایش وضعیت خوشه ای با به روز رسانی وضعیت بلادرنگ.
دکمه های عمل سریع برای حذف و مقیاس بندی برنامه.
پشتیبانی از عملیات چند خوشه ای
کار ساده با فضاهای نام.
پشتیبانی از نمودارهای Helm و مخازن Helm (از جمله مخازن خصوصی). نصب و مدیریت نمودارها در رابط وب.
هزینه فعلی محصول یک بار پرداخت 30 یورو برای استفاده از آن توسط یک نفر برای هر تعداد فضای نام و خوشه است.
به طور خلاصه: "Kubevious خوشه های Kubernetes، پیکربندی برنامه و مشاهده وضعیت را ایمن و قابل درک می کند."
ایده این پروژه ایجاد ابزاری است که برای تجزیه و تحلیل و اشکالزدایی تنظیمات برنامههای کاربردی مستقر در یک خوشه طراحی شده است. نویسندگان در درجه اول بر اجرای این ویژگی ها تمرکز کردند و چیزهای کلی تری را برای بعد گذاشتند.
ویژگی ها و عملکردهای کلیدی Kubevious:
تجسم خوشه به روشی برنامه محور: اشیاء مرتبط در رابط گروه بندی می شوند و در یک سلسله مراتب قرار می گیرند.
نمایش بصری وابستگی ها در پیکربندی ها و پیامدهای آبشاری تغییرات آنها.
نمایش خطاهای پیکربندی کلاستر: استفاده نادرست از برچسب ها، پورت های از دست رفته و غیره. (به هر حال، اگر به این ویژگی علاقه مند هستید، به آن توجه کنید ستاره قطبیکه در مورد آن ما قبلا نوشته بود.)
علاوه بر نکته قبلی، شناسایی کانتینرهای بالقوه خطرناک در دسترس است، یعنی. داشتن امتیازات بیش از حد (ویژگی ها hostPID, hostNetwork, hostIPC، کوه docker.sock و غیره).
سیستم جستجوی پیشرفته برای خوشه (نه تنها با نام اشیاء، بلکه با ویژگی های آنها).
ابزارهایی برای برنامه ریزی ظرفیت و بهینه سازی منابع.
"ماشین زمان" داخلی (قابلیت مشاهده تغییرات قبلی در پیکربندی اشیا).
مدیریت RBAC با یک جدول مرتبط محوری از Roles، RoleBindings، ServiceAccounts.
فقط با یک خوشه کار می کند.
این پروژه تاریخچه بسیار کوتاهی دارد (اولین انتشار در 11 فوریه 2020 انجام شد) و به نظر می رسد که دوره ای از تثبیت یا کاهش سرعت در توسعه وجود داشته است. اگر نسخه های قبلی اغلب منتشر می شدند، آخرین نسخه (v0.5 15 آوریل 2020) از سرعت اولیه توسعه عقب مانده است. این احتمالاً به دلیل تعداد کم مشارکت کنندگان است: فقط 4 نفر از آنها در تاریخچه مخزن وجود دارد و تمام کار واقعی توسط یک نفر انجام می شود.
به طور خلاصه: "یک کلاینت ساده چند پلتفرمی برای Kubernetes."
محصول جدیدی از VMware که در ابتدا به عنوان بخشی از یک هکاتون داخلی (در ژوئن 2019) ایجاد شد. نصب شده بر روی یک کامپیوتر شخصی، بر اساس کار می کند الکترون (لینوکس، macOS و ویندوز پشتیبانی می شود) و به kubectl نسخه 1.14.0 یا جدیدتر نیاز دارد.
ویژگی های اصلی Kubewise:
تعامل رابط با متداول ترین موجودیت های Kubernetes: گره ها، فضاهای نام و غیره.
پشتیبانی از چندین فایل kubeconfig برای کلاسترهای مختلف.
ترمینال با قابلیت تنظیم متغیر محیطی KUBECONFIG.
فایل های kubeconfig سفارشی را برای فضای نام داده شده ایجاد کنید.
ویژگی های امنیتی پیشرفته (RBAC، رمزهای عبور، حساب های خدمات).
تا کنون، این پروژه تنها یک نسخه - نسخه دارد 1.1.0 به تاریخ 26 نوامبر 2019. علاوه بر این، نویسندگان قصد داشتند بلافاصله آن را به عنوان منبع باز منتشر کنند، اما به دلیل مشکلات داخلی (مربوط به مسائل فنی) نتوانستند این کار را انجام دهند. از ماه می 2020، نویسندگان در حال کار بر روی نسخه بعدی هستند و باید همزمان فرآیند باز کردن کد را آغاز کنند.
علیرغم این واقعیت که این رابط وب بخشی از توزیع OpenShift است (با استفاده از آن در آنجا نصب می شود اپراتور ویژه) نویسندگان ارائه شده است قابلیت نصب / استفاده از آن در نصب های عادی (وانیلی) Kubernetes.
کنسول OpenShift برای مدت طولانی در حال توسعه بوده است، بنابراین ویژگی های بسیاری را در خود جای داده است. به موارد اصلی اشاره می کنیم:
رویکرد رابط مشترک دو "چشم انداز" موجود در کنسول است: برای مدیران و برای توسعه دهندگان. حالت دیدگاه توسعه دهنده اشیاء را به شکلی گروه بندی می کند که برای توسعه دهندگان قابل درک تر است (بر اساس برنامه ها) و رابط را بر حل کارهای معمولی مانند استقرار برنامه ها، ردیابی وضعیت ساخت/استقرار، و حتی ویرایش کد از طریق Eclipse Che متمرکز می کند.
مدیریت حجم کار، شبکه، ذخیره سازی، حقوق دسترسی.
جداسازی منطقی بارهای کاری به پروژه ها و برنامه ها. در یکی از آخرین نسخه ها - v4.3 - ظاهر خاص داشبورد پروژه، که داده های معمول (تعداد و وضعیت استقرارها، پادها و غیره؛ مصرف منابع و سایر معیارها) را در یک قطعه پروژه نمایش می دهد.
به روز رسانی در نمایش زمان واقعی از وضعیت خوشه، تغییرات (رویدادها) که در آن رخ داده است. مشاهده سیاهههای مربوط
مشاهده داده های نظارت بر اساس Prometheus، Alertmanager و Grafana.
مدیریت ساختهایی که از طریق Docker اجرا میشوند (از یک مخزن مشخص شده با Dockerfile)، S2I یا ابزارهای خارجی دلخواه.
NB: ما دیگران را به مقایسه اضافه نکردیم توزیع های Kubernetes (به عنوان مثال، موارد بسیار کمتر شناخته شده Kubesphere): با وجود اینکه رابط کاربری گرافیکی می تواند در آنها بسیار پیشرفته باشد، معمولاً به عنوان بخشی از پشته یکپارچه یک سیستم بزرگ می آید. با این حال، اگر فکر می کنید که راه حل های کافی وجود ندارد که به طور کامل در نصب وانیلی K8s کار کند، در نظرات به ما اطلاع دهید.
پروژه ای از تیم Portainer که رابط محبوبی به همین نام برای کار با Docker ایجاد کرد. از آنجایی که پروژه در مراحل اولیه توسعه است (اولین و تنها نسخه بتا بیرون آمد 16 آوریل 2020)، ویژگی های آن را ارزیابی نکردیم. با این حال، ممکن است برای بسیاری جالب باشد: اگر این در مورد شماست، توسعه را دنبال کنید.
هدف این برنامه دسکتاپ جوان، تجسم و مدیریت منابع Kubernetes در زمان واقعی با یک رابط ساده کشیدن و رها کردن است. اشیاء پشتیبانی شده در حال حاضر عبارتند از Pod، Service، Deployment، StatefulSet، PersistentVolume، PersistentVolumeClaim، ConfigMap و Secret. به زودی آنها قول می دهند که از هلم پشتیبانی کنند. معایب اصلی نزدیک بودن کد است (انتظار می رود باز کردن "به نوعی") و عدم پشتیبانی لینوکس (تاکنون فقط نسخههای ویندوز و macOS در دسترس هستند، اگرچه این نیز به احتمال زیاد فقط یک مسئله زمان است).
به طور خلاصه: "یک رابط کنسول برای Kubernetes که به شما امکان می دهد کلاستر خود را به سبک مدیریت کنید."
این ابزار فقط در بخش جایزه نقد قرار داشت به این دلیل که رابط کاربری گرافیکی کنسول را ارائه می دهد. با این حال، نویسندگان به معنای واقعی کلمه حداکثر را از ترمینال خارج کردند و نه تنها یک رابط کاربر پسند، بلکه 6 تم از پیش تعریف شده و یک سیستم پیشرفته از میانبرهای صفحه کلید و نام مستعار دستورات را ارائه کردند. رویکرد کامل آنها به ظاهر محدود نمیشود: ویژگیهای k9s به طرز دلپذیری چشمگیر هستند: مدیریت منابع، نمایش وضعیت خوشه، نمایش منابع در یک نمایش سلسله مراتبی با وابستگیها، مشاهده گزارشها، پشتیبانی از RBAC، گسترش قابلیتها از طریق پلاگینها... همه اینها جذاب هستند. به جامعه گسترده K8s: تعداد ستارگان GitHub پروژه تقریباً به اندازه داشبورد رسمی Kubernetes هستند!
4. کنترل پنل های کاربردی
و در پایان بررسی - یک مینی دسته جداگانه. این شامل دو رابط وب بود که نه برای مدیریت جامع خوشههای Kubernetes، بلکه برای مدیریت آنچه در آنها مستقر شده است، طراحی شدهاند.
همانطور که می دانید یکی از بالغ ترین و گسترده ترین ابزارها برای استقرار برنامه های پیچیده در Kubernetes، Helm است. در طول دوره وجود آن، بسته های زیادی (نمودارهای هلم) برای استقرار آسان انباشته شده است بسیاری از برنامه های کاربردی محبوب. بنابراین، ظاهر ابزارهای بصری مناسب که به شما امکان می دهد چرخه عمر نمودارها را مدیریت کنید کاملاً منطقی است.
به طور خلاصه: «یک برنامه وب برای جستجو و کشف نمودارهای Helm در چندین مخزن. به عنوان پایه ای برای پروژه هلم هاب عمل می کند."
این توسعه از نویسندگان Helm در Kubernetes نصب شده است و در همان خوشه کار می کند و وظیفه را انجام می دهد. با این حال، در حال حاضر، این پروژه تقریبا توسعه نیافته است. هدف اصلی آن حمایت از وجود Helm Hub است. برای سایر نیازها، نویسندگان Kubeapps (به پایین مراجعه کنید) یا Red Hat Automation Broker (بخشی از OpenShift، اما دیگر در حال توسعه نیست) را توصیه می کنند.
رابط کاربری گرافیکی برای Kubernetes یک جایگاه نسبتاً خاص و جوان است. با این حال، بسیار فعال در حال توسعه است: در حال حاضر می توان هم راه حل های کاملاً بالغ و هم راه حل های بسیار جوان را پیدا کرد که هنوز جای رشد دارند. آنها برنامه های مختلفی را ارائه می دهند و ویژگی ها و ظاهری را ارائه می دهند که تقریباً با هر سلیقه ای مطابقت دارد. امیدواریم این بررسی به شما کمک کند تا ابزاری را انتخاب کنید که به بهترین وجه با نیازهای فعلی شما مطابقت دارد.
PS
متشکرم kvaps برای داده های موجود در کنسول OpenShift برای جدول مقایسه!