Язык сериализации данных, используемый для развертывания и запуска Kubernetes, получил капитальный ремонт.
Предстоящий 1.34 выпуск Kubernetes может поступать с Kyaml, строгим подмножеством форматированного YAML, особенно для пользователей Kubernetes.
«Yaml — это язык программирования Kubernetes», — отметил Найджел Дуглас, глава отдела по связям с разработчиками в Cloudsmith, облачной службе управления нативными пакетами, в интервью TNS.
Тем не менее, многие пользователи чувствуют себя разочарованными из-за ряда дизайнерских причудликов в YAML, которые вызывают дополнительную работу и дополнительную отладку (даже несмотря на то, что сам создатель работает над тем, чтобы сделать YAML полноценным языком программирования).
Решение проблем Ямла? Добавьте в щепотку JSON.
Пейджинг доктор Нулл
YAML используется по всей экосистеме Kubernetes: для создания сетевой политики, для написания манифеста развертывания или для файлов развертывания руля.
Одна проблема: Yaml плохо переваривает белые пространства. В частности, когда пользователи поставляются с вложенными инструкциями, они должны уделять пристальное внимание количеству используемых углублений. Форматирование — это утомительное упражнение для облачного воина, но, например, наличие неправильного количества идентификаторов в коде может сбросить руль.
Аналогичным образом, дополнительные цитаты в YAML привели к неоднозначности, которая всегда опасна для компьютера. Задача с цитатами удачно проиллюстрирована с помощью «Проблема Норвегии», в которой неспособность инкапсулировать двухбуквенную страну Сокралением с набором цитат может сбить анализатор в поисках зарезервированных ключевых слов, таких как «нет» для Норвегии.
Или, в другом случае, last_name = null для тех, кто действительно по имени Ричард Нулл.
Как многие отмечали, JSON также можно использовать вместо YAML, хотя он поставляется с собственными ограничениями в среде Kubernetes: без поддержки комментариев и строгой приверженности следствию запятых и цитируемых ключей.
Еще один язык разметки
«Самая разочаровывающая часть YAML — это то, что это не должно быть так плохо. Yaml — очень широкая спецификация. Внутри эта спецификация является разумной грамматикой, которая будет выпущена», — заявляет предложение Kubernetes KEP 5295.
Kyaml — это эта спецификация, по крайней мере, для пользователей Kubernetes. Кьямл «построен так, как это, как и вполне совместим с существующим дизайном вокруг объектов Kubernetes», сказал Дуглас.
Kyaml — это строгая подмножество YAML. Все файлы KAYML также являются действительными YAML, и их можно использовать для написания манифестов и диаграмм шлеров, без каких -либо дополнительных флагов для K8s.
В случае включения в Kubernetes 1.34 (все еще пребываемое), Kyaml будет работать с командной строкой Kubectl Kubernetes, которая будет выходить в Kyaml с специальным флагом (то есть kubectl get -o kyaml).
Вот дополнительные правила для Kyaml.
- Двойные цитаты-это строки стоимости.
- Ключи не подвергаются катированию, если не потенциально двусмысленные.
- Сопоставления (ассоциативные массивы) Используйте скоб {}.
- Списки используют скобки []Полем
Эти правила имитируют JSON, хотя, в отличие от JSON, Kyaml поддерживает комментарии и следующий запятой и не нуждается в цитируемых ключах.
Кроме того, Kyaml не чувствителен к белому пространству.
Вот образец, предоставленная предложением:
Но я все еще ненавижу это
Как и в любом модифицированном формате данных, изменения будут горячо оспариваны. Разработчики ожидают этого.
«Синтаксис всегда был магнитом для аргументов в нашей отрасли. Мы ожидаем, что это не будет исключением. Разумные люди не согласятся с нашим выбором, что в порядке, но мы должны придерживаться твердого мнения по этому поводу», — предупредили разработчики в файле Readme, первоначально автором которого является Тим Хокин.
И реакции уже входят.
«Это лучше, чем JSON, и я понимаю, почему это лучше, чем Yaml, но я все еще ненавижу это», — написал один пользователь на Reddit.
Быстрый поиск показал, что, по крайней мере, одна специфическая для программирования реализация Kyaml была создана для языка программирования GO.
Были приняты другие подходы, в том числе урезанный строгий, хотя у Кьямла есть быстрый трек в новой версии Kubernetes. Давайте посмотрим, где еще это можно использовать.
Ожидается, что Kubernetes 1.34 будет выпущен в конце августа.
Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Joab Jackson является старшим редактором нового стека, охватывающего облачные нативные вычисления и системы системы. Он сообщил об инфраструктуре и развитии IT более 25 лет, в том числе в IDG и государственных компьютерных новостях. До этого он … читал больше от Джоаба Джексона