В Kubernetes 1.21 отключили вывод managed fields для kubectl get

Сегодня наши инженеры заметили, казалось бы, незначительное изменение в Kubernetes 1.21…, но оно порадовало столь многих внутри компании, что сразу было решено написать про него для более широкой аудитории.

В выводе команды kubectl get, которая используется для поиска и просмотра ресурсов Kubernetes, теперь по умолчанию не будут показываться поля managedFields. Чтобы включить вывод этих полей, пользователю требуется добавить к команде флаг --show-managed-fields.

Это долгожданное изменение активно обсуждалось. Главная проблема с managed fields в том, что они очень объемны и не очень полезны. Например, в выводе команды kubectl get deployment -oyaml поля managedFields могут занимать сотни строк, хотя эта информация нужна скорее для специфических задач.

Поэтому не стало большим удивлением увидеть на GitHub радостные комментарии к этому pull request’у:

«Это замечательно. Я ненавижу managed fields».«Это замечательно. Я ненавижу managed fields».

Зачем нужны managed fields

Эти поля появились вместе с релизом фичи server-side apply (в Kubernetes 1.18), которая призвана решить проблемы использования kubectl apply для декларативного управления ресурсами K8s. Server-side apply отслеживает изменения в полях объектов и записывает метаданные в managedFields. При этом записываются любые изменения, даже незначительные — отсюда и такой объем. Подробнее о механизме управления полями можно почитать в документации по Server-side apply.

Предложение убрать managedFields по умолчанию из вывода kubectl get появилось еще год назад, и у него нашлось много сторонников. Противники этой идеи хоть и согласились с тем, что вывод объемный, но настаивали, что информация всё-таки может быть полезна. Поведение по умолчанию, принятое для K8s 1.21, доказывает, что эта польза актуальна для меньшинства.

© Habrahabr.ru