client-go for Kubernetes运行应用命令

fykwrbwg  于 2022-11-28  发布在  Kubernetes
关注(0)|答案(2)|浏览(161)

如何通过client-go从go运行kubectl apply命令?例如:我有一个名为crds.yaml的文件,我想通过client-go运行它
我找不到任何关于如何做到这一点的例子,有人能帮忙吗?

rt4zxlrg

rt4zxlrg1#

您需要解码.yaml文件
Here这是完整的答案(包含代码示例)

mkshixfv

mkshixfv2#

根据您提供的链接,我最终接到了此类电话

yamlFile, err := ioutil.ReadFile("custom.yaml")
    if err != nil {
        log.Printf("yamlFile.Get err   #%v ", err)
    }

    var ctx context.Context
    var c client.Client
    var actionFn ForEachObjectInYAMLActionFunc

    err = ForEachObjectInYAML(ctx, c, yamlFile, "default", actionFn)
    if err != nil {
        fmt.Println(err)
    }

但它是失败的

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x10ac5cc]

goroutine 1 [running]:
main.ForEachObjectInYAML({0x0, 0x0}, {0x0, 0x0}, {0xc000880000?, 0xc0000021a0?, 0x200000003?}, {0x12bf20f, 0x7}, 0x0)
       apply.go:125 +0x12c
main.main()
       apply.go:34 +0xc5
exit status 2

而且还有:

if err := actionFn(ctx, c, obj); err != nil {
    return err
}

知道我做错了什么吗?

相关问题