20 сентября 2023 года проект KCL был одобрен TOC Cloud Native Computing Foundation (CNCF) и официально стал проектом CNCF Sandbox.

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

Присоединившись к CNCF в качестве проекта-песочницы, сообщество KCL стремится привлечь больше разработчиков и пользователей к участию и дальнейшему продвижению зрелого применения проекта в облачных сценариях. Кроме того, присоединение к CNCF предоставит KCL расширенную платформу для сотрудничества и инноваций. Он дает возможность взаимодействовать с разнообразным сообществом разработчиков, организаций и отраслевых экспертов, находящихся на переднем крае облачных технологий. Мы надеемся на сотрудничество с другими проектами CNCF, предоставление нашего технического опыта и изучение возможностей интеграции с другими проектами CNCF.

Что такое CNCF?

CNCF, сокращение от Cloud Native Computing Foundation, является суб-фондом Linux Foundation. CNCF занимается созданием устойчивой экосистемы для облачного программного обеспечения, охватывающей такие области, как хранилище, вычисления, оркестровка, планирование, CI/CD, DevOps, управление сервисами и шлюзы сервисов.

Kubernetes — один из наиболее представительных проектов CNCF.

Что такое проект Песочница CNCF?

Сообщество CNCF классифицирует проекты на песочницу, инкубацию и выпускной. Среди известных выпускных проектов — Kubernetes, Prometheus, Istio, ETCD, Containerd, ArgoCD и Helm. Полный список дипломированных и инкубационных проектов можно найти на странице https://www.cncf.io/projects/.

Песочница — это категория, созданная CNCF, чтобы предоставить выгодную и нейтральную среду для проектов с открытым исходным кодом, способствующую сотрудничеству и развитию. Проекты, отобранные для песочницы, признаны Комитетом технического надзора (TOC) CNCF и имеют потенциал для экспериментов и разработок. Список проектов Sandbox вы можете найти по адресу https://www.cncf.io/sandbox-projects/. Чтобы войти в Песочницу, как минимум 66% членов TOC (все 11 человек, перечисленных в https://github.com/cncf/toc#members) должны проголосовать за, то есть не менее 8 человек.

Что такое КСЛ?

KCL — это язык записей и функций с открытым исходным кодом, основанный на ограничениях. Он направлен на улучшение написания сложных конфигураций, таких как облачные конфигурации Kubernetes, с использованием зрелых методов и практик языка программирования. KCL фокусируется на модульности, расширяемости и стабильности конфигурации, стремясь создать более простой процесс написания логики и создать более простой путь для автоматизации и интеграции экосистемы.

