G lens для linux

Обзор Lens — IDE для Kubernetes

В прошлый раз я писал о том, как можно улучшить утилиту kubectl, дополнив и расширив ее функционал, а сегодня зайду с другой стороны: познакомимся с решением, которое позволит забыть о консольных командах и управлять Kubernetes-кластером в графическом интерфейсе. Речь пойдёт про Lens — бесплатное приложение с открытым кодом, которое позиционируется как полноценная Kubernetes IDE. Мы уже кратко рассматривали Lens в сравнительном обзоре GUI для K8s, а теперь попробуем это решение в деталях. Что ж, поехали!

Сам проект является кроссплатформенным приложением (работает на Linux, macOS, Windows) на базе фреймворка Electron и ставится как отдельное приложение на вашем устройстве. Изначально разработкой Lens занималась компания Kontena, но после ее поглощения в середине 2020-го года проект перешел в руки Mirantis. Благо, последняя продолжила развивать продукт как Open Source и весьма активно: с мая последней стабильной версией является v.4.2.4, однако уже на подходе v5.0.0 (пока можно попробовать ее beta-релизы). На текущий момент проект имеет более 14 тысяч звёзд на GitHub и большое количество активных пользователей и участников, которые помогают в развитии проекта.

В своем описании Lens обещает как снизить входной барьер для тех, кто только начинает работать с Kubernetes, так и существенно повысить продуктивность пользователям с большим опытом.

Установка и первый запуск

Все, что требуется для установки приложения, — это скачать и поставить нужный пакет для своего дистрибутива. Подробности описаны на странице Getting Started.

После запуска приложения понадобится добавить kubeconfig требуемого Kubernetes-кластера. Согласно информации с официального сайта, Lens поддерживает не только «ванильный» Kubernetes, но и любую платформу: EKS, AKS, GKE, Minikube, Rancher, k0s, k3s, OpenShift и т.д. Параллельно можно добавить несколько конфигурационных файлов и потом переключаться между кластерами через боковое меню приложения.

При первом знакомстве с Lens я решил использовать Minikube и, когда соответствующий kubeconfig был добавлен, меня встретила панель с уведомлением, что Prometheus-метрики в текущем кластере не собираются. Для устранения этого недостатка Lens предлагает установить свой Prometheus stack, чем я и воспользовался. Делается это одной кнопкой в настройках кластера: Features -> Metrics Stack — Install (кстати, в 5-й версии Lens такой кнопки уже нет — прим.). После небольшого количества времени в Lens начнут показываться графики потребления ресурсов:

Если в кластере уже используется Prometheus для сборка метрик, то Lens автоматически попробует к нему подключиться. А если этого не произошло, то придется поработать напильником, инструкцию по применению которого — см. в репозитории проекта.

Знакомство с интерфейсом

Всё рабочее пространство можно разделить на три области:

меню выбора элементов (Cluster, Nodes, Workloads. );

основное рабочее пространство;

Через Lens можно управлять всеми сущностями кластера, а для удобства ресурсы сгруппированы в меню. Для человека, работавшего с Kubernetes, расположение элементов в этом меню является интуитивно понятным и не требует дополнительных пояснений. Например, в блоке Workloads содержатся разделы для доступа к Pod’ам, Deployment’ам, STS и т.д. При переходе в нужный раздел мы получаем возможность поиска по имени или сортировки элемента по нужному столбцу:

При нажатии на конкретный элемент раскрывается дополнительное окно со всей информацией об этом элементе (а-ля describe ), в том числе: графики потребления, лейблы, пробы, volumes и т.д. При этом связанные дочерние элементы кликабельны, что позволяет, например, быстро переходить из Pod’а в окно с информацией о его томах, секретах или ConfigMap’ах.

Читайте также:  Windows forms get parent form

К слову, при работе с последними в Lens также не возникает неудобств. Например, в ConfigMap’ах и секретах (помимо удобного отображения сводной информации) мы получаем быстрый доступ к изменению содержимого:

По нажатию на контекстное меню — «⋮» — у каждого элемента открываются дополнительные функции. Например, при работе с узлами так появится возможность shell-доступа к выбранному узлу (откроется встроенный в Lens терминал, о котором расскажу чуть ниже), вызов команд cordon и drain , внесение изменений через встроенный текстовый редактор:

При работе с Pod’ами удобно смотреть их логи, по которым можно также искать и которые легко сразу скачать. Однако важный нюанс в том, что сами логи обновляются не в режиме реального времени, а с некоторой задержкой — это может добавить неудобств:

В блоке Events доступны события в кластере — с возможностью их поиска по ключевым словам и фильтрации по пространствам имен. События с типом Warning по умолчанию подсвечиваются красным, что помогает не пропустить что-то важное. Здесь есть очевидная недоработка интерфейса: отсутствует горизонтальный скролл или возможность изменения ширины столбцов. Поэтому для удобства приходилось либо полностью убирать некоторые столбцы, либо регулировать общий масштаб всего интерфейса:

