Спецпроекты

Kubernetes становится доступной технологией даже для небольших компаний

Интеграция

Современные организации уже используют Kubernetes или активно присматриваются к этой системе. Это позволяет минимизировать время выхода приложений на рынок, обеспечить непрерывную интеграцию и поставку программного обеспечения, а также с помощью кластеров унифицировать подход к инфраструктуре.

Можно выбрать три варианта развертывания Kubernetes: своими силами, с помощью аутсорсинга или выбрать managed-решения. В последнем варианте Kubernetes будет работать как услуга. Managed оптимально подойдет новичкам и компаниям, которым важно, чтобы решения работали «из коробки» и стабильно функционировали.

По словам экспертов компании «Флант», пользователи зачастую ожидают, что с managed им будут доступны уже настроенные, интегрированные между собой компоненты, необходимые для полноценного запуска приложений в этой среде, однако в реальности это не всегда так. Кроме того, managed-подход удобен тем, что Kubernetes автоматически обновляется и в нем решены проблемы с совместимостью релизов всех компонентов.

В чем сила Kubernetes?

Kubernetes стал стандартом для описания инфраструктуры, непрерывной доставки приложений и последующего обслуживания в эксплуатации. Разработчики, создающие приложения для Kubernetes, даже из разных команд, используют унифицированный и централизованный подход. Благодаря этому время адаптации новых инженеров значительно сокращается: вместо очередного «доморощенного» решения они попадают в уже знакомое им окружение.

Использование контейнеров в разных окружениях: от dev до production

Источник: CNCF, 2020 г.

«Раньше у заказчиков, которые не использовали Kubernetes, возникали очень разные подходы к реализации непрерывной доставки приложений и связанные с этим проблемы. Например, применялся не совместимый друг с другом инструментарий для развертывания инфраструктуры. Нормой была ситуация, когда локальные окружения для разработки сильно отличались от того, что появлялось в production. Все это негативно влияло на удобство, эффективность взаимодействия и его масштабирования, скорость time-to-market и другие критичные для бизнеса показатели», — рассказывает Дмитрий Шурупов, директор по работе с сообществом, сооснователь компании «Флант».

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

Рост применения Kubernetes для управления контейнерами — статистика за ноябрь 2019 г. по данным о 1,5 млрд контейнеров, используемых тысячами клиентов

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

Кроме того, Kubernetes автоматически на основании заданных алгоритмов может следить за здоровьем инфраструктуры, управлять ей, реагировать на всплески по трафику, на отказы отдельных узлов, перезапускать их или при выходе из строя заказывать новые.

«Kubernetes сокращает время вхождения разработчиков в процесс, унифицирует взаимодействие служб. Иными словами, он дает преимущества мультисервисного подхода, когда приложение разбито на куски, а каждая команда отвечает за свой кусок. Разные команды действуют как единое целое и по общим правилам», — отмечает Александр Баталов, генеральный директор компании «Флант».

Kubernetes требует сноровки

При всех очевидных преимуществах Kubernetes многие компании сталкиваются с трудностями при его использовании. Самая главная проблема: сотрудники компании должны обладать высокого уровня компетенциями, чтобы обеспечивать эффективную работу самого кластера Kubernetes. Это не только сложная система, но еще и очень динамично развивающийся проект, регулярно приносящий значимые изменения, требующие пристального внимания инженеров, обслуживающих его.

По данным GitHub за 2019 г., Kubernetes входит в десятку Open Source-проектов в мире по количеству контрибьюторов

«Многие компании присматриваются к Kubernetes и часто заблуждаются. Например, предприятие использует старое, ужасное «разваливающееся» приложение, а для его модернизации предлагает сверху поставить Kubernetes. Якобы, все самостоятельно масштабируется, автоматом повышается отказоустойчивость, а релизы будут доходить до конечных потребителей быстрее. Это так не работает. Для достижения эффекта нужно уметь «приготовить» Kubernetes, а зачастую потребуется еще и адаптация самого приложения», — объясняет Дмитрий Шурупов.

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

