为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
侃侃无极 2023-08-21 14:32:26
我有很少的 CRD,但我不太确定如何查询 kube-apiserver 来获取 CR 列表。谁能提供任何示例代码吗?
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

我的集群外配置示例代码


    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 view


Kubernetes相关的导入如下


"k8s.io/client-go/tools/clientcmd"

"k8s.io/client-go/kubernetes"


查看完整回答
反对 回复 2023-08-21
?
森栏

TA贡献1810条经验 获得超5个赞

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

有关更多信息,请参阅此 文档


查看完整回答
反对 回复 2023-08-21
?
智慧大石

TA贡献1946条经验 获得超3个赞

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



查看完整回答
反对 回复 2023-08-21
  • 2 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信