【问题标题】:versioned clientset for client-go用于客户端的版本化客户端集
【发布时间】:2021-04-24 01:01:13
【问题描述】:

我读到了一些代码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"

【问题讨论】:

    标签: kubernetes client-go


    【解决方案1】:

    但我不明白为什么很多项目都喜欢生成新的客户端?

    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 并且为新类型提供生成的客户端 非常方便。这可以在许多创建自己的自定义资源的不同项目中看到。

    【讨论】:

    • 我知道自定义资源,我们使用控制器。我的问题是,有标准的 K8s 客户端,为什么他们要创建新的客户端,例如上面的 routeclientset。
    • 因为使用类型化客户端进行编程比手写 http 请求更容易。并且生成的是特定于自定义资源
    • 我知道目前很多开发者使用Operator-SDK来管理CR,上面的方式(生成)是不是已经过时了?
    • 是的,我认为你是对的。现在这些项目使用来自控制器运行时的通用客户端,但几年前并非如此。 godoc.org/sigs.k8s.io/controller-runtime/pkg/client
    猜你喜欢
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 2010-10-08
    • 2016-06-01
    • 1970-01-01
    相关资源
    最近更新 更多