Хорошо быть умелым разработчиком и самому закрывать все задачи по запуску микросервисных приложений. Но как быть, если команда разработчиков тратит все время на управление микросервисными приложениями, настройку систем безопасности, аутентификации, мониторинга, логирования? Можно писать код и самостоятельно запускать каждый компонент, а можно нажать несколько кнопок и развернуть микросервис. Именно для этого мы создали консоль в платформе контейнеризации dBrain.cloud. В этой статье хотим подробнее рассказать, зачем и кому она будет полезна.
О структуре платформы мы рассказывали тут (1, 2, 3 и 4). Кому лень перечитывать, можно посмотреть короткий ролик.
Зачем это?
Кто-то интегрирует дашборды в платформы контейнеризации, мы в dBrain создали свой понятный инструмент для получения релевантных сведений о кластере и управления им. Консоль dBrain - это веб-интерфейс, который упрощает взаимодействие с инфраструктурой, базами данных, Kubernetes.
Для разработчиков консоль интересна как инструмент по отладке приложений в максимально близкой к продакшн среде, для руководителей - как демонстрационный стенд с отображением работы кластеров и аудита действий пользователей.
С ее помощью разработчики могут быстро создавать и разворачивать приложения, управлять базами данных и мониторить работу приложений. Все это в UI, в несколько кликов. Консоль dBrain сокращает временные затраты на рутинные задачи, позволяет ускорить разработку и увеличить количество выпускаемых продуктов.
Например, с помощью консоли dBrain можно без знания команд CLI Kubernetes проводить манипуляции с подами, секретами/деплойментами. Можно перезапустить под, редактировать энвы, на лету расширить выделенный базой данных Storage, создать секреты, подключиться напрямую в под и выполнить условный cURL. Напомним, все манипуляции проводятся не через командную строку, а в UI. Консоль также ускоряет работу с закодированными в Base64 данными, с ее помощью можно отслеживать логи с минимальной задержкой.
Часто управление PaaS-платформами сопровождается изучением огромных мануалов о том, как создавать тот или иной элемент. Допустим, нужно создать PostgreSQL
Чтобы написать код по этой базе данных и учесть огромное количество настроек, понадобиться множество справочной информации. Мы же предоставляем интуитивно понятный интерфейс консоли, через который можно задать оптимальные конфиги базы данных в соответствии с выделенными под нее ресурсами. Кроме того, в dBrain предусмотрено краткое описание для той или иной характеристики либо же ссылки на мануал для желающих изучить тему глубже.
Например, для клиентского приложения нужна какая-то база данных. Разработчик из консоли, как из коробки, деплоит нужный сервис - Kafka, PostgreSQL, Cassandra и др. После чего подключает к сервису запущенное в этом же кластере приложение. Эти действия происходят всего за пару кликов в консоли.
Несколько слов скажем о дизайне консоли. Развивая ее интерфейс, мы придерживаемся общей стратегии дизайна: концентрировать внимание пользователя исключительно на решении задач с помощью нужных инструментов. То есть - на творчестве. Отсюда вытекают несколько правил проработки функциональности консоли:
вся рутина должна оставаться “под капотом”, по ту сторону экрана;
работа с консолью должна быть интуитивно понятной и вместе с тем не скучной.
С использованием консоли временные затраты инженеров на всех этапах обслуживания кластера сокращаются в разы. В дизайне консоли мы используем только знакомые всем компоненты UI: инпуты, кнопки, чекбоксы. В процессе компоновки сложных функциональных форм UI/UX дизайнер нашей команды вдохновлялся приборной панелью самолета или микшерным пультом диджея, где у каждой ручки ползунка или переключателя свое очевидное назначение. Поэтому на экранах консоли вы встретите четко прорисованные и сверстанные “шкалы приборов” с показаниями систем консоли, “слайдеры-ползунки”, связанные с оригинальными функциями платформы, а также другие компоненты UI, дизайн которых призван добавить элемент игры в работу разработчика.
Что есть в консоли?
Аудитлоги
Действия пользователей в консоли логируются, а авторизация по ролям позволяет дать доступ ко всему кластеру или к какому-то элементу.
Роли доступов к определенным кластерам и неймспейсам настраиваются в KeyCloak. Через CLI (command-line interface) сложно настроить такие ограничения, поэтому любой пользователь с доступом к платформе может делать в ней что угодно. KeyCloak помогает разграничить роли и обезопасить компанию от нежелательных действий в ее приложении. С помощью KeyCloak пользователь без права доступа к кластеру или неймспейсу даже не увидит его.
Брокер сообщений
В каждый сервис, который можно развернуть через консоль, мы стараемся интегрировать набор базовых функций, реализуемых через API этого сервиса. Например, распределенный программный брокер сообщений Kafka. Система отвечает за обработку и передачу сообщений от отправителя получателю. Принимая сообщение от продюсера, брокер реплицирует его, а копии сохраняет на разных узлах. Kafka позволяет разгрузить веб-сервисы в системе, так как при отправке сообщений им не нужно тратить время на операции типа маршрутизации.
В консоли dBrain пользователь может создавать новые топики в Kafka с нужными параметрами, распределять нагрузку по нодам (reassign лидеров партиций), изменять параметры самого кластера.
Кластер извне
В консоль можно добавлять кластера, развернутые, например, в Google Cloud или Яндексе (при условии, что доступен API самого Kubernetes). Заложенные при разработке консоли концепции применимы при подключении уже существующих кластеров, размещенных в публичном облаке или еще где-то, например, GCP. Можно подключить внешний кластер GCP, создавать в нем ресурсы как в своем приватном облаке и управлять ими из единой точки.
Хранилище данных S3
В консоли есть реализованный интерфейс для управления объектным storage - хранилищем S3.
Хранилище предназначено для работы с резервными копиями баз данных, сайтов, файлов и т.д. Сервис S3 в dBrain может быть доступен как статический веб-сайт: доступ к файлам, которые в нем хранятся, можно предоставить через Ingress контроллер.
Менеджер лицензий
Лицензия платформы завязана на консоль. В dBrain можно создавать и подключать много кластеров на одну лицензию. Она шарится между всеми кластерами, подключенными к одной консоли. Таким образом, если у клиента закончится срок действия лицензии, то его кластера не перестанут работать, как например, в платформе Rancher, а частично станет недоступен определенный функционал самой консоли.
Еще одна опция: в консоли для масштабирования рабочей нагрузки платформы есть управление Vertical/Horizontal Pod Autoscaler в нашем Kubernetes. Но кейс о том, как мы внедряли автоскейлеры в консоль хочется описать в отдельном материале.
Что получает пользователь?
В консоли dBrain мы собрали наиболее востребованные среди разработчиков функции, чтобы она стала удобным пунктом управления кластерами. В консоли можно:
Создавать микросервисы и управлять ими на платформе через удобный пользовательский интерфейс. Разработчики могут нажать несколько кнопок, чтобы развернуть свое приложение, настроить среду выполнения, создать нужные базы данных и подключить приложение к ним.
Масштабировать приложения и изменять их параметры в зависимости от запроса. Разработчики могут увеличивать или уменьшать вычислительные мощности под свои приложения, чтобы гарантировать максимальную доступность и производительность приложения.
Мониторить работу приложений и записывать логи. Это позволяет отслеживать загрузку процессора, объем используемой памяти, обрабатываемый трафик и другие метрики, которые помогают оценить производительность микросервиса, а также вычислить и устранить ошибки.
Создавать базы данных и управлять ими. Разработчики могут с легкостью подключиться к Cassandra, Clickhouse, Kafka, MongoDB, PostgreSQL, Redis.
Настраивать и управлять бэкапами как самих баз данных, так и состояния кластера в целом. Пользователь может сделать бэкап своего неймспейса, чтобы в любой момент откатить изменения на кластере или восстановить копию интересующей базы данных в другом неймспейсе/кластере.
Иметь быстрый доступ ко всем хранящимся в S3 данным.
Работать совместно. Консоль позволяет распределять доступ пользователей к различным элементам кластера. Это дает возможность разработчикам совместно работать и управлять своими приложениями.
Консоль - это преимущество платформы dBrain, такого инструмента нет в аналогичных продуктах на рынке. Консоль позволяет упростить работу DevOps, а компаниям, у которых нет своего штата инженеров, легко эксплуатировать микросервисы.
Если у вас возникли вопросы о работе с каким-либо элементом нашего стека, пишите. А может, у вас есть идеи, как сделать панель управления платформы контейнеризации еще более универсальной? С удовольствием выслушаем ваши предложения.