Агляд графічных інтэрфейсаў для Kubernetes

Агляд графічных інтэрфейсаў для Kubernetes

Для паўнавартаснай працы з сістэмай важна веданне ўтыліт каманднага радка: у выпадку з Kubernetes гэта kubectl. З іншага боку, добра спраектаваныя, прадуманыя графічныя інтэрфейсы могуць выконваць бобольшую частку звычайных задач і адкрыць дадатковыя магчымасці пры эксплуатацыі сістэм.

У мінулым годзе мы публікавалі пераклад невялікага агляду web UI для Kubernetes, прымеркаванага да анонсу вэб-інтэрфейсу Kubernetes Web View. Аўтар таго артыкула і самой утыліты – Henning Jacobs з кампаніі Zalando – як раз пазіцыянаваў навінку ў якасці "kubectl для вэба". Ён хацеў стварыць інструмент з зручнымі магчымасцямі для ўзаемадзеяння ў фармаце тэхпадтрымкі (напрыклад, хутка паказаць праблему вэб-спасылкай) і для рэакцыі на інцыдэнты, пошуку праблем у многіх кластарах адначасова. Яго стварэнне развіваецца і ў наш час (у асноўным, сіламі самога аўтара).

Абслугоўваючы мноства Kubernetes-кластэраў розных маштабаў, мы таксама зацікаўлены ў магчымасці прадастаўляць кліентам інструмент візуальнай працы. Пры выбары падыходнага інтэрфейсу ключавымі для нас былі наступныя магчымасці:

  • падтрымка размежавання правоў карыстальнікаў (RBAC);
  • візуалізацыя стану прасторы імёнаў і стандартных прымітываў Kubernetes (Deployment, StatefulSet, Service, Cronjob, Job, Ingress, ConfigMap, Secret, PVC);
  • атрыманне доступу да каманднага радка ўнутры pod'a;
  • прагляд логаў pod'аў;
  • прагляд стану pod'аў (describe status);
  • выдаленне pod'аў.

Іншыя функцыі, такія як прагляд спажываных рэсурсаў (у разрэзе pod'аў/кантролераў/прастор імёнаў), стварэнне/рэдагаванне прымітываў K8s, у рамках нашага працоўнага працэсу не актуальныя.

Агляд мы пачнем з класічнага Kubernetes Dashboard, прынятага за стандарт у нас. Паколькі свет не стаіць на месцы (а значыць – у Kubernetes з'яўляюцца ўсё новыя GUI), раскажам і пра яго актуальныя альтэрнатывы, абагульніўшы ўсё ў параўнальнай табліцы ў канцы артыкула.

NB: У аглядзе мы не будзем паўтарацца з тымі рашэннямі, што ўжо разглядаліся ў мінулым артыкуле, аднак - для паўнаты карціны - рэлевантныя опцыі з яе (K8Dash, Octant, Kubernetes Web View) уключаны ў фінальную табліцу.

1. Kubernetes Dashboard

  • Старонка дакументацыі;
  • Рэпазітар (8000+ зорак GitHub);
  • Ліцэнзія: Apache 2.0;
  • Сцісла: «Універсальны вэб-інтэрфейс для кластараў Kubernetes. Ён дазваляе карыстальнікам кіраваць праграмамі, якія працуюць у кластары, і ўстараняць іх непаладкі, а таксама кіраваць самім кластарам».

Агляд графічных інтэрфейсаў для Kubernetes

Гэта панэль агульнага прызначэння, якая разглядаецца аўтарамі Kubernetes у афіцыйнай дакументацыі (хоць і не разгортваецца па змаўчанні). Яна прызначана для патрэб паўсядзённай эксплуатацыі і адладкі прыкладанняў у кластары. У сябе мы яе выкарыстоўваем як паўнавартасны легкаважны візуальны сродак, якое дазваляе падаць распрацоўнікам неабходны і дастатковы доступ да кластара. Яе магчымасці пакрываюць усе іх запатрабаванні, што ўзнікаюць падчас выкарыстанні кластара гэтым артыкуле мы дэманстравалі некаторыя фічы панэлі). Як лёгка здагадацца, гэта азначае, што яна задавальняе ўсім нашым патрабаванням, пералічаным вышэй.

Сярод асноўных магчымасцяў Kubernetes Dashboard:

  • Навігацыя: прагляд асноўных аб'ектаў K8s у разрэзе прастор імёнаў.
  • Пры наяўнасці правоў адміністратара панэль паказвае вузлы, прасторы імёнаў і Persistent Volumes. Па вузлах даступная статыстыка па выкарыстанні памяці, працэсара, вылучэнне рэсурсаў, метрыкі, статут, падзеі і да т.п.
  • Прагляд прыкладанняў, разгорнутых у прасторы імёнаў, па іх тыпе (Deployment, StatefulSet і інш.), сувязяў паміж імі (ReplicaSet, Horizontal Pod Autoscaler), агульнай і персаналізаванай статыстыкі і інфармацыі.
  • Прагляд сэрвісаў і Ingress'аў, а таксама іх сувязяў з pod'амі і endpoint'амі.
  • Прагляд файлавых аб'ектаў і сховішчаў: Persistent Volume і Persistent Volume Claim.
  • Прагляд і рэдагаванне ConfigMap і Secret.
  • Прагляд логаў.
  • Доступ да каманднага радка ў кантэйнерах.

Значны недахоп (зрэшты, не для нас) - няма падтрымкі мультыкластарнай працы. Праект актыўна развіваецца супольнасцю і падтрымлівае актуальныя функцыі з выхадам новых версій і спецыфікацый Kubernetes API: апошняя версія панэлі. v2.0.1 ад 22 мая 2020 г. - пратэставаная на сумяшчальнасць з Kubernetes 1.18.

2. аб'ектыў

Агляд графічных інтэрфейсаў для Kubernetes

Праект пазіцыянуецца як паўнавартаснае інтэграванае асяроддзе распрацоўкі (IDE) для Kubernetes. Прычым яна аптымізавана для працы са мноствам кластараў і вялікай колькасцю запушчаных у іх pod'ов (пратэставана на 25 тысячах pod'ов).

