我正在嘗試執行與此等效的操作:
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 腳本,因為這看起來比我希望的更混亂。
uj5u.com熱心網友回復:
此處的 shell檔案指向命令的標準輸入。
以下是如何將命令的 stdin設定為 generateConfig 的結果:
cmd := exec.Command("kubectl", "apply", "-f", "-")
cmd.Stdin = strings.NewReader(generateConfig("5000"))
if err := cmd.Run(); err != nil {
// handle error
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/362227.html