Ключевые этапы проекта включают в себя:

  • Май 2022 г.: KCL был инициирован и официально открыт с открытым исходным кодом Ant Group.
  • Июнь 2023 г.: KCL стал официальным ландшафтным проектом CNCF.
  • Сентябрь 2023 г.: KCL был рассмотрен TAG по доставке приложений CNCF и одобрен голосованием TOC, официально став проектом песочницы CNCF (https://github.com/cncf/sandbox/issues/48).

Зачем нам нужен KCL?

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

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

  • Раздутие конфигурации. Большинство статических конфигураций, таких как Kubernetes YAML в собственном облачном домене, необходимо настраивать отдельно для каждой среды; В худшем случае это может привести к трудно отлаживаемым ошибкам, связанным с перекрестными связями окружающей среды, с плохой стабильностью и масштабируемостью.
  • Дрейф конфигурации. Часто не существует стандартного способа управления статической конфигурацией приложений и инфраструктуры в различных средах. Использование нестандартных методов, таких как объединение скриптов и связующего кода, может привести к экспоненциальному росту сложности и дрейфу конфигурации.
  • Когнитивная нагрузка: Kubernetes и другие, как технологические инструменты для создания платформ, превосходны в деталях базовой унифицированной инфраструктуры, но им не хватает абстракции более высокого уровня для доставки прикладного программного обеспечения, что приводит к высокой когнитивной нагрузке. обычных разработчиков и влияет на опыт доставки программного обеспечения разработчиков приложений более высокого уровня.

В ответ на вышеуказанные проблемы KCL планирует предоставить следующие возможности:

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

В частности, KCL может

  • Улучшите возможности проверки семантики конфигурации на уровне кода, например определение схемы, необязательные/обязательные поля, тип, диапазон и другие возможности проверки и проверки конфигурации.
  • Обеспечьте возможность писать, комбинировать и абстрагировать блоки конфигурации **, такие как структурное определение, структурное наследование, определение ограничений и слияние политик конфигурации.
  • Повышайте гибкость конфигурации с помощью современных языков программирования и написания кода, например условных операторов, циклов, функций, управления пакетами и других функций, расширяющих возможности повторного использования конфигурации.
  • Обеспечьте комплексную поддержку цепочки инструментов, богатые плагины IDE, языки и поддержку экологической цепочки инструментов, чтобы снизить порог начала работы и улучшить взаимодействие с пользователем.
  • Используя инструменты управления пакетами и реестр OCI, конфигурации можно совместно использовать, распространять и доставлять более простым способом между различными командами/ролями.
  • Предоставление высокопроизводительных компиляторов для удовлетворения требований крупномасштабных сценариев конфигурации, таких как удовлетворение требований к производительности рендеринга при создании конфигураций различных сред и топологий на основе контекста развертывания из базовой конфигурации, а также требований к производительности автоматического изменения конфигурации. .
  • Расширяя возможности автоматизации и интеграции с помощью таких средств, как многоязычный SDK и языковой плагин KCL, он может значительно снизить стоимость обучения KCL, одновременно повышая ценность настройки и написания политик.

Помимо самого языка, KCL также предоставляет множество дополнительных инструментов, таких как форматирование, тестирование, документация и т. д., которые помогут вам использовать, понимать и проверять написанную конфигурацию или стратегию; Сократите затраты на написание и совместное использование конфигурации с помощью плагинов IDE, таких как VS Code, инструментов управления пакетами и Playground; Автоматически управляйте конфигурациями и выполняйте их с помощью многоязычных SDK Rust, Go и Python.

Что может сделать KCL?

Управление динамической конфигурацией

В качестве языка конфигурации наиболее важной функцией, которую KCL предоставляет разработчикам приложений и платформ/SRE, является динамическое управление конфигурацией. С помощью абстракции кода мы можем построить ориентированную на приложения модель, которая защищает сложные концепции инфраструктуры и платформы, предоставляя разработчикам централизованный и простой для понимания интерфейс. Кроме того, KCL позволяет персоналу платформы быстро расширять и определять свои собственные модели, которые можно совместно использовать и повторно использовать через реестр OCI.

Кроме того, KCL также поддерживает прямую интеграцию со спецификацией модели ресурсов Kubernetes (KRM). KRM KCL — это общая спецификация модели конфигурации, используемая для описания и управления различными собственными облачными ресурсами, такими как конфигурации и абстракции контейнеров, модулей, а также сервисов. Спецификация KRM KCL предоставляет унифицированный способ определения и управления этими ресурсами, позволяя их переносить и повторно использовать в различных средах. Он работает в полностью открытом мире Kubernetes с минимальной привязкой к любым инструментам оркестровки/движка или контроллерам Kubernetes. Это позволяет персоналу платформы расширять свои абстракции, логику редактирования и проверки конфигурации, обеспечивая при этом удобный для разработчиков интерфейс управления конфигурацией, основанный на разделении задач.

GitOps

Независимо от того, используете ли вы автономные формы конфигурации KCL или KRM KCL, мы поддерживаем интеграцию между KCL и различными инструментами CI/CD и GitOps. KCL позволяет разработчикам декларативно определять ресурсы, необходимые приложениям. Объединив KCL с инструментами GitOps, мы можем лучше реализовать инфраструктуру как код (IaC), повысить эффективность развертывания и упростить управление конфигурацией приложений.

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

Интеграции

Помимо интеграции с инструментами автоматизации GitOps, такими как ArgoCD, KCL в качестве проекта CNCF также интегрировался со многими другими проектами экосистемы CNCF. Например, он предоставляет плагины KCL для существующих инструментов управления конфигурацией экосистемы CNCF, таких как Helm, Kustomize и kpt. Он также предоставляет оператор KCL Kubernetes во время выполнения для удовлетворения различных потребностей в управлении конфигурацией. Кроме того, мы предлагаем следующую поддержку интеграции:

  • Многоязычная поддержка: мы предоставляем многоязычные SDK, которые помогают пользователям использовать KCL на разных языках и интегрировать его в свои собственные приложения.
  • Поддержка управления пакетами: мы предоставляем инструмент управления пакетами KPM для распространения и повторного использования конфигураций KCL через Docker Hub, реестр контейнеров GitHub и т. д.
  • Поддержка миграции схем: мы поддерживаем миграцию схем из других экосистем в схемы KCL одним щелчком мыши, такие как определения структур Go/Rust, JsonSchema, Protobuf, OpenAPI, Terraform Provider Schema и т. д.

Практики

Во-первых, как небольшой язык в области облачных вычислений, KCL можно напрямую использовать для решения простых задач в сценариях. Например, использование модели KCL для непосредственного внедрения переменных среды для ресурсов Kubernetes, а также использование модели KCL и плагинов Helm KCL для неинвазивной обработки жестко запрограммированной конфигурации Helm Charts вместо прямого изменения Helm Chart путем ее разветвления.

Во-вторых, KCL также можно использовать в сочетании с различными механизмами CI/CD и доставки конфигурации приложений, такими как KusionStack, внутри предприятий для достижения разделения задач, интерфейсов программируемых моделей, ориентированных на приложения, и процессов GitOps. Это упрощает развертывание и эксплуатацию масштабируемых приложений в современных гибридных мультиоблачных средах, повышая эффективность выпуска и эксплуатации, а также опыт разработчиков.

Конечно, KCL может решить больше проблем и сценариев, чем указано выше. Мы продолжим делиться лучшими практиками от усыновителей в сообществе и приглашаем всех присоединиться к нашему сообществу для дальнейших обсуждений и обменов ❤️. https://github.com/kcl-lang/community

Сообщество

Всего за один год существования KCL с открытым исходным кодом мы выпустили множество версий и создали сообщество KCL в сотрудничестве с участниками и сопровождающими со всего мира. Мы также получили признание от некоторых пользователей, таких как Youzan и Huawei. Присоединяясь к CNCF, наша цель — повысить известность проекта и стимулировать его принятие и участие сообществом, поскольку сильные и известные фонды имеют решающее значение для продвижения развития языковых экосистем.

Кроме того, мы получили признание со стороны участников сообщества открытого исходного кода со всего мира, включая Китай, Северную Америку, Европу и Австралию. Мы благодарим всех пользователей и разработчиков сообщества, которые сопровождали KCL в этом путешествии, и приглашаем новых товарищей присоединиться к нашему сообществу и строить вместе ❤️.

Заключение

Для KCL присоединение к CNCF означает не конец, а новое начало. Мы будем работать вместе с нашими товарищами по сообществу, чтобы улучшить язык KCL, набор инструментов и среду IDE! И наконец, мы приглашаем всех присоединиться к нашему сообществу для обсуждения и внесения предложений 👏👏👏

Ресурсы