相当于 golang 中的 cat <<EOF

我正在尝试执行等效的操作:


cat <<EOF | kubectl apply -f -

apiVersion: v1

kind: ConfigMap

metadata:

  name: testMap

  namespace: default

data:

  details:

    host: "localhost:${reg_port}"

EOF

在戈朗。


我目前的尝试归结为:


func generateConfig(port string) string {

    return `

apiVersion: v1

kind: ConfigMap

metadata:

  name: testMap

  namespace: default

data:

  details:

    host: "localhost:" + port`

}


func main() {

  exec.Command("kubectl", "apply", "-f", "-", generateConfig(5000))

}

发现它不起作用并出现错误,我并不感到特别惊讶:


error: Unexpected args: [

apiVersion: v1

kind: ConfigMap

metadata:

    name: testMap

    namespace: default

data:

    details:

        host: "localhost:5000"]

我认识到我将这些作为 args 传递并且 kubectl 需要一个文件,但是我发现自己完全不知道如何继续。


我宁愿不制作临时文件或调用单独的 bash 脚本,因为这看起来比我希望的要复杂。


守着星空守着你
浏览 80回答 1
1回答

慕的地6264312

此处的 shell文档被定向到命令的标准输入。以下是如何将命令的标准输入设置为 generateConfig 的结果:cmd := exec.Command("kubectl", "apply", "-f", "-")cmd.Stdin = strings.NewReader(generateConfig("5000"))if err := cmd.Run(); err != nil {&nbsp; &nbsp; // handle error}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go