英文:
Access kubectl explain
问题
kubectl explain
是用于解释 kubectl 中对象属性的命令。例如,k explain pod.spec.volumes.secret
可以帮助你了解如何将密钥挂载到你的 Pod 中。
我想在 Go 中编写一个包装器来实现这个功能。我该如何访问 explain 命令?据我所知,go client lib 无法访问 explain 命令,因为 explain 是 kubectl
的一个特性,而不是集群本身的特性。我希望避免编写一个 bash 脚本,在 Go 中执行它并解析输出。
英文:
kubectl explain
tells explains attribute of an object in kubectl. E.g. k explain pod.spec.volumes.secret
gives you some insight about how to mount secrets into your pod.
I would like to write a wrapper for this in Go. How do I access explain? Afaik the go client lib cannot access this, because explain is a feature of kubectl
and not the cluster itself. I would like to avoid writing a bash script, executing this from go and parsing the output.
答案1
得分: 1
你可以使用os/exec
包来执行kubectl命令并解析输出。
使用该包,你可以执行kubectl命令并解析输出。
func main() {
cmd := exec.Command("kubectl", "arg1", "arg2")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
log.Fatal(err)
}
fmt.Printf(string(out.Bytes()))
}
请在这里找到该包的文档。
另外,你可以尝试导入kubectl
包的重要部分,并从代码中调用这些函数。这可能有效,因为kubectl
是用Go编写的。
可以查看这个仓库:https://github.com/kubernetes/kubectl
我从未尝试过这样做,所以无法给出更多提示。
英文:
You could use the os/exec
package.
Using that package you can execute your kubectl command and parse the output.
func main() {
cmd := exec.Command("kubectl", "arg1", "arg2")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
log.Fatal(err)
}
fmt.Printf(string(out.Bytes()))
}
Please find the documentation of that package here
Alternatively, you could try to import the important bits of the kubectl
package and call these functions from within your code. This could work, as kubectl
is written in Go.
Have a look at that repo: https://github.com/kubernetes/kubectl
I have never tried that, so i can't give further hints.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论