client-go 的版本化客户端集

versioned clientset for client-go

我读了一些代码https://github.com/openshift/router/blob/master/pkg/router/controller/factory/factory.go

在这个go文件中,它引用了3个clientset,我使用的是标准的K8s clientset——k8s。io/client-go/kubernetes,但我不明白为什么很多项目喜欢生成新的clientset?为什么标准 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"

but I don't understand why many projects like to generate new clientset?

projectclient "github.com/openshift/client-go/project/clientset/versioned/typed/project/v1" routeclientset "github.com/openshift/client-go/route/clientset/versioned"

在这里,OpenShift 项目决定通过创建自己的 Custom Resource. When creating a custom resource, you typically also create a custom controller - these two can be generated with e.g. kubebuilder 扩展 Kubernetes, 生成客户端 用于新类型。这可以在许多创建自己的 自定义资源 .

的不同项目中看到