猿问

如何使用client-go访问kubernetes CRD?

我有很少的 CRD,但我不太确定如何查询 kube-apiserver 来获取 CR 列表。谁能提供任何示例代码吗?



侃侃无极
浏览 161回答 2
2回答

婷婷同学_

我的集群外配置示例代码    var kubeconfig *string    kubeconfig = flag.String("kubeconfig", "./config", "(optional) relative path to the kubeconfig file")    flag.Parse()    // kubernetes config loaded from ./config or whatever the flag was set to    config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)    if err != nil {        panic(err)    }    // instantiate our client with config    clientset, err := kubernetes.NewForConfig(config)    if err != nil {        panic(err)    }    // get a list of our CRs    pl := PingerList{}    d, err := clientset.RESTClient().Get().AbsPath("/apis/pinger.hel.lo/v1/pingers").DoRaw(context.TODO())    if err != nil {        panic(err)    }    if err := json.Unmarshal(d, &pl); err != nil {        panic(err)    }PingerList{} 是一个从 Kubebuilder 生成的对象,我稍后在代码中将其解组。但是,您可以直接println(string(d))获取该 json。AbsPath() 中的组件是"/apis/group/verison/plural version of resource name"如果您使用的是 minikube,您可以使用以下命令获取配置文件kubectl config viewKubernetes相关的导入如下"k8s.io/client-go/tools/clientcmd""k8s.io/client-go/kubernetes"

森栏

请参阅此页面以获取有关如何使用此存储库访问 crd 的信息有关更多信息,请参阅此 文档

智慧大石

您需要使用非结构化客户端,或者生成客户端存根。控制器运行时库中的动态客户端对此要好得多,我推荐它。
随时随地看视频慕课网APP

相关分类

Go
我要回答