Асноўныя асаблівасці/магчымасці Lens:

  • Аўтаномнае прыкладанне, якое не патрабуе ўстаноўкі чаго-небудзь ўнутры кластара (дакладней, для атрымання ўсіх метрык спатрэбіцца Prometheus, але для гэтага можна выкарыстоўваць і ўжо існуючую інсталяцыю). "Асноўная" жа ўсталёўка вырабляецца на персанальны кампутар пад кіраваннем Linux, macOS ці Windows.
  • Мультыкластэрнае кіраванне (падтрымліваюцца сотні кластараў).
  • Візуалізацыя стану кластара ў рэальным часе.
  • Графікі выкарыстання рэсурсаў і тэндэнцыі з гісторыяй на аснове убудаванага Prometheus.
  • Доступ да каманднага радка кантэйнераў і на вузлах кластара.
  • Поўная падтрымка Kubernetes RBAC.

Актуальны рэліз - 3.5.0 ад 16 чэрвеня 2020 г. Першапачатковая версія была створана ў кампаніі Kontena, а на сённяшні дзень уся інтэлектуальная ўласнасць перададзена ў спецыяльную арганізацыю Lakend Labs, званую "аб'яднаннем cloud native-гікаў і тэхнолагаў", што адказваюць за "захаванне і даступнасць Open Source-ПА і прадуктаў Kontena".

Lens – другі па папулярнасці праект на GitHub з катэгорыі GUI для Kubernetes, які прайгравае толькі ўласна Kubernets Dashboard. Усе астатнія Open Source-рашэнні не з катэгорыі CLI* значна саступаюць у папулярнасці.

* Глядзіце пра K9s у бонуснай частцы агляду.

3. Kubernetic

Агляд графічных інтэрфейсаў для Kubernetes

Гэта прапрыетарнае прыкладанне, якое ўстанаўліваецца на персанальны камп'ютар (падтрымліваюцца Linux, macOS, Windows). Яго аўтары абяцаюць поўную замену ўтыліты каманднага радка, а разам з ім - адсутнасць неабходнасці запамінаць каманды і нават дзесяціразовае павелічэнне хуткасці працы.

Адной з цікавых асаблівасцяў прылады з'яўляецца ўбудаваная падтрымка Helm-чартаў, а адным з недахопаў - адсутнасць метрык прадукцыйнасці прыкладанняў.

Галоўныя фічы Kubernetic:

  • Зручнае адлюстраванне стану кластара. Адзін экран для прагляду ўсіх злучаных аб'ектаў кластара і іх залежнасцяў; чырвоны/зялёны стан гатоўнасці для ўсіх аб'ектаў; рэжым прагляду стану кластара з абнаўленнем статусу ў рэальным часе.
  • Кнопкі хуткага дзеянні для выдалення і маштабавання прыкладання.
  • Падтрымка мультыкластарнай працы.
  • Простая праца з прасторамі імёнаў.
  • Падтрымка Helm-чартаў і рэпазітароў Helm (у тым ліку, прыватных). Ўстаноўка і кіраванне чартамі ў вэб-інтэрфейсе.