Терминал

Несмотря на то, что Lens предлагает модель управления кластером через веб-интерфейс, среди возможностей этого приложения нашлось место и терминалу — Smart terminal, вкладки которого можно раскрыть в нижней части интерфейса. В терминале предустановлена CLI-утилита kubectl (а также Helm 3), особенностью которой является «синхронизированность» её версии с версией Kubernetes API для выбранного кластера. Такой подход позволяет забыть о необходимости ставить различные версии kubectl при работе с разными K8s-кластерами на одном устройстве:

Впрочем, показалось странным, что несмотря на наличие «smart» в названии этого терминала, автодополнение через в нём по умолчанию не работает. Лечится это стандартным добавлением:

В той же, нижней, части интерфейса Lens можно создать вкладку для простого текстового редактора. Он предназначен для редактирования/применения YAML-манифестов в кластере. В редактор встроена проверка структуры YAML-файла, не позволяющая сохранить изменения, если обнаружены ошибки в отступах.

Размер рабочих окон терминала или текстового редактора можно регулировать — вплоть до полноэкранного режима. При этом размер шрифта изменить штатными средствами не удастся: здесь поможет только общее масштабирование всех элементов (что неудобно). Об этом даже есть соответствующий issue, к сожалению, не нашедший своей реализации с августа прошлого года.

Чарты

В блоке меню Apps можно произвести инсталляцию Helm-чартов в кластер. Наиболее популярные Helm-репозитории уже добавлены в Lens: остается только активировать их или добавить новые через настройки.

При выборе желаемого чарта открывается дополнительное окно с подробной информацией о нём и ссылкой на GitHub:

После ознакомления и нажатия на Install открывается текстовый редактор содержимого values.yaml для корректировки значений, подставляемых в чарт. Там же можно указать имя релиза или выбрать нужный namespace:

После этих несложных манипуляций производится установка чарта с последующим сообщением о результате.

Расширения

Начиная с версии 4.0 в Lens присутствует система расширений, которая позволяет добавить в меню свои элементы. Некоторые расширения уже появились — познакомиться с ними можно в репозитории проекта. Например, Lens Resource Map отображает ресурсы Kubernetes и их отношения в виде интерактивного графа в реальном времени (это лучше «потрогать» вживую):

Starboard extension добавляет отдельный пункт в меню для удобства взаимодействия с отчетом аудита безопасности, который формируется одноименным сервисом — Starboard от Aqua Security.

Можно найти даже расширение Space Invaders, которое запускает одноименную мини-игру с одной особенностью: противниками являются Pod’ы кластера, а при их уничтожении происходит delete соответствующего Pod’а:

В общем, не рекомендую использовать это расширение в production… И тут всплывает еще один недочет Lens: все устанавливаемые расширения автоматически распространяются на все добавленные кластеры. Возможности точечного отключения расширений нет.

Читайте также:  Командная строка определение windows

А сам сценарий установки расширений обычно сводится к скачиванию архива и указанию пути его расположения в соответствующем меню Lens. Однако в некоторых случаях (например, для Starboard) может потребоваться выполнение дополнительных действий для установки сопутствующих элементов.

Заключение

Зачастую Lens ставят в один ряд вместе с k9s (см. её обзор здесь), т.к. оба проекта стараются решить одну и ту же потребность: многофункциональный UI для K8s-кластеров. Несмотря на большую популярность консольной утилиты, на мой взгляд, Lens в этом сравнении выглядит более привлекательным, потому что в нём удачно сочетаются как функциональные возможности, так и простота использования. К тому же, стоит упомянуть, что k9s обзавелась платной версией, что ставит под вопрос будущие обновления Open Source-редакции. С другой стороны, что касается повседневного выбора между консолью и графическим IDE, лично я склоняюсь к терминалу.

Опустив потенциальные риски, связанные с использованием дополнительной прослойки взаимодействия с K8s, Lens, пожалуй, покрывает 90% типовых задач по управлению кластером, а оставшиеся 10% — это какие-то недоработки интерфейса или баги, которые активно устраняются командой разработки (достаточно взглянуть на статистику активности репозитория в GitHub). В то же время отсутствие горячих клавиш сказывается на производительности работы с Lens, а интегрированный в него текстовый редактор не покрывает все желаемые возможности. В конечном счете это приводит к необходимости использовать для таких целей стороннее ПО, что нарушает главный замысел IDE: заменить несколько «узких» инструментов одним общим.

В любом случае здорово, что такой проект активно развивается и поддерживается сообществом: это подтверждает его востребованность среди пользователей. А мне будет интересно следить за его развитием: может быть, уже 5-я версия принесет новшества, способные повлиять на приоритеты в выборе утилиты?

Источник

THE KUBERNETES IDE
FOR DEVELOPMENT

Lens is the only IDE you’ll ever need to take control of your Kubernetes clusters. It’s built on open source and free. Download it today!

Latest Version: v 4.2.1 (09/04/2021)

An IDE designed for those who work with Kubernetes on a daily basis

