Привет, %Username%! Меня зовут Михаил Слотин, я главный архитектор в РСХБ-Интех (технологическая дочка Россельхозбанка) и один из создателей Частного Облака (ЧО) РСХБ. Сегодня расскажу вам, как мы работали над ЧО, почему потребовалось создавать новое решение вместо покупки готового и как мы сделали больше, чем планировали. Особо полезна, на мой взгляд, статья будет архитекторам и ИТ-менеджерам. Надеюсь, она поможет определиться, начать свою разработку или нет.
В РСХБ-Интех я пришел конкретно на проект по созданию ЧО в конце декабря 2021 года и сразу же приступил к поискам существующих на российском рынке альтернатив, потому как импортозамещение уже громко звучало из всех уст.
Были интересные решения, в большей части базирующиеся на базе OpenStack. Некоторые пошли дальше простого переклеивания шильдика и банального перевода на русский. Но все равно имеющихся тогда продуктов было недостаточно для решения задачи и перехода на другую платформу, в том числе виртуализации. Транзит на неподходящую платформу кроме затрат на лицензии грозил еще и затратами на оборудование.
Изыскания проводились вместе с моим коллегой, работающим в проекте по VDI. Он подсказал, что слышал, что Джет ведет проект с другим заказчиком по ManageIQ, после чего я решил познакомиться с прекрасными людьми из этой компании. Серега (@haisenberg), привет!
Заканчивая наши поиски (которые, по большому счету, были однотипными, в основном ванильный OpenStack) и параллельно создавая стенд для ManageIQ, за 3 месяца мы сделали MVP на 3 базовые услуги с интеграцией только с AD. Еще через 4 месяца мы скрестили ЧО со всеми необходимыми системами и запустились в продакшен, попутно подняв IPAM, которого в компании не было. И в последние 2 месяца до выхода в продакшн к нам пришла прекрасная разработчица Аня (@Nicky-DT), и мы сделали первую версию портала самообслуживания. Аня, к нашему сожалению, уже покинула компанию. Но она внесла большой вклад и не оценить это невозможно. На ее место пришел новый сильный сотрудник, и он очень нас радует.
Эти 7 месяцев были очень насыщенными, и мысли, что работа в Банке сродни "пенсии", растаяли. Не то чтобы я этого искал, но не думал, что будет настолько динамично. Куча интервью, куча документации, ТЗ на 60 страниц только в части услуг, огромное количество проработки всех сценариев использования с коллегами, согласование с ИБ наших инсталляций и автоматизация-автоматизация-автоматизация. Все ради удобства пользователей — разработчиков и тестировщиков продуктов для РСХБ и дочерних организаций. Тут еще хочется поблагодарить наших первых клиентов команду App.Farm (банковская среда РСХБ, следующая концепции PaaS. Здесь происходят процессы тестирования и доработки решений перед выпуском в продакшен) и, в частности, Костю (@Quadexx). Они мотивируют нас на дальнейшую разработку. Многих ещё хотелось бы поблагодарить, но всех не перечислить. Надеюсь, никто не обидится, но, если вы это читаете — спасибо!
Было-стало
Еще чуть-чуть душноты и перейдем к технике.
На слайде выше опущен процесс предоставления доступа к созданному серверу, но не специально. Процесс предоставления доступов происходит в системе электронного документооборота и занимает примерно неделю. В случае с ЧО через 33 минуты после нажатия на кнопку «Создать» пользователь получает полностью сконфигурированный по стандартам банка сервер с доступами, готовый к работе.
Архитектура и потоки
Две идентичные инсталляции: одна под разработку и тестирование, а вторая продуктивная. Для разработки и тестирования нам выделены 2 кластера на платформах виртуализации VMware и HostVM (oVirt-based решение).
На схеме ниже представлена первая инсталляция со всеми интеграциями, нарисованная на скорую руку. Наша система была заведена как низко-критичная и пока у нас не реализована балансировка на всех уровнях, но задел под это частично заложен и на всех слоях.
Аутентификация пользователей происходит в двух доменах и реализована посредством SSSD. У нас была попытка скрестить ManageIQ с Keycloak, но из-за нехватки времени ушли на классическую схему с AD. Хотя мы планируем продолжить наши изысканиям.
А вот как выглядит процесс создание сервера. Ранее я уже писал, что сервер настраивается по стандартам банка, это происходит двумя системами, встроенным в ManageIQ: Ansible в случае, если это Windows, и AWX если Linux. У нас много планов по оптимизации этого процесса, но мало рук.
Портал
В какой-то момент мы с коллегой Дмитрием (@bel1k0v) поняли, что порталы ManageIQ не отвечают нашим внутренним требованиям, и Дмитрий перешел на разработку внутреннего портала. Для этого был взят Laravel в качестве серверного фреймворка и Vue.js для клиента, что позволило в короткий срок получить MVP. Также для разработки использовались: Docker, Nginx + PHP-FPM, Redis, Postgre Pro, Astra Linux.
Портал является единой точкой входа для клиентов пользовательского интерфейса и, мы уже почти приготовили полноценный API для IaC, описав API в Swagger. На портале реализован механизм статусов виртуальных машин, обработка заявок и обновление данных в фоне, журнал действий пользователя и интеграция с IPAM. В будущем планируется расширение функциональности портала, с увеличением количества доступных сервисов.
Здесь уже будут скрины второй версии пользовательского интерфейса. Как я уже писал, первая версия писалась за 2 месяца. За очень простым интерфейсом скрыта куча логики и валидаций. В ManageIQ помимо квот хранится куча meta-атрибутов на разных уровнях, часть на уровне tenant (tenant и его мета-атрибуты — это Ресурсный пул, далее РП), часть на уровне VM.
Мы отслеживаем статусы в процессе создания, удаления, выключения и перезагрузок. Сравниваем занесенный в мета-атрибуты сервера IP с фактическим значением из VMTools (по факту вся эта информация хранится в ManageIQ).
Создание виртуальной машины
У нас реализована настройка над РП в части нэйминга, он может быть стандартным или кастомным. Стандартный нейминг складывается из мета-атрибутов РП, а кастомный — свободный. В поле имени сервера происходит валидация на существование имен в IPAM (Netbox), для нас это source of truth (источник истины).
Сетей может быть несколько для одного РП поэтому мы даем ее выбирать. Как и свободные IP адреса, они также загружаются из IPAM. Выбор ОС это по факту выбор шаблона, которые автоматом появляются, когда в ManageIQ заносится новый.
С CPU и RAM думаю понятно, и пояснений не требуется. Кроме того, мы валидируем максимальные возможные значения этих параметров для РП в части квот, и существует верхнеуровневый лимит, как требование от команды виртуализации.
Последним пунктом выбирается домен в который будет включен сервер как Windows, так и Linux. На стенде разработки у нас сейчас имплементируется добавление дисков на этапе создания сервера. В ближайшее время готовим запуск новой услуги — создание сервера с настроенной БД (конечно же Postgres Pro).
Изменение виртуальной машины
На форме также есть валидация в зависимости от доступной квоты. Так как для данной машины включен Hot-add (изменение параметров “на горячую”), портал знает, какой лимит есть на системе виртуализации для изменения параметра по RAM.
Другие интерфейсы
У нас реализована ролевая модель, и помимо интерфейса Администраторов РП (скрины выше) есть Администраторы Квот, где они могут создают РП и управляют квотами существующих. Также мы реализовали отображение верхнеуровневой квоты, в зависимости от количества и конфигураций гипервизоров и валидируем создание РП в части количества ресурсов выделенных для ЧО.
В интерфейсе Администраторов ИБ доступен просмотр действий пользователей, в том числе IP-адреса, с которых пользователи к нам пришли. К сожалению, недельные поиски в ManageIQ нам не помогли, и Дмитрий создал свой функционал, но уже на нашем портале.
API
Мы валидируем значения не только на фронте, но теперь и на бэке. За последние несколько недель переработали основные функции, упростив взаимодействие с API.
Проблемы с которыми столкнулись
Первая и основная проблема — это нехватка людей в команде разработки и эксплуатации. Но этот момент, надеюсь, в скором времени решится.
Вторая, это то, что когда мы приходим к коллегам и предлагаем им перенести рабочие процессы в облако, то порой сталкиваемся с непониманием и сопротивлением. Коллеги не верят, что это будет удобно. Приходится проводить презентации и только после этого у людей загораются глаза. Надеюсь эта статья и то, что мы опубликуем ее расширенную версию с ответами на частые вопросы, сильно поможет нам.
Что мы получили в итоге
Подводя итоги, я расскажу, что нам удалось получить и до каких выводов мы дошли в процессе разработки.
Своя разработка дешевле, чем лицензии и поддержка от вендора, но только при условии, что аналогов с такой гибкостью и функционалом нет. В своем продукте можно имплементировать, что угодно, что мы активно и делаем. У нас четкий Roadmap, базирующийся на наиболее частых операциях пользователей, и шаг за шагом мы автоматизируем наиболее востребованные операции.
Пресловутый T2M.
Наши «клиенты» (внутренние сотрудники банка из различных подразделений) теперь не ждут серверы с доступами по 2 недели, изменение конфигурации происходит за минуты, а не дни, так же как перезагрузки не часы, а секунды.
Если остались вопросы и вы еще не побежали разрабатывать свое облако — с удовольствием ответим. ;)
Комментарии (12)
kompilainenn2
16.07.2023 10:22+4Мы тут работали с РСХБ недавно (жуткий опыт), и у нас была необходимость предоставлять в РСХБ огромные массивы строительно-финансовой документации в электронном виде. При этом СБ/ИБ РСХБ то запрещала сначала использовать Я.диск, то потом запрещала облако мэйл, зато разрешили юзать Г.диск, после чего началась обратная песня и разрешили Я.диск. Крайне неудобно это всё было, разные люди разные пакеты документов направляли, все это терялось в РСХБ постоянно и приходилось опять формировать пакеты документов и опять это куда-то выкладывать.
Собственно к чему я это все спрашиваю, вы ваше облако можете рашарить наружу теперь, чтобы ваши внутренние сотрудники могли просматривать и блин хранить в одном месте всю информацию от некоего внешнего контрагента, который бы мог туда что-то загружать от себя? Или это чисто внутренний сервис онли?
MexanizM Автор
16.07.2023 10:22+1Охх, понимаю и сочувствую, есть нюансы.
Наше облако не для файлов - это IaaS, то есть виртуальные серверы. У нас в Roadmap'е есть пункт про файловые шары, но он опять же про другое.
Слышал, что кто-то из коллег по цеху занимается проработкой вопроса, но опять же для внутренних нужд, не уверен, будут ли коллеги выводить его наружу для файлообмена с подрядчиками, думаю тут скоро появятся более знающие, такие нюансы, коллеги и возможно подскажут как быть ;)lilkan
16.07.2023 10:22+1Спасибо, статья классная.
Про файлы понятно, но если мы вам например сервис какой то разворачиваем (мы подрядчики/вендоры/контрагенты), и каждый раз это делегат "с флешкой", можно как то настроить деплой сразу на ваше облако? Есть ли в нем доступы для вендоров к части ваших внутренних контуров (по тем-же квотам)? Или ИБ завернут такой проект?
просто сейчас и вы ждете от нас релизы, но и у нас не каждый день готовы к вам бегать) + смотреть логи если что не так совсем мУка смертнаяMexanizM Автор
16.07.2023 10:22+1Не понял, это гипотетическая ситуация или реальная?
В любом случае концепция Частного облака предполагает, что оно не доступно из вне и даже если бы в какой-то компании рискнули выставить его наружу, то в нашей ИБ такое точно завернет, потенциальная точка входа\отказа никому не нужна.
Нужно искать другие пути и они теоретически есть. Подрядчик\вендор может быть устроен в Интех\Банк по совместительству и получить доступ к какой-то части инфры, в том числе к ЧО и\или к обще корпоративному Gitlab. Если ситуация реальная можете написать в личку дам совет.
Francyz
16.07.2023 10:22+3У них банк-клиент для юр.лиц до сих пор на ИЕ работает и хром не воспринимает.
iemmanuylov
16.07.2023 10:22+2Добрый день!
Спасибо за статью, очень познавательно :)
Подскажите, пожалуйста, проводили ли вы сравнительный анализ гипервизоров перед выбором VMware? Банк ведь наверняка попадает под объекты критической инфраструктуры и к 25 году должен будет начать использовать что-то другое? Типа того же Openstack, голого KVM с libvirt или подобным?
Или VMware был выбран так как он уже использовался в банке и переезд на аналогичное решение с MIQ просто добавил автоматизации в вашу инфраструктуру и уменьшил time-to-market?
Имеете ли планы на будущее на смену гипервизора?
MexanizM Автор
16.07.2023 10:22+1VMware была.
Коллега проводил сравнительный анализ решений по виртуализации и oVirt-based решения себя хорошо проявили. Какие-то из них не просто шильдики переклеили, а что-то привнесли, это с его слов. Как увижу передам, что народу интересно и если у него будет время и настроение для статьи, то она может состояться ;)
На данный момент у нас выбран и куплен HostVM (oVirt-based) и он замечательно скрещивается с ManageIQ, так как мэинтейнер один и тот же - Red Hat.
ivankudryavtsev
Нормально написано для понимания бизнес-процессов работы с облаком у клиента. Жаль что не написано как инфраструктурно (железо, модель хранения, типы хостов, типы нод) и топологически устроено облако.
MexanizM Автор
Все довольно просто. На схеме с интеграциями верхнеуровневое представление, с хостами напрямую нет взаимодействия, хосты как и датасторы тегируются в MIQ и уже от этого идет от MIQ указание к VC, на какой хост и датастор из доступных можно приземлить машину, используются все сети доступные хосту, так как используется dvSwitch - это почти все сети.
Реальная схема перегружена чувствительной инфой и массой фаерволов и по понятным причинам не может быть здесь опубликована ;)
ivankudryavtsev
Вы не поняли о чем я. Задам вопросы:
Intel/AMD, семейство, сколько RAM/core, что с gpu;
Хранилища nvme, sas ssd, hdd, локальные/sds?
Сеть: флэт/sdn, виртуализация сети для vm?
Что по телекому?
Какие есть инстансы и сервисы для потребителей: vm, vm с гпу, резервация ядер, qos хранилищ, s3 как услуга?
Если нельзя говорить, ок, принято.
MexanizM Автор
В общих чертах можно :)
1. 4х сокетные серверы на Intel, 112 ядер, с 4,5 ТБ памяти. Для HostVM выделены пока старые серверы, 2х сокетные Intel, с 256 Гб памяти, но в рамках импортозамещения под HostVM едет "наше" железо. GPU нет.
2. Классические All-flash массивы, различных вендоров.
3. Виртуализации в классическом представлении нет. NSX не купили по той же причине, что и vRealize.
4. Тут не подскажу, но для моего слоя это не важно, а для виртуализации достаточно.
5. Выше написал - GPU нет. VM само собой, плюс VM с уже настроенным прикладом, БД скоро, за ним пойдут остальные наиболее востребованные. Резервация ядер не используется в среде разработки и тестирования, точнее она есть но на выделенных кластерах под нагрузочное тестирование, к этому кейсу мы еще не дошли, сначала самые частые операции и сервисы. S3 в Roadmap'e.
MexanizM Автор
В Workflow в MIQ можно создать шаг, на любую функцию\операцию. На все, что нативно не исполняется, можно придумать интеграцию, ее просто нужно написать.