Всё началось с того, что команде, с которой я работаю, предложили заказ на миграцию приложений из Docker Compose “во что-нибудь более масштабируемое, отказоустойчивое и гибкое. Например, Ansible или Kubernetes.” Приложение, которое планировалось разворачивать, использовалось для управления, хранения, поиска данных постов из биржи телеграм-рекламы (статистика, текст, видео, изображения), структурирования по группам  и визуализации статданных с использованием Datadog, который в последствии заменили на netdata. 

Команда приняла решение использовать Kubernetes, во многом благодаря посту @ronrz, который подробно описывал преимущества решения в похожем кейсе. Также на выбор решения повлиял опыт коллег из ЕАЕ-Консалт, которые успешно использовали Kubernetes в своей практике. И всё это прекрасно, но у меня возникли проблемы. Как системному аналитику и по совместительству PM проекта, с минимальным опытом в DevOps, пришлось изрядно попотеть с пониманием многих вещей, касающихся Kubernetes. Под катом подробно о статьях и книгах, которые помогли мне разобраться с оркестратором, понять, чего хочет заказчик, сформировать требования к работе системы в целом, отказоустойчивости, масштабированию и безопасности. 

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

Предыстория

(спойлер, можно не читать и сразу перейти к обзору книг)

Если с тем, как описывать требования к контейнеризации в Docker у меня был успешный опыт, то о работе с оркестраторами я имел крайне туманное представление и в своей практике впервые столкнулся с подобной задачей. 

До первого интервью с заказчиком оставалось немногим более месяца, а наш техлид не имел достаточно времени для разжевывания вещей, которые представлялись ему очень простыми. Понимая, что кивать и формулировать требования как бог на душу пошлёт, копируя в ТЗ дословные формулировки заказчика, не выйдет, решил больше почитать о Kubernetes. Смутно и абстрактно сформулированные заказчиком цели миграции дали понять, что упор нужно сделать на, как минимум, обзорном изучении 4-х направлений:

  1. Базовые представления о запуске приложений, миграции и развертывании в kubernetes, настройке прав, ролей, ограничении ресурсов.

  2. Разработка отказоустойчивой архитектуры в kubernetes.

  3. Автомасштабирование, скейлинг контейнеров и инстансов.

  4. kubernetes security — безопасность рабочих нод, подов, сетевых служб и системных компонентов.

Статьи

Сначала мне казалось, что усвоить необходимый объём информации можно за пару дней, почитав статьи на Хабре. Наиболее полезными постами оказались:  

  1. K8S для начинающих — обзорный цикл постов о kubernetes для нубов.

  2. Как изучать Kubernetes джуну — и зачем — о личном опыте начинающего разработчика, многое оказалось полезным.

  3. Контейнеризация понятным языком: хранение данных и безопасность в 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)


  1. suslovas
    25.04.2023 09:24

    Например, Ansible или Kubernetes.

    Видимо после статей вы все таки не до конца разобрались сравнивая отвертку со слоном.


    1. smirnov_dm Автор
      25.04.2023 09:24
      +1

      Я цитировал заказчика).


      1. suslovas
        25.04.2023 09:24

        Понятно. =) Просто из статьи это непонятно и сразу настраивает на скептическое отношение к дальнейшему тексту, раз уже в начале идет смешение теплого с мягким. )


        1. smirnov_dm Автор
          25.04.2023 09:24

          Мой косяк. Не закавычил часть фразы.


  1. PensijaPro
    25.04.2023 09:24
    +2

    Отличная картинка - это реальное фото или ИИ сгенерировал?


    1. smirnov_dm Автор
      25.04.2023 09:24
      +2

      Это бесплатное фото из стока.


  1. raavichouhan
    25.04.2023 09:24
    +1

    This is really nice article, professionals having Splunk Certification can easily make their Kubernetes journey much more easy.


    1. smirnov_dm Автор
      25.04.2023 09:24

      Thanks!