Explore and navigate Kubernetes clusters without having to learn kubectl commands. Great for developers just getting started.

Inspect live statistics, events, and log streams in real-time. No spinners, refreshing or waiting for screens to update.

See errors and warnings on dashboard and click to see details. Click again to see logs or get a command line.

Standalone application for MacOS, Windows and Linux. 1-minute install. No need to install anything in cluster.

Lens is built on open source with vibrant community and is backed by Kubernetes and cloud native ecosystem pioneers.

Using EKS, AKS, GKE, Minikube, Rancher, k0s, k3s, OpenShift. ? They all work. Simply import the kubeconfigs for the clusters you want to work with.

LOVED BY DEVS & OPS

Adriano Pezzuto

At CLASTIX we use it. Recommended. We have been early adopters of Lens and always recommend it to our customers.

Andy Stopford
@andystopford

Loving @k8slens a great OSS tool for k8s 🙌

Arul Prakash

This is fantastic, good to know about Lens.. being able to control k8s through a GUI is really awesome.

Adam Bryant

Been using Lens for a while now, can’t imagine doing my job without it, keep up the great work.

Charles-Oliver Magnan
@TheBlondeBass

I’ve shared it already, but I want to say again that I’m real happy I found @k8slens for Kubernetes work. Makes it much more convenient, especially when juggling multiple clusters!

Chris Kalmer
@chriskalmar

Here’s a nice and free desktop app that will help you visualize and control your Kubernetes cluster(s). 🐳

I know how overwhelming managing a k8s cluster can be. You can get quickly lost in the command line.

Читайте также:  Настройки прокси сервера windows 10 где

Here comes Lens, the IDE for Kubernetes. Link is in the reply 👇

David Smitbauer

I love Lens. It’s very clean, easy to use, and provides great information at a glance! Congratulations!

Edgars Bušs

I’m loving it! The best universal tool for Kubernetes. It is like finally having eyes in Kube world. Easy to spot divergencies from normal and then use different tools to deepdive.

Hugh Campbell
@hueythewookiee

I have to say I’ve really been enjoying @k8slens to help track events across my cluster when running @projectsonobuoy e2e testing #k8s #Kubernetes #e2etesting

Jay Rogers
@jaydrogers

Today I just discovered @k8slens and I am blown away how helpful this tool is. The open source community is amazing!

Julian Kleinhans
@kj187

Can’t imagine working without @k8slens again. It saves so much time when debugging. Awesome tool! #Kubernetes

Matthias Fritschi
@matfsw

k8s Lens https://k8slens.dev has become an indispensable tool for me to get a quick overview of workloads on kubernetes across clusters

Per Arneng

Thanks for building Lens. Its really excellent

Untra
@untra

Hijacking this to say @k8slens is excellent and really helped me grok and love my kube clusters

Your Cloud Native Technology Stack. Accessible.

Unified Catalog. Bring all your clusters, services, workloads, tools, automations, and related resources together for easy access.

Browse & Organize. Use search, filters, categories and labels to access the resources you need to work with easier than ever before.

Get What You Want. Fast.

Hotbars. The main navigation, allowing users to build their “workflows” and “automation” within the desktop application. Users can customize items in the Hotbar by assigning different labels, colors, and icons for easy recall.

Command Palette. Command Palette allows users to perform specific keyboard shortcuts to make the most common tasks easier. Improving accessibility and efficiency when working with Lens.

See Everything. In Right Context. Real time.

Built-In Visualizations. Lens integrates with Prometheus to visualize and see trends in resource usage metrics, including CPU, memory, network and disk, with the total capacity, actual usage, requests and limits. Detailed visualization is automatically generated for each k8s resource.

Full Power at Your Fingertips. Always.

Smart Terminal. The smart terminal comes with kubectl and helm, automatically syncing the version of kubectl to match the currently selected K8S cluster API version. Lens will automatically assign the kubeconfig context to match the currently selected K8s cluster.

All Cloud Native Technologies. Deployed in a Click.

Helm Charts. Lens comes with Helm charts management allowing for the discovery and fast deployment of thousands of publicly available Helm charts and management of your own repositories. Explore installed Helm charts and their revisions and upgrade with a single click.

No Limits. Expand. Just the Way You Like It.

Extensions. Easily add Lens extensions from the community and cloud native ecosystem vendors or build your own. Lens Extensions are used to add custom functionality and services to accelerate development workflows for all the technologies that integrate with Kubernetes and other cloud-native technologies.

You are not alone. Join the party. Share.

Spaces. Now, take the amazing Lens experience and share it with your whole team. Join a Space and get instant access to all their Kubernetes clusters and cloud-native resources. Need some help? Invite a friend or colleague to help troubleshoot your cluster. Seamlessly share and securely manage access to clusters across local, on-prem, or public clouds all from within Lens.

Cloud Service. Spaces is made available to Lens users as centralized cloud based service operated by Team Lens. Signup via Lens application to get started for free!

Источник

Оцените статью