Kubernetes: μ‚¬μš©μž 지정 λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ UpdateStatus()κ°€ μž‘λ™ν•˜μ§€ μ•ŠμŒ

에 λ§Œλ“  2017λ…„ 10μ›” 27일  Β·  1논평  Β·  좜처: kubernetes/kubernetes

/μ’…λ₯˜ 버그
/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()λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

ν™˜κ²½ :

  • μΏ λ²„λ„€ν‹°μŠ€ 버전: 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 λ“±κΈ‰