/μ’
λ₯ λ²κ·Έ
/sig API κΈ°κ³
@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
}
μ΄μ 볡ꡬ κ°μ²΄(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()λ₯Ό νΈμΆν©λλ€.
νκ²½ :
μν νλκ° μκΈ° λλ¬Έμ ν΄λΌμ΄μΈνΈλ μν λ©μλλ₯Ό μμ±νμ§λ§ μλ²κ° ν΄λΉ λ©μλλ₯Ό μ§μνλ€λ μλ―Έλ μλλλ€.
https://github.com/kubernetes/community/pull/913 μ CRD κ°μ²΄μ μν νμ 리μμ€μ λν μλ² μ§μμ μΆκ°νκΈ° μν μ μμ λλ€.
κ°μ₯ μ μ©ν λκΈ
μν νλκ° μκΈ° λλ¬Έμ ν΄λΌμ΄μΈνΈλ μν λ©μλλ₯Ό μμ±νμ§λ§ μλ²κ° ν΄λΉ λ©μλλ₯Ό μ§μνλ€λ μλ―Έλ μλλλ€.
https://github.com/kubernetes/community/pull/913 μ CRD κ°μ²΄μ μν νμ 리μμ€μ λν μλ² μ§μμ μΆκ°νκΈ° μν μ μμ λλ€.