Kubernetes: UpdateStatus () для пользовательских ресурсов не работает

Созданный на 27 окт. 2017  ·  1Комментарий  ·  Источник: kubernetes/kubernetes

/ добрый баг
/ 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 () для объекта.

Окружающая среда :

  • Версия Kubernetes: 1.7.5
arecustom-resources kinbug siapi-machinery

Самый полезный комментарий

Клиент генерирует метод статуса, потому что есть поле статуса, но это не означает, что сервер поддерживает этот метод.

https://github.com/kubernetes/community/pull/913 - это предложение добавить серверную поддержку для субресурсов статуса для объектов CRD.

>Все замечания

Клиент генерирует метод статуса, потому что есть поле статуса, но это не означает, что сервер поддерживает этот метод.

https://github.com/kubernetes/community/pull/913 - это предложение добавить серверную поддержку для субресурсов статуса для объектов CRD.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги