Обновление аннотаций метаданных - PullRequest
0 голосов
/ 22 сентября 2019

Я использую kubebuilder для создания оператора Kubernetes.Когда объект моего вида инициируется, я должен проанализировать спецификацию и обновить объекты на основе нескольких вычислений.

Из того, что я могу сказать, я могу обновить состояние объекта, метаданных или управляемого поля (я могу ошибаться?).Похоже, что библиотека sigs.k8s.io/controller-runtime/pkg/client отвечает за то, как обновить эти поля (я не совсем уверен).У меня проблемы с пониманием документов .

У меня есть следующие вопросы:

  • Существует ли руководство по передовым методам хранения конфигурации между объектом, метаданными (метками или аннотациями) и управляемыми полями?
  • Как мне обновить / исправить аннотации объекта, аналогично тому, как я бы использовал r.Status().Update(ctx, &thing); для обновления статуса?

1 Ответ

2 голосов
/ 22 сентября 2019

Документы Kubebuilder немного сыры, но, тем не менее, являются удобным руководством при создании CRD и контроллеров с Kubebuilder.Он проведет вас через довольно подробный пример, который здорово изучить и обратиться к нему, чтобы увидеть, как делать определенные вещи.

Ответ на ваш вопрос обычно таков: «Это зависит».Какие значения вы рассчитываете и почему?Зачем вам хранить их на объекте?Связан ли жизненный цикл этих данных с жизненным циклом этого объекта, или эти вычисленные данные должны использоваться и использоваться другими контроллерами, даже если объект удален?В общем, что-нибудь будет взаимодействовать с этими ценностями?Что это будет с ними делать?

Если ничто иное, кроме контроллера согласования для CRD, не будет взаимодействовать с данными, которые вы вводите, рассмотрите возможность помещения их в статус объекта.

Выполнение r.Status().Update(ctx, &thing) позволит избежать каких-либо побочных эффектов, поскольку оно сохранит только изменения, внесенные в подресурс объекта Status, а не в его спецификацию или метаданные.

Обычная вещь, которую нужно делать с пользовательскими ресурсамидолжен устанавливать и удалять финализаторы, которые живут в метаданных объекта.

...