В этом году Plesk решил отправить нескольких людей на KubeCon — главное событие по Kubernetes в мире. Профильных конференций в России на эту тему нет. Конечно, о K8s у нас говорят, и все его хотят, но столько практикующих его компаний в одном месте больше не собирается нигде. Я оказался одним из участников, так как работаю над платформой, основанной на Kubernetes.
Про организацию
Масштабы конференции поражают: 7000 участников, огромный выставочный центр. Переход из одного зала в другой занимал 5-7 минут. Одновременно шло по 30 докладов на разные темы. Было огромное количество компаний со своими стендами, на некоторых разыгрывали много неплохих и немного отличных призов, а также раздавали всякое в виде футболок, ручек и прочих милых вещей. Все общение было на английском языке, но никаких затруднений я не испытал. Если это единственный фактор, из-за которого вы не едете на зарубежные конференции, смело едьте. Английский в ИТ проще обычного английского благодаря обилию привычных слов, которые каждый день пишешь и читаешь в коде и документации. В восприятии докладов тоже проблем не было. Информации в голову было прошито очень много. К вечеру я напоминал сервер, на котором воспользовались переполнением буфера, и лили прямо в подсознание.
Про доклады
Я хочу коротко рассказать о докладах, которые понравились мне больше всего, и я рекомендовал бы их посмотреть.
Этот доклад произвел на меня должное впечатление потому, что надавил на сильную боль. У нас много разрозненных сервисов, их поддерживают и разрабатывают разные люди в команде. Мы следуем подходам инфраструктура как код, но есть некоторые нерешенные проблемы. Есть репозиторий с кодом на Ansible, но текущий стейт и инвентори хранятся у запускающего скрипт разработчика на машине, там же креды. Часть информации можно найти в confluence, но не всегда очевидно где. Нет места, где можно просто нажать кнопку, и станет хорошо. Предлагается сделать описание и положить в репозиторий не только код, но и инструменты деплоя. Описать, где брать стейт и креды, делать make Install и наслаждаться результатом. Я бы хотел больше порядка в сервисах, буду следить за релизами CNAB, использовать у себя, внедрять, убеждать. Хорошее лекало для оформления Readme в репе.
Очень много информации по граблям при написании операторов. Считаю доклад обязательным к просмотру тем, кто собрался написать свой оператор для Kubernetes. Там учтены все вещи вроде статусов, сбора мусора, конкурентности и всего всего. Очень содержательно. Сильно понравилась цитата из кода persistent volumes Kubernetes’a:
K8s исповедует сложность интеграции в угоду простоте реализации.
Этот доклад раскрывает в деталях один из основных архитектурных элементов кластера — control plane, а именно набор контроллеров. Описывается их роль и архитектура, базовые принципы создания собственного контроллера на примере уже существующих.
Из самых оригинальных моментов — рекомендация не маскировать нештатные ситуации за корректным поведением контроллера, а изменять поведение некоторым образом, чтобы дать сигнал системе о возникновении проблем.
Очень интересный опыт, очень много информации с рецептами о том, что нужно учесть, когда у тебя действительно высокая нагрузка. В Kubernetes они залезли хорошо, поддерживают 50 кластеров. Рассказали про все аспекты выжимания максимальной производительности. Рекомендую посмотреть доклад, перед принятием каких-то технических решений по кластерам.
Доклад, после которого я понял, что Loki нужно обязательно попробовать для логов в кластере и, скорее всего, с ним остаться. Суть: эластик тяжелый. Графана хотела разработать легкое масштабируемое решение, подходящее для дебага проблем. Решение получилось элегантным: Loki выбирает из Kubernetes мета информацию (лейблы, как Prometheus), и по ним раскладывает логи. Таким образом, можно выбрать куски лога по сервису, найти конкретный под, выбрать конкретное время, отфильтровать по коду ошибки. Эти фильтры работают без полнотекстового поиска. Так, постепенно сужая круг поиска, можно добраться до конкретной нужной ошибки. В конце поиск все-таки задействуется, но так как круг сужен, хватает скорости без индексирования. По нажатию на нее подгружается контекст — пара строк до и пара строк лога после. Таким образом, это выглядит как поиск файла с логами и греп по нему, но чуть удобнее и в том же интерфейсе, где метрики. Умеет считать количество вхождений поискового запроса. Сами поисковые запросы похожи на язык Прометея и выглядят просто. Докладчик обратил наше внимание на то, что решение не очень подходит для аналитики. Крайне советую посмотреть всем, кому нужны логи, очень легкая подача.
Очень наглядно показаны процессы канареечного и сине-зеленого деплоя. Советую посмотреть доклад тем, кто еще не проникся этим. Докладчики презентуют решение в виде расширения для перспективной CI-CD системы ARGO. Английскую речь докладчика из России легче слушать, чем речь остальных докладчиков.
Одним из самых сложных аспектов управления кластером остаётся настройка безопасности, в частности прав доступа к ресурсам. Встроенные примитивы K8s позволяют настроить авторизацию, как угодно. Как безболезненно поддерживать их в актуальном состоянии? Как разобраться с тем, что происходит с правами доступа, и отладить созданные роли? На этом докладе представлен не только обзор нескольких инструментов отладки авторизации в k8s, но и озвучены общие рекомендации по построению простых и эффективных политик.
Другие доклады
Я рекомендовать не буду. Какие-то были капитанскими, какие-то наоборот сильно сложными. Я советую залезть вот в этот плейлист и посмотреть все, что помечено как keynote.Это позволит широким взглядом охватить индустрию вокруг Cloud Native Apps, а дальше стоит нажимать ctrl+f и искать по интересующим ключевым словам, компаниям, продуктам и подходам.
Тут ссылка на плейлист с докладами, обратите на нее внимание
На стенде Haproxy мне подарили футболку для сына. Сомневаюсь, что я из-за этого заменю в продакшене Nginx на haproxy, но запомнил я их сильнее всего. Кто знает, что с Nginx сделают новые владельцы.
На стенде IBM все три дня шли короткие доклады, и они заманивали людей, разыгрывая Oculus Go, наушники Beats и квадрокоптер. Нужно было все полчаса находиться на стенде. Два раза за три дня испытывал судьбу — не выпало. Также короткие доклады были у VMWare и Microsoft.
На стенде Ubuntu сделал то, что, кажется, делали все — сфотографировался с Шаттлвортом. Общительный мужик, порадовался, узнав, что я пользую ее начиная с 8.04 и что сервер с ней проработал 10 лет без dist upgrade без единого разрыва (правда без доступа к Интернет).
Не смог пройти мимо усталого Дмитрия Столярова, поговорил с ним о нелегких буднях инженеров, поддерживающих Kubernetes. Чтение докладов он будет делегировать своим коллегам, но готовит какой-то новый формат подачи материала. Призывал подписываться на канал Фланта на youtube.
Очень много денег в стенды вложили IBM, Cisco, Microsoft, VMWare. Поскромнее стенды были у опенсорсных товарищей. Пообщался на стенде с представителями Grafana, переубедили меня — нужно пробовать Loki. Вообще, кажется, что полнотекстовый поиск в системе логирования нужен только для аналитики, а для трабблшутинга хватит систем уровня Loki. Пообщался с разработчиками Prometheus. Они не планируют делать долгое хранилище метрик и даунсемплинг данных. Советуют смотреть cortex и thanos как средство для решения. Очень много стендов, нужен был целый день, чтобы обойти всех. Десяток решений для мониторинга как сервис. Пяток секьюрити сервисов. Пяток перфоманс сервисов. Десяток UI для Kubernetes. Много тех, кто предоставляет k8s как сервис. Все хотят свой кусочек рынка.
Amazon и Google арендовали дворики с искусственной травой на крыше, поставили там шезлонги. Amazon раздавал кружки и разливал лимонад, а на стенде рассказывал о нововведениях в работе со spot инстансами. Google выдавал печеньки с лого Kubernetes и сделал классную фотозону, а на стенде рыбачил на крупную enterprise рыбу.
Про Барселону
Влюблен в Барселону. Я был там второй раз, первый раз в 2012 году на обзорной экскурсии. Это удивительно, но многие факты всплыли в памяти, я много сумел рассказать своим коллегам, был мини-гидом. Чистый морской воздух мгновенно избавил меня от аллергии. Вкусные морепродукты, паэлья, сангрия. Очень теплая, солнечная архитектура. Небольшая этажность, очень много зелени. Мы прошли пешком за эти три дня около 50 километров, по этому городу хочется гулять еще и еще. Все это после докладов, по вечерам.
Что главное понял
Я очень рад, что мне досталась возможность посетить эту конференцию. Она разложила по полочкам то, что до этого было не разложено. Вдохновила, сделала очевидными некоторые вещи.
Красной нитью прошла мысль: Kubernetes не конечная точка, а инструмент. Платформа для создания платформ.
А главная задача всей движухи: собирать и запускать масштабируемые приложения
Основные направления, над которыми работает сообщество, выкристаллизовались. Примерно, как в свое время появились 12 факторов для приложений, появился перечень того, что и как делать для инфраструктуры в целом. Если хотите, можно назвать это трендами:
Dynamic environments
Public, hybrid and private clouds
Containers
Service mesh
Microservices
Immutable infrastructure
Declarative API
Эти техники позволяют строить системы с такими характеристикам:
Имеющие возможность выкатывать серьезные изменения часто и предсказуемо безопасно.
CNCF отбирает лучшие проекты (небольшой список) и топит за такие вещи:
Здравая автоматизация
Открытый код
Свобода в выборе поставщика услуг
Kubernetes сложен. Он прост идеологически и по частям, но сложен в целом. Никто не показал решения all-in-one. На рынке k8s как сервиса, да и на всем остальном рынке дикий запад: поддержку продают и за 50$, и за 1000$ в месяц. Каждый углубляется в какую-то часть и копает в нее. Кто-то в мониторинг и дашборды, кто-то в производительность, кто-то в безопасность.