«Некоторые из тех, кто уже наслышан о Kubernetes, ошибочно полагают, что это библиотека, которую можно быстро прикрутить и за неделю, максимум — за месяц, все заработает как часы», — добавляет Дмитрий Столяров, технический директор, сооснователь компании «Флант».

С кем идти в Kubernetes

Перед развертыванием Kubernetes необходимо выбрать, какой способ внедрения окажется наиболее оптимальным.

Можно нанять специалистов в штат. В итоге расходы на сотрудников будут очень высокими, потому что либо их навыки уникальны и дороги, либо их взращивание внутри компании окажется очень длительным. Второй сценарий — прибегнуть к аутсорсинговой модели. Это, по сравнению с первым вариантом, дешевле и быстрее. К тому же, можно закрыть больше вопросов, чем сами кластеры Kubernetes, распространив поддержку, например, и на организацию процессов деплоя приложений. Третий вариант — использовать Kubernetes как сервис, то есть managed Kubernetes, это значительно дешевле первых двух вариантов. Однако у такой услуги есть свои ограничения, считают в компании «Флант». Здесь создали инструменты для простой работы с Kubernetes, которые доступны большинству организаций. При использовании этого подхода Kubernetes заработает точно и плавно.

Перед разработкой услуги команда «Фланта» задавалась вопросом: как сервис решит проблемы, которые накопились при реализации Kubernetes другими способами?

«В итоге мы сосредоточились на заказчиках, которые понимают, как работать с Kubernetes, и предоставили для них готовые к работе кластеры как услугу. Развернуть такие кластеры и взаимодействовать с ними можно буквально в тот же день. Для работы с ними доступны стандартные механизмы: консольная команда kubectl, доступ к Kubernetes API, «родной» веб-интерфейс Kubernetes Dashboard. Kubernetes-кластеры в нашей managed-услуге уникальны тем, что одинаково хорошо работают в облачных ресурсах разных публичных провайдеров (AWS, GCP, Яндекс.Облако, Mail.ru Cloud Solutions, Selectel Cloud), приватных облаках (OpenStack) и даже on-premises (т.е. на своих мощностях). Кластеры можно комбинировать: один – на железе, а второй — в облаке по выбору. Причем кластеры будут одинаковыми по всем своим версиям/конфигурациям/возможностям, возможны миграции между разными видами инфраструктуры», — отметил Александр Баталов.

Общий вид Kubernetes Dashboard — стандартного веб-интерфейса для работы с Kubernetes

Общий тренд на рынке таков, что managed-решения становятся все популярнее у компаний, объясняют эксперты. По их словам, содержать в штате профильных специалистов для поддержания многих сложных инфраструктурных решений просто нерентабельно: сотрудники вряд ли будут заняты на 100%, а оплачивать простой персонала сомнительное удовольствие. В то же время, если не уделять должное внимание обслуживанию критичных компонентов ИТ-инфраструктуры, риски для бизнеса огромны.

Кластеры работают как часы

Кластер заказчика при использовании подхода «Kubernetes как услуга» постоянно мониторится силами «Фланта», поддерживается в работоспособном состоянии, чинится в случае любых проблем, обновляется для поддержания высокого уровня безопасности и внедрения новых функций. Для пользователя все работает как часы, а за механизмами этих часов следит поставщик услуги.

«Вне зависимости от размера бизнеса, компании смотрят не на голый Kubernetes. В отличие от типовых managed-решений, мы предлагаем в кластерах многочисленные (50+) компоненты, уже настроенные, интегрированные между собой и сразу готовые к работе. Они предназначены для решения вопросов и масштабирования, и балансировки трафика, и мониторинга, и безопасности, и других аспектов. При этом они доступны во всех Kubernetes-кластерах вне зависимости от выбранной инфраструктуры (облачные провайдеры, железные серверы, виртуальные машины). Те, кто уже пробовал эксплуатировать Kubernetes, поймут, сколько головной боли снимается тем, что Kubernetes будет сам обновляться на новые версии и при этом будут решены все проблемы совместимости релизов его компонентов», добавляет Дмитрий Шурупов.

