#kubernetes #operator-sdk
#kubernetes #operator-sdk
Вопрос:
Я разрабатываю оператор и задаюсь вопросом, есть ли ссылка или документ, в котором описаны рекомендации по именованию для полей спецификации и статуса? Например:
Где я могу найти всю информацию, связанную с комментариями для каждого поля или параметра, чтобы установить поле необязательным или установить значение по умолчанию, показанное ниже:
// MyAppStatus defines the observed state of MyAppSPec
type MyAppStatus struct {
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
AppCount int32 `json:"appCount,omitempty"`
Apps map[string]string `json:"apps,omitempty"`
}
Как мне установить значение по умолчанию для AppCount? Кроме того, правильно ли указан AppCount в именовании? Могу ли я использовать косвенное указание имен, т.е. Могу ли я установить для него следующее:
AppCount int32 `json:"count,omitempty"`
Это поможет мне раскрыть разные имена в файле YAML, но внутри кода я буду ссылаться на AppCount . Пожалуйста, дайте мне знать, есть ли документ для комментариев, касающихся практики использования каждого поля и полей, например, опустить пустой или необязательный?
С точки зрения комментариев, я видел, что многие операторы ссылаются на kUbeBuilder, как показано ниже:
// kubebuilder:object:root=true
// kubebuilder:subresource:status
Где я могу найти подробности выше и когда их использовать?
Комментарии:
1. Поля состояния не будут иметь значения по умолчанию, поскольку все они будут начинаться пустыми. И вам нужно количество? Вы всегда можете выбрать длину карты.
2. Спасибо. Приведенный выше пример является лишь примером. Я искал какой-нибудь документ о лучших практиках в отношении соглашения об именовании в operator, который должен иметь 1) Косвенное именование, например AppCoun, в моем коде и количество в файле yaml для пользователя 2) детали комментариев, связанные с необязательными значениями и значениями по умолчанию 3) Значения тегов Json, такие как omitempty
Ответ №1:
Вы можете найти документы по аннотациям controller-gen по адресу https://book.kubebuilder.io/reference/markers.html (прочитайте подразделы). omitempty
означает, что поле является необязательным. Имя JSON и имя структуры обычно должны быть одинаковыми (за исключением регистра), если у вас нет очень веских причин не делать этого.
Комментарии:
1. Спасибо. Является ли документация Kubebuilder действительной и для operator-sdk? Поскольку существует много терминологий, я пытаюсь понять, когда ссылаться на Kubebuilder, а когда на operator-sdk. На данный момент я использую operator-sdk. Пожалуйста, внесите свой вклад.
2. Да, operator-sdk использует те же базовые инструменты для операторов Go.