Всё началось с того, что команде, с которой я работаю, предложили заказ на миграцию приложений из Docker Compose “во что-нибудь более масштабируемое, отказоустойчивое и гибкое. Например, Ansible или Kubernetes.” Приложение, которое планировалось разворачивать, использовалось для управления, хранения, поиска данных постов из биржи телеграм-рекламы (статистика, текст, видео, изображения), структурирования по группам и визуализации статданных с использованием Datadog, который в последствии заменили на netdata.
Команда приняла решение использовать Kubernetes, во многом благодаря посту @ronrz, который подробно описывал преимущества решения в похожем кейсе. Также на выбор решения повлиял опыт коллег из ЕАЕ-Консалт, которые успешно использовали Kubernetes в своей практике. И всё это прекрасно, но у меня возникли проблемы. Как системному аналитику и по совместительству PM проекта, с минимальным опытом в DevOps, пришлось изрядно попотеть с пониманием многих вещей, касающихся Kubernetes. Под катом подробно о статьях и книгах, которые помогли мне разобраться с оркестратором, понять, чего хочет заказчик, сформировать требования к работе системы в целом, отказоустойчивости, масштабированию и безопасности.
Предупреждение: прочтение и осмысление описанных материалов не превратит аналитика в DevOps инженера, если он не был им до прочтения. При этом они здорово помогут формировать и формулировать системные требования, разобраться в том, что может платформа и как она устроена, а также предложить заказчику передовые решения и практики для решения проектных задач.
Предыстория
(спойлер, можно не читать и сразу перейти к обзору книг)
Если с тем, как описывать требования к контейнеризации в Docker у меня был успешный опыт, то о работе с оркестраторами я имел крайне туманное представление и в своей практике впервые столкнулся с подобной задачей.
До первого интервью с заказчиком оставалось немногим более месяца, а наш техлид не имел достаточно времени для разжевывания вещей, которые представлялись ему очень простыми. Понимая, что кивать и формулировать требования как бог на душу пошлёт, копируя в ТЗ дословные формулировки заказчика, не выйдет, решил больше почитать о Kubernetes. Смутно и абстрактно сформулированные заказчиком цели миграции дали понять, что упор нужно сделать на, как минимум, обзорном изучении 4-х направлений:
Базовые представления о запуске приложений, миграции и развертывании в kubernetes, настройке прав, ролей, ограничении ресурсов.
Разработка отказоустойчивой архитектуры в kubernetes.
Автомасштабирование, скейлинг контейнеров и инстансов.
kubernetes security — безопасность рабочих нод, подов, сетевых служб и системных компонентов.
Статьи
Сначала мне казалось, что усвоить необходимый объём информации можно за пару дней, почитав статьи на Хабре. Наиболее полезными постами оказались:
K8S для начинающих — обзорный цикл постов о kubernetes для нубов.
Как изучать Kubernetes джуну — и зачем — о личном опыте начинающего разработчика, многое оказалось полезным.
Контейнеризация понятным языком: хранение данных и безопасность в Kubernetes, зачем нужен Ansible — интервью, в котором затрагивались вопросы безопасности.
Посты помогли с базовыми представлениями, но всё оказалось сложнее, чем мне казалось. Как в старом анекдоте. Чем дальше я “заходил в лес”, тем толще оказывались “партизаны”. В итоге, решил читать книги. Ничего специфического для SA и PM, например, по формированию требований к миграции и размещению приложений, а также по управлению проектами применительно к Kubernetes я не нашёл, ни статей, ни книг. Решил использовать литературу для DevOps-инженеров.
Книги
Сайфан Джиджи. Осваиваем Kubernetes. Оркестрация контейнерных архитектур. 2019 год
Я рекомендовал бы тем, кто ничего не знает о Kubernetes, начинать с этой книги. Там в доступной форме и последовательно описана архитектура оркестратора, принципы и методы работы с ним. Книга раскрывает основные понятия, такие как ноды, поды, сервисы и компоненты, а также узлы, кластеры, метки и селекторы меток, контроллеры репликации, наборы реплик, тома, StarflSet и др. Архитектура и API описаны достаточно подробно, в частности, даны основы проектирования распределенных систем.
Книга с нуля обучает созданию микросервисов с сохранением состоянием, описывает возможности Kubernets при создании ресурсных ограничений, горизонтальном автомасштабировании подов, работе с хранилищами данных. Особенности сетевой конфигурации, настройки и интеграции плагинов для наиболее распространённых задач даны на реальных примерах. Идеальна для нубов, вроде меня, связанных с разработкой опосредовано, и разработчиков, которые только знакомятся с платформой.
Главное в книге для системного аналитика: дает хорошее базовое представление об архитектуре и возможностях оркестратора, понимание которых позволит формировать требования к развертыванию достаточно детально. Позволяет понять возможности масштабирования будущей системы, а также узнать о функциях ограничения и разделения ресурсов по пространствам имен. Рассказывает об ограничении прав для различных ролей пользователей. Формирует целостное представление о функциях и понимание того, что из хотелок заказчика может быть реализовано.
Об авторе:
Джиджи Сайфан (Gigi Sayfan) — главный архитектор ПО в Helix. Разрабатывает приложение по обмену мгновенными сообщениями и морфингу на протяжении последних 22 лет. Пишет код на Go, Python, C/C++, C#, Java, Delphi, JavaScript, Cobol и PowerBuilder. Создает приложения для операционных систем Windows, Linux, macOS, Lynx.
Рецензенты:
Дес Друри (Des Drury) — директор компании Cito Pro, соорганизатор Мельбурнской группы пользователей Kubernetes. Автор дистрибутива Kubernetes Open Data center, страстный технолог с более чем 25-летним опытом работы в ИТ-индустрии.
Якуб Павлик (Jakub Pavlik) — сооснователь, главный архитектор компании Tcp Cloud.
Создал облачную платформу IaaS, для развертывания и администрирования OpenStack-Salt и OpenContrail.
Билджин Ибрам и Роланд Хасс, Паттерны Kubernetes. Шаблоны разработки собственных облачных приложений — 2020
Книга для меня стала источником информации о методологии и полезных типовых решениях при развертывании приложений на платформе. Материалы скорее для подготовленного читателя, в целом книга рассчитана на DevOps-инженеров, которые уже знакомы с Kubernetes. При этом крайне полезна при формировании требований к системе. Понимая паттерны и принципы, описанные в книге, можно сходу предложить заказчику готовый вариант, который решает его проблему, что серьёзно упрощает системный анализ и сокращает время на подготовку его артефактов. В нашем случае речь шла о решениях по отказоустойчивости и ограничении ресурсов.
Об авторах:
Билджин Ибрам — экс-менеджер по продукту и архитектор Red Hat. 10 лет проектирует масштабируемые, отказоустойчивые распределенные системы.
Роланд Хасс — главный инженер-программист и архитектор Red Hat OpenShift Serverless. В разработке 25 лет, до этого работал системным администратором. Участник Knative и член комитета по техническому надзору Knative. Разработал мост JMX-HTTP Jolokia и автор плагинов Maven для Docker, Kubernetes и OpenShift.
Ivan Piskunov. Kubernetes security. Guide for beginners from zero to hero
Книга полностью посвящена вопросам безопасности в Kubernetes и детально рассматривает все аспекты безопасности платформы, начиная от самых тривиальных задач, заканчивая не банальными и масштабными задачами. Текст насыщен подробными объяснениями и практическими лайфхаками, которые серьёзно упрощают жизнь разработчику, а аналитику позволяют ссылаться на опыт автора, предлагая то или иное готовое решение. Книга полюбилась не только мне, но и всей команде, наш техлид, например, отметил, что в книге рассмотрены задания, которые дают на сертификационном экзамене.
Кроме того, автор рассмотрел несколько кейсов со взломом инфраструктур, использующих Kubernetes, в 2017, 2018 и 2019 годах, в таких компаниях как Tesla и Microsoft. По каждому кейсу дается обзор причин факапа со взломом и экспертные выводы автора. Более того автор подготовил github, где выложил все отчеты, референсы и материалы, использованные при написании книги, что, по мнению нашей команды, сопоставимо по ценности самого текста.
Репозиторий дает много дополнительной информации, не могу сказать, что я смог почерпнуть там много для себя, но в процессе работы наши инженеры и техлид не раз обращались к нему, отмечая полезность во время ретроспектив. Книга доступна бесплатно в электронном варианте и только на английском языке, что немного удивило, учитывая, что автор русский. Между тем, читается хорошо, для понимания мне вполне хватило моего Upper Intermediate.
Об авторе:
Иван Пискунов — магистр компьютерных наук, независимый эксперт и практикующий DevSecOps. Спикер таких мероприятий как: PHDays, ZeroNights, CISO Forum, РусКрипто, BlockChain Week, Код Безопасности. Участник профессиональных комьюнити RISSPA, RISC. Сертифицирован CCNA, CEH и MCSA.
В сухом остатке
Это не всё, что я прочитал о Kubernetes, но, как мне представляется, именно эти статьи, интервью и книги помогли мне глубже понять задачи миграции, разобраться с платформой и точно сформулировать требования к системе.
Эти материалы, по моему мнению, оказались максимально полезными при изучении платформы почти с нуля и имели наибольшую практическую ценность для меня, как для SA и PM проекта, а в некоторых случаях и для команды, упростив развертывание и показав неочевидные решения по отказоустойчивости и безопасности.
Хочу подчеркнуть, что я не DevOps Engineer и DevSecOps. Возможно, специалисты, давно знакомые с платформой, сочтут эти материалы не слишком интересными, но я смело рекомендую их тем, кто столкнулся с похожими задачами и не является экспертом.
Комментарии (8)
raavichouhan
25.04.2023 09:24+1This is really nice article, professionals having Splunk Certification can easily make their Kubernetes journey much more easy.
suslovas
Видимо после статей вы все таки не до конца разобрались сравнивая отвертку со слоном.
smirnov_dm Автор
Я цитировал заказчика).
suslovas
Понятно. =) Просто из статьи это непонятно и сразу настраивает на скептическое отношение к дальнейшему тексту, раз уже в начале идет смешение теплого с мягким. )
smirnov_dm Автор
Мой косяк. Не закавычил часть фразы.