«В нашем Kubernetes будет работать автоскейлинг, компоненты подготовлены для запуска приложений в production. Это означает, например, что в кластере сразу доступны для использования метрики и графики для них, мониторинг ключевых показателей для конечных приложений… Ключ в том, что это не просто набор каких-то возможностей «для галочки», а специально отобранные, действительно нужные, полезные в работе реализации, «выстраданные» на основе большого опыта обслуживания разных проектов в реальных условиях. Для апдейтов, которые выходят довольно часто, пользователям не придется продумывать план каждого обновления, проводить тестирование, так как они получат это автоматически в работоспособном состоянии», — объяснил Дмитрий Столяров.

Основные программные компоненты, предварительно установленные и настроенные в кластерах Kubernetes от «Фланта»

Если заказчику важно комплексное обслуживание не только самих кластеров, но и организация, и реализация всего процесса доставки кода приложений до production, то он может обратиться за услугой DevOps как сервис. С ней все вопросы по инфраструктуре берет на себя постоянная команда инженеров. Они же консультируют по любым связанным задачам и проблемам: CI/CD-пайплайны, деплой, динамические окружения, нюансы эксплуатации в production и т.д. Благодаря этому разработчики могут полностью сосредоточиться на своей основной деятельности, получая для этого комфортную среду и необходимое сопровождение.

Жизненный цикл программного обеспечения: от планирования и написания кода — к эксплуатации и мониторингу

Общая рекомендация по миграции на Kubernetes — постепенный переход и понимание, что не вся «магия» происходит сама. Может потребоваться участие разработчиков для адаптации приложений, чтобы они получили все плюсы Kubernetes на практике.

«Managed-решение, или использование Kubernetes как услуги, стоит от 40 тыс. рублей за первый кластер, от 25 — за последующий. В таких условиях использование Kubernetes становится очень доступным для небольших компаний, кто раньше купить полноценную, всеобъемлющую поддержку не имел возможности», — отметил Александр Баталов.

Кластеры стартапам, кластеры гигантам

Преимущественно решения managed могут быть интересны двум большим группам:

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

«Например, интернет-магазину нужны возможности Kubernetes, однако набирать команду для поддержки кластера они не в состоянии: очень дорого. А проблемы с масштабированием нужно решать в связи с растущим спросом и перспективами «Черной пятницы». Если сервис при большом наплыве онлайн-посетителей будет работать со сбоями, то это чревато финансовыми потерями. Чтобы не допустить этого, предприятие выбирает managed Kubernetes», — рассказал Александр Баталов.

Крупные компании, в свою очередь, предпочитают не завязываться на поставщика. Все решения «Фланта» open source, используются upstream-версии Kubernetes и других компонентов. Некоторым клиентам интересно даже обучение своих специалистов для передачи этих кластеров им в эксплуатацию. Такой сценарий тоже предусмотрен.

К тому же, во «Фланте» уделяют пристальное внимание безопасности данных клиентов. Один из вариантов установки managed в инфраструктуру заказчика подразумевает, что доступ к ресурсам компании будет закрыт извне и предоставлен только для своих (т.е. заказчика) сотрудников. Для этого, конечно, потребуется обучить их работе с managed-сервисом.

Почему будущее за managed?

Благодаря доступности инструментов, простоте работы с Kubernetes без необходимости «раздувать» штат специалистов или прибегать к услугам аутсорсеров, компании все чаще предпочитают и будут предпочитать managed-решения. Все дело – в ожидаемом результате: Kubernetes заработает, как надо, а количество технических вопросов у клиентов остается минимальным. Но и их решат в кратчайшие сроки.

«Техническую поддержку клиент получит оперативно внутри страны, а не от реселлера из Пакистана на ломанном английском», заключает Дмитрий Столяров.

Специалисты «Флант» не теоретики, реализующие сторонние сервисы, а практики, активно участвующие в разработке Kubernetes и окружающей экосистемы.

Создание «Флантом» признанных в мировом Kubernetes-сообществе Open Source-проектов (таких как werf и shell-operator), реализация поддержки «Яндекс.Облака» в Kubernetes — явные подтверждения того, что экспертиза компании одна из лучших в России.