YAML Diff
Сравнить два YAML-файла по значениям, полезно для k8s-манифестов.
Как это работает
Два Kubernetes манифеста, старый и новый, отличаются одним значением replicas глубоко во вложенной структуре, а обычный построчный diff тонет в шуме от разного порядка ключей и отступов. Yaml diff online сравнивает файлы по реальным значениям после парсинга, а не по виду текста, и сразу показывает именно смысловые изменения.
Инструмент разворачивает оба YAML документа, включая якоря и алиасы, в полные структуры данных, а затем рекурсивно сравнивает их, показывая добавленные поля, удаленные поля и поля, у которых изменилось значение, независимо от стиля отступов и порядка ключей в исходных файлах.
Полезно применять при сравнении конфигов Kubernetes между окружениями staging и production, при код ревью изменений docker-compose.yml в Pull Request, или просто чтобы быстро понять, что реально поменялось между двумя версиями большого YAML файла без построчного сравнения глазами.
Частые вопросы
Учитывается ли разница в отступах между двумя файлами?
Нет, сравнение происходит после парсинга обоих файлов в структуры данных, разница только в отступах или стиле форматирования исходного текста не покажется как различие, потому что смысловые данные при этом идентичны.
Что происходит с якорями и алиасами при сравнении?
Оба документа разворачиваются перед сравнением, поэтому сравниваются уже полные значения, а не сокращенные ссылки, это значит, что YAML с якорями и такой же YAML, но без них и с полностью выписанными значениями, покажут отсутствие различий.
Можно ли сравнить многодокументный YAML файл с несколькими манифестами через тройной дефис?
Этот инструмент рассчитан на один документ за раз, для многодокументных файлов стоит сначала разделить их через инструмент yaml split documents, а затем сравнивать соответствующие пары документов по отдельности.
Покажет ли diff разницу в порядке элементов списка, если сами элементы одинаковые?
Да, в отличие от ключей объекта, порядок элементов внутри списка YAML имеет значение, и если два списка содержат одни и те же элементы, но в разном порядке, diff покажет это как различие.