/ добрый баг
/ sig api-machinery
@ kubernetes / sig-api-machinery-bugs
Что случилось :
У моего настраиваемого типа ресурса есть поле статуса. Я создал для него клиента с помощью genclient.
Вот определение моего типа CRD:
// +genclient
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type Recovery struct {
metav1.TypeMeta `json:",inline,omitempty"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec RecoverySpec `json:"spec,omitempty"`
Status RecoveryStatus `json:"status,omitempty"`
}
Сгенерированная функция UpdateStatus ():
// UpdateStatus was generated because the type contains a Status member.
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
func (c *recoveries) UpdateStatus(recovery *v1alpha1.Recovery) (result *v1alpha1.Recovery, err error) {
result = &v1alpha1.Recovery{}
err = c.client.Put().
Namespace(c.ns).
Resource("recoveries").
Name(recovery.Name).
SubResource("status").
Body(recovery).
Do().
Into(result)
return
}
Теперь, когда я вызываю UpdateStatus () для объекта восстановления (stash-mduabx), он выдает следующую ошибку:
the server could not find the requested resource (put recoveries.stash.appscode.com stash-mduabx)
И журнал вызова API:
PUT https://192.168.99.100:8443/apis/stash.appscode.com/v1alpha1/namespaces/test-stash/recoveries/stash-mduabx/status 404 Not Found in 11 milliseconds
Что вы ожидали :
Он должен обновить поле статуса.
Как это воспроизвести :
Определите тип CRD с полем статуса и сгенерируйте для него клиента с помощью genclient. Создайте объект этого типа с помощью kubectl. Теперь получите объект из программы go и вызовите UpdateStatus () для объекта.
Окружающая среда :
Клиент генерирует метод статуса, потому что есть поле статуса, но это не означает, что сервер поддерживает этот метод.
https://github.com/kubernetes/community/pull/913 - это предложение добавить серверную поддержку для субресурсов статуса для объектов CRD.
Самый полезный комментарий
Клиент генерирует метод статуса, потому что есть поле статуса, но это не означает, что сервер поддерживает этот метод.
https://github.com/kubernetes/community/pull/913 - это предложение добавить серверную поддержку для субресурсов статуса для объектов CRD.