Kubernetes: カスタムリソースのUpdateStatus()が機能しない

作成日 2017年10月27日  ·  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
}

ここで、Recoveryオブジェクト(stash-mduabx)に対してUpdateStatus()を呼び出すと、次のエラーが発生します。

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 評価