Привет! На связи Павел Басалгин, 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 между релизами. Также у него минималистичный, приятный и понятный дизайн. Этот инструмент поможет команде разработки при работе в тестовых кластерах, так как они в моменте могут изучить, что пошло не так, и сразу внести исправления.

P. S.

Комментарии (3)


  1. Igorgro
    30.11.2023 06:35
    -2

    Извините за скептизм, но в чем преимущества этого решения перед Weave GitOps и FluxCD?


    1. ageshocker Автор
      30.11.2023 06:35
      +2

      Мы не выделяли этот инструмент среди других, а просто сделали на него обзор как на один из используемых. Возможно, сделаем в будущем обзоры и на перечисленные инструменты.


  1. Keirichs
    30.11.2023 06:35
    +1

    Надо было назвать Helm Tower