Привет! На связи Павел Басалгин, DevOps-инженер компании «Флант». Сегодня я расскажу об инструменте, который упрощает управление Helm-релизами в Kubernetes.
Часто разработчики предпочитают использовать именно визуальные средства, чтобы более эффективно управлять версиями приложений в Kubernetes. Один из таких инструментов — Helm Dashboard. С его помощью можно самостоятельно создавать, развертывать, обновлять релизы Kubernetes-приложений и отслеживать их состояние.
В этой статье мы рассмотрим возможности и преимущества Helm Dashboard и разберем, как он может упростить задачи по управлению Kubernetes-приложений. Я расскажу про основные функции и интерфейс пользователя и покажу примеры использования этого инструмента.
Что такое Helm Dashboard
Helm Dashboard — это графический пользовательский интерфейс Helm с открытым исходным кодом от Komodor. Helm — это менеджер пакетов для Kubernetes, который помогает упростить установку приложений Kubernetes и управление его версиями (Helm-релизы). А с помощью Helm Dashboard можно удобно изучать эти версии и работать с ними, например, изменять или удалять.
Как устанавливается Helm Dashboard
Согласно официальной документации в GitHub-репозитории проекта есть несколько способов установки Helm Dashboard:
Скачать архив с собранным исполняемым файлом.
Установить в качестве Helm-плагина.
Установить из чарта в кластер K8s, при этом будет создан Ingress для использования сервиса.
Собрать исполняемый файл из исходников.
Для обзора мы взяли вариант с плагином, так как его часто рекомендуют разработчики, а еще с ним отлично работает наша CLI-утилита для сборки приложений и их деплоя в Kubernetes — werf. Чтобы установить плагин, нужно перейти по ссылке и установить плагин локально.
Чтобы теперь с помощью плагина можно было подключиться к кластеру, нужен kubeconfig — конфигурационный файл для доступа к кластеру Kubernetes. Подробнее об этом по ссылке.
Далее из терминала запустим установленный плагин командой werf helm dashboard
. В итоге откроется страница в браузере с графическим представлением релизов.
Какие возможности есть у Helm Dashboard
В браузере у нас откроется такая страница:
В верхней части интерфейса можно увидеть вкладки Installed и Repository. Это основные вкладки, в которых мы будем работать. Разберем их подробнее.
Installed
На вкладке Installed в левой части интерфейса можно выбрать кластер и необходимые namespace’ы. В результате система выдаст установленные релизы выбранного кластера:
После выбора необходимого релиза у нас появляется возможность изучить его детальнее.
Если у релиза есть проблемы, то вместо ресурсов можно увидеть сообщение об ошибке:
Здесь можно посмотреть причины, по которым релиз не установился до конца. Если с релизом всё в порядке, мы увидим список ресурсов.
Рассмотрим это на примере релиза zookeeper-operator-dev:
В левой части интерфейса можно увидеть состояния релизов, которые нашла система в кластере. В основной части интерфейса нам нужны для работы две вкладки: Resources и Manifests.
Во вкладке Resources можно увидеть список ресурсов, которые есть в релизе. У каждого из них есть кнопка Describe. Нажимаем на нее и получаем описание ресурса:
Описание ресурса представляет собой обычный вариант от kubectl describe.
Также на вкладке Resources у ресурса рядом с кнопкой Describe может быть кнопка Scan:
Кнопка будет активна в том случае, если установлен Trivy — инструмент для сканирования безопасности контейнеров, который позволяет обнаруживать уязвимости и потенциальные угрозы.
Если нажать на кнопку Scan, запустится процесс сканирования ресурса. В итоге получим такой отчет:
На вкладке Manifests можно посмотреть манифесты ресурсов в релизе. Выбрать можно любой из тех, что имеются в кластере:
В открывшемся окне сверху можно переключаться между вкладками:
Diff with previous — показывает разницу между текущим и предыдущим релизами.
Diff with specific revision — показывает разницу между текущим и конкретным релизом.
Например, diff с неудачной версией 3:
Любой релиз можно апгрейдить, откатить или удалить из кластера. Для этого на странице есть кнопки Reconfigure, Rollback и Uninstall соответственно:
Пример окна для апгрейда:
Repository
Repository — это окно для управления локально установленными репозиториями. Слева на этой панели можно посмотреть, какие репозитории подключены:
Здесь можно выбрать репозиторий, чтобы изучить доступные в нем Helm-чарты. А еще можно:
добавить репозиторий — кнопка Add Repository;
обновить репозиторий — кнопка Update;
удалить репозиторий — кнопка Remove.
Доступные в репозитории Helm-чарты можно установить в кластер после заполнения Values. Для этого нужно нажать кнопку Install, которая находится напротив названия чарта. В результате откроется следующее окно:
Какие преимущества и особенности работы у Helm Dashboard
После разбора возможностей Helm Dashboard можно выделить его следующие преимущества:
Helm Dashboard можно установить локально или через чарт в кластер.
Можно просматривать установленные в кластер чарты и историю их релизов.
Возможность посмотреть diff между различными версиями релизов.
Можно откатить релиз или обновить его.
При локальной установке возможно просматривать релизы нескольких кластеров.
Возможность интеграции со сканерами уязвимостей.
Интуитивно понятный и приятный UI.
К особенностям работы Helm Dashboard можно отнести тот факт, что использование графического интерфейса влияет на API server. В момент запуска инструмента сервис запрашивает секреты с релизами, из-за чего растет потребление CPU.
Например, так выглядит состояние кластера до запроса секретов релизов для Helm Dashboard:
Здесь можно увидеть стандартное состояние кластера до начала работы с Helm Dashboard: потребление CPU, какие ресурсы K8s запрашиваются и как часто.
А это состояние кластера после запроса секретов релизов для Helm Dashboard:
На этих графиках видно, что выросло потребление CPU, так как активно идет запрос ресурсов секретов.
Вместо заключения
На мой взгляд, Helm Dashboard — удобный web UI для просмотра релизов и управления ими благодаря функции diff между релизами. Также у него минималистичный, приятный и понятный дизайн. Этот инструмент поможет команде разработки при работе в тестовых кластерах, так как они в моменте могут изучить, что пошло не так, и сразу внести исправления.
Igorgro
Извините за скептизм, но в чем преимущества этого решения перед Weave GitOps и FluxCD?
ageshocker Автор
Мы не выделяли этот инструмент среди других, а просто сделали на него обзор как на один из используемых. Возможно, сделаем в будущем обзоры и на перечисленные инструменты.