kubernetes 使用K8S Go客户端列出集群服务版本

fwzugrvs  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(1)|浏览(329)

我尝试使用K8S Go client来列出ClusterServiceVersion。拥有原始响应主体就足够了。
我试过这个:

data, err := clientset.RESTClient().Get().Namespace(namespace).
    Resource("ClusterServiceVersions").
    DoRaw(context.TODO())

if err != nil {
    panic(err.Error())
}

fmt.Printf("%v", string(data))

但它返回以下错误:

panic: the server could not find the requested resource (get ClusterServiceVersions.meta.k8s.io)

如何指定使用operators.coreos.com组?
查看一些现有的代码,我也尝试添加

VersionedParams(&v1.ListOptions{}, scheme.ParameterCodec)

但它导致了另一个错误:

panic: v1.ListOptions is not suitable for converting to "meta.k8s.io/v1" in scheme "pkg/runtime/scheme.go:100"
f1tvaqid

f1tvaqid1#

可以使用AbsPath()方法执行原始请求。

path := fmt.Sprintf("/apis/operators.coreos.com/v1alpha1/namespaces/%s/clusterserviceversions", namespace)

data, err := clientset.RESTClient().Get().
    AbsPath(path).
    DoRaw(ctx)

另请注意,如果要使用接口(kubernetes.Interface)而不是具体类型(*kubernetes.Clientset)来定义clientset,则不能直接访问方法clientset.RESTClient(),但可以使用以下方法:

clientset.Discovery().RESTClient()

相关问题