Должен быть лучший способ!
Как и во многих стартапах, именно эта идея легла в основу ConfigHub, направленного на то, чтобы как разработчики, так и специалисты по эксплуатации выбрались из «ада конфигурации».
«Ад конфигурации — это когда вы пытаетесь починить систему, все сломано, все кричат, и вы даже не можете понять, какой из 1000 файлов YAML содержит настоящую ошибку», — сказал в интервью генеральный директор Алексис Ричардсон.
Это одна из проблем, с которыми он и его сооснователи сталкивались на протяжении многих лет. Ричардсон был основателем облачной платформы управления контейнерами Weaveworks и брокера сообщений RabbitMQ. Бывший инженер-программист Google Брайан Грант, технический директор ConfigHub, был первоначальным ведущим архитектором Kubernetes; и Йеспер Йоргенсен, директор по продуктам новой компании, занимал различные должности в Salesforce, в том числе в Heroku, прежде чем присоединиться к Twilio, чтобы возглавить команды по голосовой связи, видео и платформам.
«Мы знали, что должно быть что-то получше, чем это… Вместо этого мы имеем людей, пробирающихся через страницы и страницы, страницы и страницы YAML, Terraform, HCL. [HashiCorp Configuration Language] … как бы это ни называлось. Знаете, все время новые языки якобы для решения этой проблемы, а большинству людей она непонятна. А когда у вас отключение, у вас нет времени этому учиться. Вам просто нужно это исправить», — сказал Ричардсон.
Их решение: относиться к конфигурации как к данным
Неправильная конфигурация постоянно попадает в список 10 наиболее распространенных уязвимостей безопасности OWASP. Его обвиняют в массовых сбоях в работе, включая недавние в Cloudflare, Amazon Web Services и Azure, а также в сбое Crowdstrike в июле 2024 года, который, по оценкам, обошелся авиакомпаниям, банкам и другим компаниям в 5,4 миллиарда долларов. Это проблемы, на решение которых направлены такие подходы, как «Инфраструктура как код» (IaC), «Инфраструктура из кода» (IfC) и другие.
«Идея Брайана заключалась в том, чтобы просто взять все данные конфигурации и разделить их… взять манифест, преобразовать все это в значения, без переменных, без циклов программирования, без загадочных шаблонов, ничего, что должно быть сгенерировано как часть процесса настройки, и все это затем становится оперативными фактами вашего бизнеса», — сказал Ричардсон.
Грант объяснил в недавнем выступлении на KubeCon в Северной Америке, что во время сбоя оперативные сотрудники не хотят пробираться через лабиринт файлов YAML, папок git и объединенных инструментов разработки, им нужна единая стеклянная панель, которую они могут разбить, чтобы найти и исправить ошибку. Тем не менее, GitOps требует сквозной записи в git, прежде чем исправление будет выполнено.
Чтобы упростить задачу, команда ConfigHub создала базу данных, в которой конфигурация хранится и управляется в виде структурированных данных. Он сериализуется с использованием стандартных форматов данных, таких как YAML, и сохраняется с историей изменений и некоторыми метаданными. Поскольку данные поддерживаются в актуальном состоянии, они всегда готовы к использованию.
Код, который работает с этой конфигурацией, отделен от данных конфигурации, подключенных через API.
«Данные конфигурации не параметризуются. Конфигурация каждого варианта хранится независимо в собственном, полностью визуализированном WET. [Write Every Time] форма. Здесь нет шаблонов, переменных, условий, циклов или генераторов, которые создают конфигурацию «на лету». Вам также не нужно писать и поддерживать патчи вручную, как это происходит с Kustomize. Каждое значение, специфичное для среды, хранится буквально в конфигурации…. Внесите простое изменение в конфигурацию, и действующие ресурсы можно будет обновлять быстрее и с меньшим количеством простых шагов, чем развертывание через конвейеры git и CI/CD», — объяснил Грант в своем блоге.
В интервью Йоргенсен объяснил: «Если вы посмотрите на Kubernetes, на котором мы сейчас сосредоточены, и на типичную передовую практику сегодня, вы увидите, что команды… в основном используют Helm в качестве первого шага генерации, а затем то, что он генерирует, передается в CI/CD… Но на этапе CI/CD происходит много кодирования, большая обработка, генерация, и на этом уровне нет прозрачности», — сказал он.
«Люди DevOps не могут видеть, что будет развернуто до того, как оно будет развернуто, потому что все это генерируется, и это создает кучу проблем. И вместо этого мы говорим: «Начните с того, что вы хотите делать с программным обеспечением»… но в конечном итоге вы получаете базу данных того, что мы называем буквальной конфигурацией, что означает, что конфигурация полностью визуализирована, полностью сгенерирована, в той форме, в которой она должна быть в правильной форме, прежде чем она попадет в инфраструктуру. И это ваш источник истины. Это ваша система записи.
«И это то, на что вы смотрите, и как люди, и как автоматизация, и как искусственный интеллект, и все, что вы хотите на это указать, и это дает вам совершенно другой уровень уверенности в том, что произойдет дальше. И это многое меняет».
Благодаря сопоставлению «один к одному» каждый работающий объект и, следовательно, каждую ошибку можно найти и обновить, даже массово, с помощью стандартных операций с базой данных, таких как семантический анализ на основе схем данных. Он обеспечивает обратный или «двунаправленный» GitOps, позволяя пользователям видеть изменения, которые необходимо внести до развертывания, а также результаты после него.
Поскольку каждая конфигурация изолирована, изменения затрагивают только эту одну среду без каких-либо шансов помешать чему-либо еще.
Как работает ConfigHub: основные компоненты
При развертывании Kubernetes входные имена хостов, переменные среды, теги изображений, зависимости сервисов, запросы ресурсов и многое другое хранятся непосредственно в YAML, а не генерируются с помощью переменных шаблона и входных значений, объяснил консультант и гуру разработки платформ Артем Лайко, глубоко погружаясь в проблемы IaC и подход ConfigHub к ним.
«Внесите простое изменение в конфигурацию, и действующие ресурсы можно будет обновлять без запуска сложного процесса CI/CD», — отметил он, добавив, что «принудительное применение политики может напрямую проверять конфигурацию и немедленно сообщать о результатах, в отличие от шаблонной конфигурации, которая сначала требует рендеринга».
Основными компонентами ConfigHub являются:
- А Единица поддерживает последовательный список и историю изменений данных конфигурации.
- А Цель здесь должна быть применена конфигурация. Он абстрагирует детали доступа и учетные данные для кластеров Kubernetes, облачных учетных записей и других сервисов, что означает, что пользователи могут управлять ресурсами без непосредственной обработки учетных данных.
- А Рабочий — это отдельный процесс, соединяющий ConfigHub и внешние объекты. Подобно оператору Kubernetes GitOps или средству CI, он работает внутри вашего кластера. Два основных типа его работы — это функции и мосты.
- Функции — это исполняемые фрагменты кода, которые работают с данными конфигурации в модулях конфигурации. Их можно только читать, изменять или проверять, а также расширять возможности автоматизации ConfigHub.
- Мосты подключите ConfigHub к целевому ресурсу, чтобы получить правильные вызовы API и ретранслировать события операций и статус обратно в ConfigHub.
Лайко сообщает, что вместо того, чтобы быть просто базой данных, ConfigHub позволяет командам сохранять существующие рабочие процессы — и создавать автоматизированные — и предоставляет единый источник достоверной информации и общего представления о среде, в которой они работают.
Реальное влияние неправильной конфигурации
На KubeCon Эрик Буржуа, директор и ведущий инженер платформы Kubernetes в RBC Capital Markets, объяснил, как одно дополнительное место в огромном клубке конфигурационных файлов привело к сбою его систем. У компании был YAML внутри YAML внутри YAML. Обычное исправление ConfigMap примерно для 30 экземпляров Grafana превратилось в трехдневное расследование из-за непреднамеренных взаимодействий в шаблонной конфигурации.
Рассматривая конфигурацию как данные, вы можете воспользоваться возможностью видеть ее не как текст, а как контент, доступный для запроса. По словам Буржуа в LinkedIn, после завершения всех проверок и мутаций у вас есть итоговая «единица», которая может использовать работника для достижения вашей цели.
Ричардсон сказал в презентации для Буржуа: «Это был хороший пример того, что я называю «разрастанием конфигурации», когда у вас есть множество разных файлов во множестве разных репозиториев, принадлежащих разным людям, разные шаблоны, которые создают разные форматы в разное время при подключении к множеству разных систем. … Контролировать и управлять этим становится все сложнее и сложнее. И если вы посмотрите на статистику, вы увидите таких людей, как ребята из DORA, которые сейчас работают в Google, и это докажет, что скорость DevOps просто не стал быстрее.
«Это было не то, на что мы надеялись, когда почти 10 лет назад мы и другие придумали эти новые автоматизированные технологии вокруг Kubernetes. Мы думали, что сделаем все проще, более автоматизированным, более безопасным и более совместимым. И вместо этого люди, похоже, все больше и больше застревают. И это отчасти потому, что системы выросли. Мы — жертвы нашего собственного успеха…».
Новый взгляд на управление конфигурациями
Он призвал аудиторию опробовать технологию «Программное обеспечение как услуга» (SaaS) на ранней стадии, которая находится на стадии предварительного просмотра.
«Он централизует всю конфигурацию, которая вам понадобится для соответствующих частей управления инфраструктурой и приложениями, и обеспечивает структуру, позволяющую видеть и понимать зависимости между компонентами приложения в отношении истории, управления версиями и, возможно, политики. Таким образом, вы можете применять такие вещи, как триггеры, соответствие требованиям и функции вокруг этого. Это позволит вам делать действительно важные вещи, которые сейчас немного сложны, например, видеть, что происходит перед развертыванием, а затем иметь возможность проверить потом, правильно ли это», — сказал он.
Он подчеркивает, что компания еще находится на начальном этапе развития. Трио начало работать над этой компанией в 2024 году, а стартап из Менло-Парка, Калифорния, вышел из тени в марте, объявив о финансировании в размере 4 миллионов долларов.
«Мы работаем в этой отрасли уже долгое время. Мы знаем, сколько времени нужно, чтобы что-то создать, и мы не хотим выглядеть так, будто у нас есть ответы на все вопросы», — сказал Ричардсон в интервью.
Но соучредители считают, что настало время попытаться ускорить перемены.
«Мы думаем, что есть достаточно сдерживаемой энергии, люди сидят в стороне, вроде как приняли статус-кво, но имеют идеи и перспективы, и если мы сможем посеять маленькое семя нового способа ведения дел, мы можем увидеть, как кто-то прыгнет, не так ли?… Если мы сможем заставить крошечный маховик нового образа мышления, мы хотели бы, чтобы больше людей прыгало на нем».
ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Сьюзен Холл — редактор-спонсор The New Stack. Ее работа — помочь спонсорам привлечь как можно более широкую читательскую аудиторию для их контента. Она писала для The New Stack с первых дней его существования, а также для сайтов… Подробнее от Сьюзан Холл.