问题描述
我正在阅读一些代码 https://github.com/openshift/router/blob/master/pkg/router/controller/factory/factory.go。
在这个 go 文件中,它引用了 3 个客户端集,我使用了标准的 K8s 客户端集 - k8s.io/client-go/kubernetes,但我不明白为什么许多项目喜欢生成新的客户端集?为什么标准的 K8s 客户端集没有提供足够的 API 或功能?任何人都可以给出想法或示例,为什么某些项目想要生成新的客户端集?有什么用?
kclientset "k8s.io/client-go/kubernetes"
projectclient "github.com/openshift/client-go/project/clientset/versioned/typed/project/v1"
routeclientset "github.com/openshift/client-go/route/clientset/versioned"
解决方法
但我不明白为什么很多项目喜欢生成新的客户端?
projectclient "github.com/openshift/client-go/project/clientset/versioned/typed/project/v1" routeclientset "github.com/openshift/client-go/route/clientset/versioned"
在这里,OpenShift 项目决定通过创建自己的 Custom Resource 来扩展 Kubernetes。创建自定义资源时,您通常还会创建一个 custom controller - 这两个可以使用例如生成kubebuilder 并且为新类型拥有生成的客户端非常方便。这可以在创建自己的自定义资源的许多不同项目中看到。