Обзор Helm-Dashboard — графического интерфейса для управления релизами Kubernetes

Привет! На связи Павел Басалгин, DevOps-инженер компании «Флант». Сегодня я расскажу об инструменте, который упрощает управление релизами Kubernetes. 

Часто разработчики предпочитают использовать именно визуальные средства, чтобы более эффективно управлять релизами Kubernetes. Один из таких инструментов — Helm-Dashboard. С его помощью можно самостоятельно создавать, развертывать, обновлять различные релизы Kubernetes-приложений и отслеживать их состояние.

5138ebb51642929a8a1f4e62802e4282.png

В этой статье мы рассмотрим возможности и преимущества Helm-Dashboard и разберем, как он может упростить задачи по управлению релизами Kubernetes. Я расскажу про основные функции и интерфейс пользователя и покажу примеры использования этого инструмента. 

Что такое Helm-Dashboard

Helm-Dashboard — это графический пользовательский интерфейс Helm с открытым исходным кодом от Komodor. Helm — это менеджер пакетов для Kubernetes, который помогает упростить установку приложений Kubernetes и управление ими. А Helm-Dashboard дает удобный интерфейс для изучения установленных релизов и работы с ними. Например, в нем можно изменять или удалять релизы.

Как устанавливается Helm-Dashboard

Согласно официальной документации в GitHub-репозитории проекта есть несколько способов установки Helm-Dashboard:

  • Скачать архив с собранным исполняемым файлом.

  • Установить в качестве Helm-плагина.

  • Установить из чарта в кластер K8s, при этом будет создан Ingress для использования сервиса.

  • Собрать исполняемый файл из исходников.

Для обзора мы взяли вариант с плагином, так как его часто рекомендуют разработчики, а еще с ним отлично работает наша CLI-утилита для сборки приложений и их деплоя в Kubernetes — werf. Чтобы установить плагин, нужно перейти по ссылке и установить плагин локально.

Чтобы теперь с помощью плагина можно было подключиться к кластеру, нужен kubeconfig — конфигурационный файл для доступа к кластеру Kubernetes. Подробнее об этом по ссылке.

Далее из терминала запустим установленный плагин командой werf helm dashboard. В итоге откроется страница в браузере с графическим представлением релизов.

Какие возможности есть у Helm-Dashboard

В браузере у нас откроется такая страница:

7e4a167e4c3813d60d4715c2363fc251.png

В верхней части интерфейса можно увидеть вкладки Installed и Repository. Это основные вкладки, в которых мы будем работать. Разберем их подробнее.

Installed

На вкладке Installed в левой части интерфейса можно выбрать кластер и необходимые namespace«ы. В результате система выдаст установленные релизы выбранного кластера:

d1cff50699950194410c7ceb4e8d8b0e.png

После выбора необходимого релиза у нас появляется возможность изучить его детальнее. 

Если у релиза есть проблемы, то вместо ресурсов можно увидеть сообщение об ошибке:

a42333eaa3896d022304780ab4389d86.png

Здесь можно посмотреть причины, по которым релиз не установился до конца. Если с релизом всё в порядке, мы увидим список ресурсов. 

Рассмотрим это на примере релиза zookeeper-operator-dev:

f97f9529f0612bfe2542bd17631ee0de.png

В левой части интерфейса можно увидеть состояния релизов, которые нашла система в кластере. В основной части интерфейса нам нужны для работы две вкладки: Resources и Manifests. 

Во вкладке Resources можно увидеть список ресурсов, которые есть в релизе. У каждого из них есть кнопка Describe. Нажимаем на нее и получаем описание ресурса:

0e74276ee6c8af3b7d037b9ef08b63da.png

Описание ресурса представляет собой обычный вариант от kubectl describe

Также на вкладке Resources у ресурса рядом с кнопкой Describe может быть кнопка Scan:

b1ea4e1ed58a9d745dc07726b4f22394.png

Кнопка будет активна в том случае, если установлен Trivy — инструмент для сканирования безопасности контейнеров, который позволяет обнаруживать уязвимости и потенциальные угрозы.

Если нажать на кнопку Scan, запустится процесс сканирования ресурса. В итоге получим такой отчет:

560b3b65f37942d810b4ef675e9a8edf.png

На вкладке Manifests можно посмотреть манифесты ресурсов в релизе. Выбрать можно любой из тех, что имеются в кластере:

33ce266d8fe8df61179ee669417dd2a6.png

В открывшемся окне сверху можно переключаться между вкладками:

  • Diff with previous — показывает разницу между текущим и предыдущим релизами.

  • Diff with specific revision — показывает разницу между текущим и конкретным релизом.

Например, diff с неудачной версией 3:

bbfc455fe863c3509d431a41777be40b.png

Любой релиз можно апгрейдить, откатить или удалить из кластера. Для этого на странице есть кнопки Reconfigure, Rollback и Uninstall соответственно:

7007ea326d00ca74159084336bd94585.png

Пример окна для апгрейда:

c96524761161d7ba1d7c0b6a33e04d85.png

Repository

Repository — это окно для управления локально установленными репозиториями.  Слева на этой панели можно посмотреть, какие репозитории подключены:

4ec28a1c42c4dd46b34ab08464c6de25.png

Здесь можно выбрать репозиторий, чтобы изучить доступные в нем Helm-чарты. А еще можно:

  • добавить репозиторий — кнопка Add Repository;

  • обновить репозиторий — кнопка Update;

  • удалить репозиторий — кнопка Remove.

Доступные в репозитории Helm-чарты можно установить в кластер после заполнения Values. Для этого нужно нажать кнопку Install, которая находится напротив названия чарта. В результате откроется следующее окно:

e437f2cc49ee30d9c53a09e3f70c3c11.png

Какие особенности работы у Helm-Dashboard

Среди основных возможностей Helm-Dashboard можно выделить следующие:

  • Helm-Dashboard можно установить локально или через чарт в кластер.

  • Можно просматривать установленные в кластер чарты и историю их релизов.

  • Возможность посмотреть diff между различными версиями релизов.

  • Можно откатить релиз или обновить его.

  • При локальной установке возможно просматривать релизы нескольких кластеров.

  • Возможность интеграции со сканерами уязвимостей.

  • Интуитивно понятный и приятный UI.

Стоит отметить, что использование графического интерфейса влияет на API server. В момент запуска Helm-Dashboard сервис запрашивает секреты с релизами, из-за чего растет потребление CPU.

Например, так выглядит состояние кластера до запроса секретов релизов для Helm-Dashboard:

354b92727fa158e144a59127c8c3d43d.pngcc187b9027be9ce7168715a21885cbc1.png

Здесь можно увидеть стандартное состояние кластера до начала работы с Helm-Dashboard: потребление CPU, какие ресурсы K8s запрашиваются и как часто.

А это состояние кластера после запроса секретов релизов для Helm-Dashboard:

7c7e73e5da6073b917e2624d79102ead.png50e3c4ef767b65b572d85b13a809bee9.png

На этих графиках видно, что выросло потребление CPU, так как активно идет запрос ресурсов секретов.

Вместо заключения

На мой взгляд, Helm-Dashboard — удобный web-UI для просмотра и управления релизами благодаря функции diff между релизами. Также у него минималистичный, приятный и понятный дизайн. Этот инструмент поможет команде разработки при работе в тестовых кластерах, так как они в моменте могут изучить, что пошло не так, и сразу внести исправления.

P. S.

© Habrahabr.ru