С ростом числа микросервисов и усложнением архитектуры приложений контейнеризация стала необходимой частью разработки. Компании все чаще выбирают ее для повышения гибкости и эффективности своих операций.
Несмотря на широкий выбор платформ, лидером в России стала Kubernetes. Она предлагает универсальные решения для управления контейнерами, обеспечивая гибкость и масштабируемость в условиях современных бизнес-реалий. Но все ли так просто? В статье обсудим уроки из практики внедрения Kubernetes и стратегии, позволяющие преодолеть возникшие трудности.
Контейнеризация и ее популярность в России
По данным исследования VK Cloud, 22% организаций используют контейнеризацию более 5 лет, 29% — 3–4 года, 23% — 1–2 года, а 26% — менее года. Среди них есть как представители ИТ-индустрии, так и организации из других секторов, включая финансы и торговлю.
«Контейнеры упрощают и ускоряют цикл разработки новых приложений, позволяют оперативно вносить изменения в уже использующиеся решения, при этом обеспечивая безопасность среды».
Валентин Соколов, ИТ-директор облачной платформы RCloud by 3data
За последний год количество компаний, использующих оркестраторы, возросло на 36% по сравнению с предыдущим годом. Рост популярности оркестраторов и платформ контейнеризации Дмитрий Головнич связывает, в том числе, с принятием законов о стандартизации разработки программного обеспечения в Российской Федерации. ПО должно быть написано в микросервисной архитектуре, соответственно, все микросервисы должны базироваться на платформах контейнеризации.
Согласно статистике VK Cloud, на российском рынке 57% компаний, использующих оркестраторы, предпочитают платформу с открытым исходным кодом Kubernetes.
«Docker был первым шагом к оркестрации. Потом появился Kubernetes — это интеллектуальное, автоматизированное и продвинутое решение для управления контейнерами. Сегодня это самое популярное решение. Внутри каждого Kubernetes-кластера используют различные движки для запуска: это может быть Docker, мы используем CRIO, кто-то выбирает runC. Но если мы говорим про оркестрацию и вообще контейнеризацию, то 95 процентов — это Kubernetes».
Дмитрий Головнич, глава разработки платформы контейнеризации dBrain.cloud
Помимо Kubernetes, иногда встречаются OpenShift (который построен на Kubernetes), Rancher и Docker Swarm, но они используются гораздо реже.
Станислав Соболь, старший инженер по безопасности приложений Центра кибербезопасности УЦСБ, отмечает, что на данный момент существуют и аналогичные решения, разработанные российскими специалистами. В качестве примеров он приводит такие, как:
- Deckhouse — это платформа для управления кластерами Kubernetes, разработанная российской компанией Flant. Она предоставляет возможность автоматизации процессов развертывания, масштабирования, обновления и управления кластерами.
- «Штурвал» — платформа для эксплуатации контейнеризованных приложений в промышленных масштабах с высокими требованиями к доступности и информационной безопасности от компании «Лаборатория числитель».
- Nova — это платформа, предназначенная для разработки и эксплуатации контейнеризированных приложений. Решение разработано российской компанией Orionsoft.
Несмотря на наличие аналогов, работа с Kubernetes позволяет значительно сократить время простоя приложения. Платформа самостоятельно отвечает за запуск всех служб внутри приложения. Именно по этой причине компании все чаще выбирают ее для своих нужд.
«Kubernetes — де-факто отраслевой стандарт для построения инфраструктуры. Технология позволяет создать высокодоступную, отказоустойчивую инфраструктуру, работающую в любом окружении, а также экономить ресурсы и сокращать операционные расходы на ее поддержание. Самое важное: Kubernetes позволяет инженерным командам работать независимо и быстрее доносить ценность до конечного пользователя, сокращая time-to-market».
Александр Титов, генеральный директор АО «Флант»
Практика использования Kubernetes
По данным VK Cloud, 56% разработчиков используют «ванильную» инсталляцию во внутреннем контуре или в облаке и 32% — управляемый сервис Kubernetes в публичном облаке. В ближайшие два года 82% опрошенных компаний планируют расширить количество кластеров Kubernetes, причем 44% из них ожидают значительного роста, превышающего 50%.
Некоторые компании в контейнерах разработки используют Kubernetes, дополненный собственными разработками. Например, в конвейере разработки Basis Digital Energy используется оркестратор Kubernetes, дополненный собственными разработками в направлениях автомасштабирования и отказоустойчивости.
«Собственные разработки позволяют добиться значительного преимущества перед стандартными конфигурациями развертываний оркестратора, позволяя достигнуть паритета с мировыми лидерами поставки облачных решений на базе Kubernetes».
Дмитрий Сорокин, технический директор разработчика системного ПО «Базис»
Среди преимуществ использования Kubernetes Максим Захаренко, СЕО облачного сервиса «Облакотека», отмечает: «Основное, за что любят Kubernetes, — это автоматизация. Он берет на себя многие рутинные задачи по управлению контейнерами, что ускоряет работу компаний и помогает быстро развертывать новые приложения. Плюс это идеальный инструмент для DevOps-команд: он отлично интегрируется с CI/CD, что упрощает разработку и развертывание».
«Автоматизация Kubernetes позволяет разграничивать нагрузку. Например, инструменты Vertical Pod Autoscaler (VPA) и Horizontal Pod Autoscaler (HPA) автоматически добавляют и убирают ресурсы, увеличивают количество реплик сервиса соответственно нарастающей или уменьшающейся нагрузке. Все это происходит автоматически, это не нужно мониторить, не нужно настраивать вручную».
Дмитрий Головнич, глава разработки платформы контейнеризации dBrain.cloud
«Такой подход обеспечивает качественный сервис для конечных продуктов, приложения устойчивы к любым нагрузкам. Для производителя приложения важно в данном случае, что им не надо держать миллион серверов в моменте, для того, чтобы один раз в год выдержать какую-то нагрузку. Соответственно, это экономит деньги», — дополняет Головнич.
Несмотря на возможности Kubernetes, компании, внедряющие платформу, сталкиваются с серьезными вызовами при масштабном развертывании. Обычно это проблемы, касающиеся опыта разработчиков (DevEx), частоты развертывания и управления рисками, которые могут напрямую повлиять на успех бизнеса.
Сложности масштабного развертывания в Kubernetes
Недостаточный опыт у разработчиков
«Начать надо с того, что технология имеет высокий порог вхождения, что затрудняет освоение для новичков. Помимо этого, специалисты по поддержке и администрированию Kubernetes являются дефицитными и дорогостоящими кадрами на рынке».
Дмитрий Сорокин, технический директор разработчика системного ПО «Базис»
Так, согласно исследованию VK Cloud, 48% специалистов и экспертов отметили недостаточную подготовку в области ИТ, что затрудняет эффективное использование Kubernetes. При этом 36% респондентов указали на нехватку навыков для обеспечения безопасности Kubernetes, а 26% столкнулись с трудностями в соблюдении нормативных требований. Эти данные подчеркивают существующие проблемы с опытом разработчиков (DevEx), которые могут негативно сказаться на успешном развертывании и использовании платформы, делая обучение и подготовку критически важными для достижения желаемых результатов.
«Для работы с Kubernetes нужно хорошо разбираться в сетевых технологиях, управлении ресурсами и данными в облаке, а также в инфобезопасности. Нанимать специалистов с такими знаниями — сложно и дорого».
Александр Титов, генеральный директор АО «Флант»
При развертывании Kubernetes в масштабах нескольких команд также возникают сложности, которые могут выбить разработчиков из колеи. Огромный объем конфигурационных файлов и YAML-манифестов, необходимых для управления крупномасштабными развертываниями, может привести к «усталости от YAML». В результате разработчики будут тратить больше времени на управление конвейерами развертывания, чем на написание кода, что может снизить производительность и замедлить циклы разработки.
Тяжеловесность перевода инфраструктуры и сложность развертывания
Разработка привыкает к определенному стеку технологий, базам данных, брокерам сообщений и другим сервисам, поэтому многие считают, что перевести инфраструктуру на облачные решения довольно сложно. Поэтому тяжеловесность перевода всей инфраструктуры также является сложностью масштабного развертывания Kubernetes в компаниях.
«Непросто перевести инфраструктуру, особенно смешанную, например, с виртуализацией, которая подразумевает, что разработка была монолитная. Если новое приложение нужно разрабатывать в микросервисной инфраструктуре, а у клиента приложения остались монолитными, то возникает вопрос, что с этим делать. Ответ один: переписывать приложения и переезжать на платформы контейнеризации».
Дмитрий Головнич, глава разработки платформы контейнеризации dBrain.cloud
Кроме того, с Kubernetes сложно поддерживать высокую частоту развертывания из-за смещения фокуса.
«При развертывании «ванильного» Kubernetes фокус инженеров будет не на бизнес-задачах, а на технологических, которые уже давно решены другими. Лучше использовать вендорские дистрибутивы, которые не только обеспечивают быстрый старт «из коробки», но и сокращают время и ресурсы на обслуживание».
Александр Титов, генеральный директор АО «Флант»
Михаил Хлебунов, директор по продуктам Servicepipe, отмечает, что при масштабном развертывании Kubernetes существует еще и проблема «шумных соседей». Она проявляется в невозможности полностью разграничить операции ввода/вывода между контейнерами.
«Именно поэтому корпорации, такие как «Яндекс» и VK во внутренней инфраструктуре используют средства оркестрации контейнеризация собственной разработки. Это накладывает определенные требования к инженерам, которые привыкли свои приложения разрабатывать под оркестратор kubernetes. Дефакто же в России стандарт платформы контейнеризации — k8s».
Михаил Хлебунов, директор по продуктам Servicepipe
Кроме того, координация развертывания нескольких микросервисов и кластеров требует сложных конвейеров CI/CD. Необходимость тщательного тестирования и проверки на каждом этапе конвейера еще больше усложняет процесс развертывания, а без надлежащей автоматизации и инструментария он может стать проблемным местом, приводя к задержкам вывода новых функций на рынок.
Риски безопасности решений на базе Kubernetes
Основные проблемы, с которыми сталкиваются компании при обеспечении безопасности решений на базе Kubernetes, заключаются в недостаточной квалификации команд по организации процессов DevSecOps (49%) и в настройке безопасных конфигураций (34%). Эти сложности часто обусловлены историческим разделением функций разработки, инфраструктуры и информационной безопасности в большинстве организаций.
Как решить проблемы развертывания в Kubernetes
Для решения проблем развертывания Kubernetes требуется комбинация инструментов и лучших практик.
«Уже постепенно появляются облачные провайдеры, которые предоставляют управляемые кластеры Kubernetes. Наша компания, например, предоставляет готовые управляемые кластеры на базе отечественного Deckhouse. Еще один подход — это внедрение дополнительных инструментов для автоматизации, таких как Helm для управления пакетами и Prometheus для мониторинга».
Максим Захаренко, СЕО облачного сервиса «Облакотека»
Также крайне важно тщательно спланировать архитектуру инфраструктуры и спроектировать многоуровневую систему обеспечения информационной безопасности.
Повышение качества образования и квалификации разработчиков
«Важным шагом станет обучение молодых специалистов в средне-специальных и высших учебных заведениях, а также повышение уровня мотивации и вознаграждения для квалифицированных специалистов, чтобы они продолжали работать над отечественными цифровыми продуктами. Так, мы запустили программу «DevOps-инженер с нуля» и сотрудничаем с 28 вузами, которые заинтересованы в выпуске востребованных специалистов».
Дмитрий Сорокин, технический директор разработчика системного ПО «Базис»
Кроме того, чтобы повысить квалификацию и вовлеченность разработчиков в работу с Kubernetes, важно упростить его сложность, сформировав удобные инструменты для выполнения повседневных операций, таких как развертывание и устранение неполадок.
Для проверки успешности развертывания, мониторинга состояния конфигурации и эффективного устранения неполадок стоит использовать шаблоны и системы безопасности, наряду с общими компонентами инфраструктуры — сервисными сетками, ингрессами и хранилищем.
Публичные облака и автоматизация
Для контейнеризации следует использовать публичные облака, где все готово для работа. В них достаточно кликнуть на одну кнопку, чтобы создать нужный сервис, соответственно, порог вхождения в технологию значительно уменьшается.
«Когда пользователь работает напрямую у себя с решением on-premise на инфраструктуре Kubernetes, ему нужно знать, как задеплоить туда базу данных, как правильно это сделать, где найти манифесты для деплоя и многое другое. Сейчас же появляются решения, которые делают это все за пользователя — платформы контейнеризации. Например, в платформе dBrain достаточно в UI сделать несколько кликов, чтобы запустить сервис».
Дмитрий Головнич, глава разработки платформы контейнеризации dBrain.cloud
Чтобы увеличить частоту развертываний с помощью Kubernetes и быстрее предоставлять ценность своим клиентам, следует автоматизировать конвейеры CI/CD и внедрить декларативные конфигурации. Для своевременного выявления ошибок следует внедрить автоматизированное тестирование (модульное, интеграционное, сквозное).
Сулейман Дибиров, старший разработчик в TheSoul Publishing, рекомендует:
- для снижения операционной нагрузки — использовать управляемые сервисы (например, Yandex Kubernetes Managed Service, VK Cloud Kubernetes, Azure Kubernetes Service, Amazon Elastic Kubernetes Service, Google Kubernetes Engine);
- для автоматизации и упрощения развертывания — внедрить GitOps;
- для улучшения наблюдаемости и контроля за системой — пользоваться сервисами мониторинга и логирования.
Кроме того, при масштабировании стоит использовать «сине-зеленые» или «канареечные» развертывания для безопасного релиза обновлений и контейнеризацию для создания согласованных сред и быстрых циклов развертывания.
Методы обеспечения кибербезопасности
Чтобы снизить риски при развертывании Kubernetes, необходимо внедрить передовые методы обеспечения безопасности, такие как управление доступом на основе ролей (RBAC), чтобы разработчики имели соответствующие средства защиты.
По данным VK Cloud, большинство опрошенных компаний уже сейчас намерены инвестировать в развитие и обучение своих сотрудников для повышения уровня защиты Kubernetes-кластеров: 68% участников планируют использовать для этих целей open-source-решения, 20% выберут коммерческие продукты, а лишь 9% планируют обращаться к внешним компаниям для обеспечения безопасности Kubernetes.
Так, несмотря на некоторые сложности, связанные с развертыванием инфраструктуры в Kubernetes, эта платформа обладает мощными возможностями, которые при правильном подходе способны обеспечить высокий уровень надежности.