Привет, %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)


  1. ivankudryavtsev
    16.07.2023 10:22
    +4

    Нормально написано для понимания бизнес-процессов работы с облаком у клиента. Жаль что не написано как инфраструктурно (железо, модель хранения, типы хостов, типы нод) и топологически устроено облако.


    1. MexanizM Автор
      16.07.2023 10:22
      +2

      Все довольно просто. На схеме с интеграциями верхнеуровневое представление, с хостами напрямую нет взаимодействия, хосты как и датасторы тегируются в MIQ и уже от этого идет от MIQ указание к VC, на какой хост и датастор из доступных можно приземлить машину, используются все сети доступные хосту, так как используется dvSwitch - это почти все сети.
      Реальная схема перегружена чувствительной инфой и массой фаерволов и по понятным причинам не может быть здесь опубликована ;)


      1. ivankudryavtsev
        16.07.2023 10:22
        +3

        Вы не поняли о чем я. Задам вопросы:

        1. Intel/AMD, семейство, сколько RAM/core, что с gpu;

        2. Хранилища nvme, sas ssd, hdd, локальные/sds?

        3. Сеть: флэт/sdn, виртуализация сети для vm?

        4. Что по телекому?

        5. Какие есть инстансы и сервисы для потребителей: vm, vm с гпу, резервация ядер, qos хранилищ, s3 как услуга?

        Если нельзя говорить, ок, принято.


        1. MexanizM Автор
          16.07.2023 10:22
          +2

          В общих чертах можно :)
          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.


        1. MexanizM Автор
          16.07.2023 10:22
          +1

          В Workflow в MIQ можно создать шаг, на любую функцию\операцию. На все, что нативно не исполняется, можно придумать интеграцию, ее просто нужно написать.


  1. kompilainenn2
    16.07.2023 10:22
    +4

    Мы тут работали с РСХБ недавно (жуткий опыт), и у нас была необходимость предоставлять в РСХБ огромные массивы строительно-финансовой документации в электронном виде. При этом СБ/ИБ РСХБ то запрещала сначала использовать Я.диск, то потом запрещала облако мэйл, зато разрешили юзать Г.диск, после чего началась обратная песня и разрешили Я.диск. Крайне неудобно это всё было, разные люди разные пакеты документов направляли, все это терялось в РСХБ постоянно и приходилось опять формировать пакеты документов и опять это куда-то выкладывать.

    Собственно к чему я это все спрашиваю, вы ваше облако можете рашарить наружу теперь, чтобы ваши внутренние сотрудники могли просматривать и блин хранить в одном месте всю информацию от некоего внешнего контрагента, который бы мог туда что-то загружать от себя? Или это чисто внутренний сервис онли?


    1. MexanizM Автор
      16.07.2023 10:22
      +1

      Охх, понимаю и сочувствую, есть нюансы.
      Наше облако не для файлов - это IaaS, то есть виртуальные серверы. У нас в Roadmap'е есть пункт про файловые шары, но он опять же про другое.
      Слышал, что кто-то из коллег по цеху занимается проработкой вопроса, но опять же для внутренних нужд, не уверен, будут ли коллеги выводить его наружу для файлообмена с подрядчиками, думаю тут скоро появятся более знающие, такие нюансы, коллеги и возможно подскажут как быть ;)


      1. lilkan
        16.07.2023 10:22
        +1

        Спасибо, статья классная.
        Про файлы понятно, но если мы вам например сервис какой то разворачиваем (мы подрядчики/вендоры/контрагенты), и каждый раз это делегат "с флешкой", можно как то настроить деплой сразу на ваше облако? Есть ли в нем доступы для вендоров к части ваших внутренних контуров (по тем-же квотам)? Или ИБ завернут такой проект?
        просто сейчас и вы ждете от нас релизы, но и у нас не каждый день готовы к вам бегать) + смотреть логи если что не так совсем мУка смертная


        1. MexanizM Автор
          16.07.2023 10:22
          +1

          Не понял, это гипотетическая ситуация или реальная?
          В любом случае концепция Частного облака предполагает, что оно не доступно из вне и даже если бы в какой-то компании рискнули выставить его наружу, то в нашей ИБ такое точно завернет, потенциальная точка входа\отказа никому не нужна.
          Нужно искать другие пути и они теоретически есть. Подрядчик\вендор может быть устроен в Интех\Банк по совместительству и получить доступ к какой-то части инфры, в том числе к ЧО и\или к обще корпоративному Gitlab. Если ситуация реальная можете написать в личку дам совет.


    1. Francyz
      16.07.2023 10:22
      +3

      У них банк-клиент для юр.лиц до сих пор на ИЕ работает и хром не воспринимает.


  1. iemmanuylov
    16.07.2023 10:22
    +2

    Добрый день!

    Спасибо за статью, очень познавательно :)

    Подскажите, пожалуйста, проводили ли вы сравнительный анализ гипервизоров перед выбором VMware? Банк ведь наверняка попадает под объекты критической инфраструктуры и к 25 году должен будет начать использовать что-то другое? Типа того же Openstack, голого KVM с libvirt или подобным?

    Или VMware был выбран так как он уже использовался в банке и переезд на аналогичное решение с MIQ просто добавил автоматизации в вашу инфраструктуру и уменьшил time-to-market?

    Имеете ли планы на будущее на смену гипервизора?


    1. MexanizM Автор
      16.07.2023 10:22
      +1

      VMware была.
      Коллега проводил сравнительный анализ решений по виртуализации и oVirt-based решения себя хорошо проявили. Какие-то из них не просто шильдики переклеили, а что-то привнесли, это с его слов. Как увижу передам, что народу интересно и если у него будет время и настроение для статьи, то она может состояться ;)
      На данный момент у нас выбран и куплен HostVM (oVirt-based) и он замечательно скрещивается с ManageIQ, так как мэинтейнер один и тот же - Red Hat.