기타

[Golang] missing method Destroy 에러 해결(apiserver-runtime)

KyuminKim 2024. 11. 9. 22:50

 

개발 환경


문제

apiserver-runtime을 이용해 k8s 관련하여 개발하다,

/Users/username/go/pkg/mod/sigs.k8s.io/apiserver-runtime@v1.1.1/pkg/builder/rest/provider.go:60:10: 
cannot use parentPlumbedStorageGetterUpdaterProvider{…} 
(value of type parentPlumbedStorageGetterUpdaterProvider) as "k8s.io/apiserver/pkg/registry/rest".Storage value 
in return statement: parentPlumbedStorageGetterUpdaterProvider does not implement "k8s.io/apiserver/pkg/registry/rest".Storage 
(missing method Destroy)

 

다음과 같은

missing method Destroy 에러를 마주했다.


원인

https://github.com/kubernetes-sigs/apiserver-runtime/blob/main/pkg/builder/rest/provider.go

 

apiserver-runtime/pkg/builder/rest/provider.go at main · kubernetes-sigs/apiserver-runtime

Libraries for implementing aggregated apiservers. Contribute to kubernetes-sigs/apiserver-runtime development by creating an account on GitHub.

github.com

 

공식 레포지토리와 비교하였을 때,

공식 레포: 105번 줄에 Destroy 함수를 implement하는 코드가 포함되어 있는데,

현재 내 파일: 해당 코드가 없다 !!


시도

시도 1 (실패)

/Users/username/go/pkg/mod/sigs.k8s.io/apiserver-runtime@v1.1.1/pkg/builder/rest/provider.go:60:10: 
cannot use parentPlumbedStorageGetterUpdaterProvider{…} 
(value of type parentPlumbedStorageGetterUpdaterProvider) as "k8s.io/apiserver/pkg/registry/rest".Storage value 
in return statement: parentPlumbedStorageGetterUpdaterProvider does not implement "k8s.io/apiserver/pkg/registry/rest".Storage 
(missing method Destroy)

에러 로그를 보니,

k8s.io/apiserver/pkg/registry/rest에 문제가 있나 싶어 새롭게 다운로드 해줬다.

$ go get k8s.io/apiserver/pkg/registry/rest@latest

 


해결

문제 원인 단계에서 인지한 대로,

로컬 파일의 apiserver-runtime 패키지 코드를 수정한다!

 

수정 파일:

/Users/username/go/pkg/mod/sigs.k8s.io/apiserver-runtime@v1.1.1/pkg/builder/rest/provider.go:60:10:

 

추가 내용:

 

이후 goland에서 invalidate cache를 하고 재접속시 !!!

잘 동작하는 것을 볼 수 있다!

(야호~~~!!)