Документы Kubebuilder немного сыры, но, тем не менее, являются удобным руководством при создании CRD и контроллеров с Kubebuilder.Он проведет вас через довольно подробный пример, который здорово изучить и обратиться к нему, чтобы увидеть, как делать определенные вещи.
Ответ на ваш вопрос обычно таков: «Это зависит».Какие значения вы рассчитываете и почему?Зачем вам хранить их на объекте?Связан ли жизненный цикл этих данных с жизненным циклом этого объекта, или эти вычисленные данные должны использоваться и использоваться другими контроллерами, даже если объект удален?В общем, что-нибудь будет взаимодействовать с этими ценностями?Что это будет с ними делать?
Если ничто иное, кроме контроллера согласования для CRD, не будет взаимодействовать с данными, которые вы вводите, рассмотрите возможность помещения их в статус объекта.
Выполнение r.Status().Update(ctx, &thing)
позволит избежать каких-либо побочных эффектов, поскольку оно сохранит только изменения, внесенные в подресурс объекта Status, а не в его спецификацию или метаданные.
Обычная вещь, которую нужно делать с пользовательскими ресурсамидолжен устанавливать и удалять финализаторы, которые живут в метаданных объекта.