我正在嘗試執(zhí)行等效的操作:cat <<EOF | kubectl apply -f -apiVersion: v1kind: ConfigMapmetadata: name: testMap namespace: defaultdata: details: host: "localhost:${reg_port}"EOF在戈朗。我目前的嘗試歸結(jié)為:func generateConfig(port string) string { return `apiVersion: v1kind: ConfigMapmetadata: name: testMap namespace: defaultdata: details: host: "localhost:" + port`}func main() { exec.Command("kubectl", "apply", "-f", "-", generateConfig(5000))}發(fā)現(xiàn)它不起作用并出現(xiàn)錯誤,我并不感到特別驚訝:error: Unexpected args: [apiVersion: v1kind: ConfigMapmetadata: name: testMap namespace: defaultdata: details: host: "localhost:5000"]我認(rèn)識到我將這些作為 args 傳遞并且 kubectl 需要一個文件,但是我發(fā)現(xiàn)自己完全不知道如何繼續(xù)。我寧愿不制作臨時文件或調(diào)用單獨的 bash 腳本,因為這看起來比我希望的要復(fù)雜。
1 回答

慕的地6264312
TA貢獻1817條經(jīng)驗 獲得超6個贊
此處的 shell文檔被定向到命令的標(biāo)準(zhǔn)輸入。
以下是如何將命令的標(biāo)準(zhǔn)輸入設(shè)置為 generateConfig 的結(jié)果:
cmd := exec.Command("kubectl", "apply", "-f", "-")
cmd.Stdin = strings.NewReader(generateConfig("5000"))
if err := cmd.Run(); err != nil {
// handle error
}
- 1 回答
- 0 關(guān)注
- 105 瀏覽
添加回答
舉報
0/150
提交
取消