Актуальны кошт прадукта - разавы плацёж у памеры 30 еўра за яго выкарыстанне адным чалавекам для любога ліку прастор імёнаў і кластараў.

4. Kubevious

  • Сайт;
  • прэзентацыя;
  • Рэпазітар (~500 зорак GitHub);
  • Ліцэнзія: Apache 2.0
  • Сцісла: "Kubevious робіць кластары Kubernetes, канфігурацыю прыкладанняў і прагляд іх стану бяспечным і простым для разумення".

Агляд графічных інтэрфейсаў для Kubernetes

Ідэя праекта ў стварэнні інструмента, прызначанага для аналізу і адладкі канфігурацый прыкладанняў, разгорнутых у кластары. Аўтары засяродзіліся ў першую чаргу на рэалізацыі гэтых фіч, пакінуўшы больш агульныя рэчы на ​​потым.

Асноўныя асаблівасці і функцыі Kubevious:

  • Візуалізацыя кластара спосабам, арыентаваным на прыкладанні: узаемазвязаныя аб'екты ў інтэрфейсе групуюцца, выбудоўваючыся ў іерархію.
  • Нагляднае адлюстраванне залежнасцяў у канфігурацыях і каскадных наступстваў іх змен.
  • Адлюстраванне памылак канфігуравання кластара: няправільнае выкарыстанне пазнак, прапушчаныя парты і да т.п. (Дарэчы, калі вам цікавая гэтая фіча, звернеце ўвагу на Палярная зорка, пра які мы ўжо пісалі.)
  • У дадатак да папярэдняга пункта - даступна выяўленне патэнцыйна небяспечных кантэйнераў, г.зн. якія маюць занадта вялікія прывілеі (атрыбуты hostPID, hostNetwork, hostIPC, мантаванне docker.sock і таму падобнае).
  • Прасунутая сістэма пошуку па кластары (не толькі па назвах аб'ектаў, але і па іх уласцівасцях).
  • Інструменты для планавання магутнасцяў і аптымізацыі рэсурсаў.
  • Убудаваная «машына часу» (магчымасць бачыць якія адбыліся раней змены канфігурацыі аб'ектаў).
  • Кіраванне RBAC пры дапамозе зводнай узаемазвязанай табліцы з Roles, RoleBindings, ServiceAccounts.
  • Працуе толькі з адным кластарам.

У праекта зусім кароткая гісторыя (першы рэліз адбыўся 11 лютага 2020 г.) і нібыта намеціўся перыяд ці то стабілізацыі, ці то запаволення ў развіцці. Калі папярэднія версіі выпускаліся часта, то апошні рэліз (v0.5 ад 15 красавіка 2020 г.) адстаў ад пачатковага тэмпу распрацоўкі. Напэўна, гэта звязана з невялікай колькасцю кантрыб'ютараў: у гісторыі рэпазітара іх усяго 4, а ўся фактычная праца вядзецца адным чалавекам.

5. Kubewise

  • Старонка праекту;
  • Ліцэнзія: прапрыетарная (стане Open Source);
  • Сцісла: «Просты мультыплатформавы кліент для Kubernetes».

Агляд графічных інтэрфейсаў для Kubernetes

Новы прадукт ад кампаніі VMware, першапачаткова створаны ў рамках унутранага хакатона (у чэрвені 2019 года). Устанаўліваецца на персанальны камп'ютар, працуе на базе Электрон (падтрымліваюцца Linux, macOS і Windows) і патрабуе kubectl не ніжэй за v1.14.0.

Асноўныя магчымасці Kubewise:

  • Узаемадзеянне ў інтэрфейсе з самымі часта выкарыстоўванымі сутнасцямі Kubernetes: вузламі, прасторамі імёнаў і да т.п.
  • Падтрымка некалькіх файлаў kubeconfig для розных кластараў.
  • Тэрмінал з магчымасцю ўстаноўкі зменнай асяроддзя KUBECONFIG.
  • Генерацыя кастамных файлаў kubeconfig для зададзенай прасторы імёнаў.
  • Пашыраныя магчымасці бяспекі (RBAC, паролі, service accounts).

Пакуль што ў праекта ўсяго адзін рэліз - версія 1.1.0 ад 26 лістапада 2019 года. Прычым аўтары планавалі адразу выпусціць яго як Open Source, аднак з-за ўнутраных праблем (не злучаных з тэхнічнымі пытаннямі) не змаглі гэтага зрабіць. Па стане на май 2020, аўтары працуюць над наступным рэлізам і адначасова з ім павінны ініцыяваць працэс адкрыцця кода.

6. OpenShift Console

Агляд графічных інтэрфейсаў для Kubernetes

Нягледзячы на ​​тое, што гэты вэб-інтэрфейс з'яўляецца часткай дыстрыбутыва OpenShift (там ён ставіцца з дапамогай спецыяльнага аператара), аўтары прадугледзелі магчымасць яго ўстаноўкі/выкарыстання і ў звычайных (vanilla) усталёўках Kubernetes.

OpenShift Console развіваецца ўжо доўгі час, таму ўвабраў у сябе мноства функцый. Згадаем асноўныя з іх:

  • Падзяляны падыход да інтэрфейсу – дзве "перспектывы" даступных у Console магчымасцяў: для адміністратараў і для распрацоўшчыкаў. Рэжым Developer perspective групуе аб'екты ў больш зразумелым распрацоўнікам выглядзе (па дадатках) і арыентуе інтэрфейс на рашэнне такіх тыпавых задач, як дэплой прыкладанняў, адсочванне статусу зборкі / дэплою і нават рэдагаванне кода праз Eclipse Che.
  • Кіраванне працоўнымі нагрузкамі, сеткай, сховішчамі, правамі доступу.
  • Лагічны падзел для працоўных нагрузак на праекты і прыкладанні. У адным з апошніх рэлізаў - v4.3 - з'явіўся спецыяльны Project dashboard, Які адлюстроўвае звыклыя дадзеныя (колькасць і статусы deployment'ов, pod'ов і да т.п.; спажыванне рэсурсаў і іншыя метрыкі) у зрэзе праектаў.
  • Аднаўляецца ў рэальным часе адлюстраванне стану кластара, якія адбыліся ў ім змен (падзей); прагляд логаў.
  • Прагляд дадзеных маніторынгу, заснаванага на Prometheus, Alertmanager і Grafana.
  • Упраўленне аператарамі, прадстаўленымі ў OperatorHub.
  • Кіраванне зборкамі, якія выконваюцца праз Docker (з паказанага рэпазітара з Dockerfile), S2I ці адвольныя вонкавыя ўтыліты.

NB: Мы не сталі дадаваць у параўнанне іншыя. Kubernetes-дыстрыбутывы (напрыклад, куды менш вядомы Kubesphere): нягледзячы на ​​тое, што графічны інтэрфейс у іх можа быць вельмі прасунутым, звычайна ідзе як частка інтэграванага стэка вялікай сістэмы. Аднак калі вы лічыце, што нейкіх рашэнняў, паўнавартасна якія функцыянуюць і ў vanilla-інсталяцыя K8s, не хапае - дайце нам ведаць у каментарах.

бонус

1. Portainer on Kubernetes у бэта-версіі

  • Сайт;
  • Рэпазітар (~100 зорак GitHub);
  • Ліцэнзія: Zlib(?) (такая ў бацькоўскага праекта).

Праект ад каманды Portainer, якая распрацавала аднайменны папулярны інтэрфейс для працы з Docker. Паколькі праект знаходзіцца на ранняй стадыі распрацоўкі (першая і адзіная бэта-версія выйшла 16 красавіка 2020 г.), мы не сталі ацэньваць яго функцыі. Аднак, магчыма, ён многіх зацікавіць: калі гэта пра вас - сочыце за развіццём.

2. IcePanel

  • Сайт;
  • Ліцэнзія: прапрыетарная;
  • Сцісла: "Візуальны рэдактар ​​Kubernetes".

Агляд графічных інтэрфейсаў для Kubernetes

Гэта маладое дэсктоп-дадатак заклікана візуалізаваць рэсурсы Kubernetes у рэальным часе і кіраваць імі з простым інтэрфейсам у духу drag & drop. З аб'ектаў у сапраўдны момант падтрымліваюцца Pod, Service, Deployment, StatefulSet, PersistentVolume, PersistentVolumeClaim, ConfigMap і Secret. У хуткім часе абяцаюць дадаць падтрымку Helm. Галоўныя недахопы - закрытасць кода (чакаецца яго адкрыццё "ў нейкім выглядзе") і адсутнасць падтрымкі Linux (пакуль даступныя толькі версіі для Windows і macOS, хоць гэта таксама хутчэй за ўсё толькі пытанне часу).

3. k9s

  • Сайт;
  • дэманстрацыя;
  • Рэпазітар (~7700 зорак GitHub);
  • Ліцэнзія: Apache 2.0;
  • Сцісла: «Кансольны інтэрфейс для Kubernetes, які дазваляе стыльна кіраваць кластарам».

Агляд графічных інтэрфейсаў для Kubernetes

Утыліта апынулася толькі ў бонуснай частцы агляду па тым чынніку, што прапануе кансольны GUI. Аднак аўтары літаральна выціснулі максімум з тэрмінала, прапануючы не толькі зручны інтэрфейс, але і 6 наканаваных тэм афармлення, і развітую сістэму клавіятурных спалучэнняў, і аліасаў для каманд. Іх грунтоўны падыход не абмежаваўся вонкавым выглядам: магчымасці k9s прыемна ўражваюць: кіраванне рэсурсамі, адлюстраванне стану кластара, выснова рэсурсаў у іерархічным уяўленні з залежнасцямі, прагляд логаў, падтрымка RBAC, пашырэнне магчымасцяў праз убудовы… Усё гэта прыйшлося даспадобы шырокай колькасці K8s-супольнасцяў GitHub-зорак праекту практычна не саступае афіцыйнаму Kubernetes Dashboard!

4. Панэлі кіравання праграмамі

І ў завяршэнні агляду - асобная міні-катэгорыя. У яе патрапілі два вэб-інтэрфейсу, прызначаныя не для комплекснага кіравання Kubernetes-кластарамі, а для кіравання тым, што ў іх разгортваецца.

Як вядома, адным з самых спелых і распаўсюджаных сродкаў для дэплою комплексных прыкладанняў у Kubernetes з'яўляецца Helm. За перыяд яго існавання назапасілася мноства пакетаў (Helm charts) для простага разгортвання многіх папулярных прыкладанняў. Таму суцэль лагічна і з'яўленне адпаведных візуальных сродкаў, якія дазваляюць кіраваць жыццёвым цыклам чартаў.

4.1. Манакулярны

  • Рэпазітар (1300+ зорак GitHub);
  • Ліцэнзія: Apache 2.0;
  • Сцісла: «Вэб-дадатак для пошуку і выяўлення Helm-чартаў у мностве рэпазітараў. Служыць асновай для праекту Helm hub».

Агляд графічных інтэрфейсаў для Kubernetes

Гэтая распрацоўка ад аўтараў Helm усталёўваецца ў Kubernetes і працуе ў межах аднаго кластара, выконваючы пастаўленую задачу. Аднак зараз праект не амаль не развіваецца. Яго асноўнае прызначэнне – падтрымка існавання Helm Hub. Для іншых патрэб аўтары рэкамендуюць Kubeapps (гл. далей) ці Red Hat Automation Broker (частка OpenShift, але ўжо таксама не развіваецца).

4.2. Kubeapps

Агляд графічных інтэрфейсаў для Kubernetes

Прадукт ад Bitnami, які таксама усталёўваецца ў кластар Kubernetes, але адрозніваецца ад Monocular першапачатковым фокусам на працу з прыватнымі рэпазітарамі.

Ключавыя функцыі і асаблівасці Kubeapps:

  • Прагляд і ўстаноўка Helm chart'аў з рэпазітараў.
  • Праверка, абнаўленне і выдаленне прыкладанняў на базе Helm, устаноўленых у кластары.
  • Падтрымка працы з кастамнымі і прыватнымі рэпазітарамі чартаў (падтрымлівае ChartMuseum і JFrog Artifactory).
  • Прагляд і праца з вонкавымі сэрвісамі - з Service Catalog і Service Brokers.
  • Публікацыя ўсталяваных прыкладанняў пры дапамозе механізму Service Catalog Bindings.
  • Падтрымка аўтэнтыфікацыі і падзелы правоў пры дапамозе RBAC.

Выніковая табліца

Ніжэй прыведзена зводная табліца, у якой мы пастараліся звесці і агрэгаваць асноўныя магчымасці існуючых візуальных інтэрфейсаў для палягчэння параўнання:

Агляд графічных інтэрфейсаў для Kubernetes
(Анлайн-версія табліцы даступная ў Google Docs.)

Заключэнне

Графічныя інтэрфейсы для Kubernetes - даволі спецыфічная і маладая ніша. Аднак яна развіваецца вельмі актыўна: ужо можна знайсці як дастаткова сталыя рашэнні, так і зусім маладыя, якім яшчэ ёсць куды расці. Яны арыентуюцца на розныя варыянты прымянення, прапаноўваючы функцыі і знешні выгляд практычна на любы густ. Спадзяемся, што гэты агляд дапаможа падабраць прыладу, найлепшай выявай які пакрывае бягучыя запатрабаванні.

PS

Дзякуем kvaps за дадзеныя па OpenShift Console для табліцы параўнання!

Чытайце таксама ў нашым блогу:

Крыніца: habr.com

Дадаць каментар