Kubernetes представил KYAML — строгое подмножие YAML, упрощающее создание манифестов. Новый формат поможет избежать распространённых ошибок, связанных с неявным приведением типов и чувствительностью к пробелам, что критично для разработчиков.
Проблемы стандартного YAML
Проблемы с YAML известны многим разработчикам, которые сталкиваются с недочётами в шаблонах и конфигурациях. Например, неправильный отступ может сделать файл валидным, но нарушить его логику. Также необязательное заключение строк в кавычки может привести к неожиданным ошибкам, как в случае с классической «Norway Bug», где значение «NO» интерпретируется как булевый false, а не строка.
К тому же, JSON, хоть и более строгий, не даёт возможности добавления комментариев и требует кавычек для каждого ключа, что также усложняет создание конфигураций. KYAML был разработан, чтобы устранить эти недостатки, сделав структуру и типы данных более явными.
Что такое KYAML и как его использовать
KYAML не требует изменений в экосистеме Kubernetes — он лишь ограничивает выбор, который делают разработчики, что приводит к единообразию и снижению ошибок. В нём:
- Структура не зависит от пробелов и отступов.
- Всё значение строк заключены в кавычки, устраняя неявное приведение типов.
- Мапы и структуры оформлены в фигурных скобках, а списки — в квадратных.
- Поддержка комментариев и завершающих запятых, чего нет в JSON.
- Имеется заголовок «---», позволяющий легко отличить KYAML от JSON.
Вынашивая KYAML, команда Kubernetes добавила поддержку нового формата в kubectl начиная с версии 1.34. Для получения манифеста в формате KYAML можно использовать команду:
kubectl get deployment my-app -o kyaml
Практическое значение для разработчиков
Для разработчиков это нововведение открывает новые горизонты. Теперь можно избежать многих распространённых сценариев, ведущих к ошибкам, которые могут упустить из виду. KYAML создаёт более организованный и понятный код, снижая время на поиск и исправление ошибок.
Если вы разрабатываете инфраструктуру на Kubernetes, обращайте внимание на KYAML. Это может существенно повысить стабильность ваших манифестов и облегчить их поддержку.
Следующий шаг — ожидание дальнейших улучшений и обновлений в поддержке KYAML в новых версиях Kubernetes.