Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

Отечественный кубер: кринж или база?

Сейчас существует много качественных продуктов, среди которых можно найти подходящее решение. В статье расскажем, что выбрали на рынке, а также о нашем опыте работы с платформами.

2К открытий13К показов

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

Почему мы решили попробовать готовое решение

Есть устойчивый стереотип, что решения отечественной контейнеризации на самом деле просто базовый, ванильный Kubernetes или копия бесплатных версий иностранных проектов. Но это не совсем так: в первую очередь, это работающие системы со взаимосвязанными компонентами.

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

Когда мы исследовали рынок, то в первую очередь искали:

  • функционирующую платформу, которую не нужно самостоятельно дорабатывать;
  • полноценное решение для продуктивных окружений;
  • удобство в использовании и внедрении.

И нашли достаточно хороших, укомплектованных продуктов. Большая часть построена на опенсорс Kubernetes с дополнительными сервисами вроде Prometheus, Grafana, Loki, FluxCD и так далее.

Плюсы и минусы готовых решений

Такие продукты позволяют настраивать из коробки интеграции с различными системами пользователя. Например, доступна настройка доменной аутентификации (с LDAP или Microsoft AD), интеграция с GitLab с помощью FluxCD или Argo CD как для инфраструктурных элементов, так и для выкатки своего приложения. Это значительно экономит время на внедрение платформы в существующий проект.

Если говорить в рамках проектирования, то использование готовой платформы освобождает от необходимости заранее думать о базовых элементах инфраструктуры k8s, которые могут понадобиться в дальнейшем. Любые необходимые сервисы можно доустановить как дополнительными модулями самой платформы, так и самостоятельно.

В случае On-Premise инсталляции главный плюс — интеграция с продуктом виртуализации. Это означает, что процесс создания виртуальных машин под узлы кластера платформы контейнеризации уже автоматизирован.

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

Мы обладаем достаточной экспертизой в построении проектов на опенсорс, чтобы самостоятельно настраивать инфраструктуру. Но прибегая к подобной экосистеме, мы значительно экономим время. Особенно потому, что тестированием обновлений на наличие багов и обеспечением надёжной работы компонентов занимается вендор.

Однако такие экосистемы могут показаться излишними и ненужными. В первую очередь, если вы работаете с кластером небольших размеров. Решение нацелено на средние или масштабные проекты и требует достаточно ресурсов для функционирования. К тому же, специалист, обладающий высокой экспертизой, может самостоятельно настроить компоненты платформы по отдельности. Готовый продукт сокращает время развертывания и поддержки продукта, а не является незаменимым элементом системы.

Давайте на примере Nova Container Platform посмотрим, какие возможности может предложить отечественный «Куб».

Что такое Nova Container Platform

Nova Container Platform — экосистема, построенная на Kubernetes с дополнительными интегрированными сервисами. Их «подружили» между собой и дополнили собственными решениями по менеджменту и управлению кластерами.

Почему остановились на ней

Стек технологий платформы максимально приближен к стеку в реализуемых нами проектах. Поэтому при внедрении Nova нам было достаточно просто разобраться в архитектуре решения и полноценно её использовать.

При обновлении от вендора мы лишь проверяем, что новая версия платформы работает с приложением клиента.

Отечественный кубер: кринж или база? 1
Продукт находится на старте развития: несколько месяцев назад его включили в реестр Минцифры. Поэтому набор включенных технологий небольшой. Но то, что уже есть сейчас, удовлетворяет большую часть нужд заказчиков

У Nova, как и у большинства аналогов, есть несколько дополнительных функций. Нам понравилась веб-консоль: она помогает закрыть большинство задач по управлению кластером и мониторингу, что позволяет легко передать другим уровням поддержки работу по обслуживанию и контролю за системой.

А саму платформу можно развернуть через один манифест. В нём сразу указываются все ноды, процесс деплоя происходит параллельно.

Что внутри платформы?

Средой запуска контейнеров выступает containerd. Есть сетевые плагины, доступные из коробки: Cilium и Calico. И два Ingress-контроллера:

  • первый отвечает за публичный доступ;
  • второй управляет инфраструктурными сервисами: консоль, визуализация метрик и прочее.

Платформа включает стандартный набор Kubernetes-сервисов: Scheduler, Controller Manager и API Server. В дополнение идёт Descheduler: с его помощью можно настроить политики распределения подов между узлами. Тем самым минимизировать дисбаланс.

Главный элемент — Secrets Manager. Он достаточно глубоко интегрирован в архитектуру и предоставляет как внешнее хранилище секретов, OAuth-авторизацию для всех инфраструктурных сервисов и Secrets Store CSI, так и инфраструктуру PKI.

Что нам показалось удобным

  • Платформу можно развернуть в облаке, собственной виртуализации или на bare-metal.
  • Продукт адаптирован для работы с российской RED OS или с RHEL. В будущем планируют добавить совместимость с Debian-based системами.
  • Из коробки доступна настройка доменной аутентификации с LDAP либо Microsoft AD, а также интеграция c внешними IDP по протоколу OIDC (например, с Keycloak).
  • Интеграция с Git-сервисами, то есть возможность сразу использовать подход GitOps и настраивать CD. Например, Flux как для инфраструктурных элементов, так и для выкатки своего приложения.
  • Вендор берёт на себя техподдержку и тестирование обновлений и решение типовых задач.
  • Веб-консоль для мониторинга, просмотров логов и метрик. Решение работает в том числе на мобильных платформах.
Отечественный кубер: кринж или база? 2
Главная страница консоли
Отечественный кубер: кринж или база? 3
Страница «панель мониторинга». Есть возможность выбрать нужный дашборд

Пример использования Nova Container Platform

Один из заказчиков пришёл с просьбой перевести проект из On-Premise в On-Cloud и передать его на внешнюю поддержку. Мы провели аудит и обнаружили в архитектуре достаточно критичные недоработки: некоторые сервисы не были кластеризованы, мониторинг неправильно настроен, все операции по обновлению производились вручную.

Поскольку внутри компании не существует жёстких требований по использованию конкретных решений, мы можем пробовать разные инструменты в реализации целевой архитектуры. Поэтому решили использовать в проекте Nova Container Platform и вот что получили:

Отечественный кубер: кринж или база? 4
В проекте заказчика развёрнут доменный кластер FreeIPA и через него настроена аутентификация

Для реализации персистентного хранилища использовали EBS-провайдера облака КРОК. Всю чувствительную информацию (ключи, секреты, креды) разместили в Secrets Manager и настроили непрерывную интеграцию с Secrets Manager в приложениях.

В качестве ReadWriteMany-хранилища взяли CSI на базе GeeseFS S3. Особенность этого драйвера в том, что Secret не может быть использован в env-инструкции контейнеров. Чтобы синхронизировать секрет для доступа к S3-хранилищу с секретом в Kubernetes, мы использовали Secret Store CSI, который поставляется в платформе. В итоге получили управляемые секреты.

Вместо OpenSearch решили использовать Grafana Loki с интеграцией S3-хранилища Облака КРОК, так как они и снижают стоимость хранения логов, и повышают удобство их просматривания. Развернули Loki с помощью Helm Release в FluxCD. Чтобы не перегружать манифест большим списком значений в values.yaml, мы использовали ConfigMap Generator, доступный из тулкита Kustomize в FluxCD.

Есть ли смысл в Nova?

Платформа ускоряет проектирование, внедрение и обновление компонентов. Определён примерный рекомендуемый сайзинг, который позволяет не думать о том, как мы можем начать использовать эти сервисы. Развернуть кластер можно одним манифестом, а управлять системой сможет даже разработчик, далёкий от девопса.

Nova Container Platform автоматизирована так, чтобы клиент занимался ей как можно меньше — обслуживание и обновление компонентов берут на себя вендор или его облачный подрядчик.

Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий13К показов