相当于golang中的cat <<EOF
Equivalent to cat <<EOF in golang
我正在尝试执行与此等效的操作:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
name: testMap
namespace: default
data:
details:
host: "localhost:${reg_port}"
EOF
在 golang 中。
我目前的尝试归结为:
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"]
我知道我将这些作为参数传递并且 kubectl 需要一个文件,但是我发现自己完全不知道如何继续。
我宁愿不创建临时文件或调用单独的 bash 脚本,因为这看起来比我希望的更混乱。
shell here document 指向命令的标准输入。
以下是如何将 command's stdin 设置为 generateConfig 的结果:
cmd := exec.Command("kubectl", "apply", "-f", "-")
cmd.Stdin = strings.NewReader(generateConfig("5000"))
if err := cmd.Run(); err != nil {
// handle error
}
我正在尝试执行与此等效的操作:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
name: testMap
namespace: default
data:
details:
host: "localhost:${reg_port}"
EOF
在 golang 中。
我目前的尝试归结为:
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"]
我知道我将这些作为参数传递并且 kubectl 需要一个文件,但是我发现自己完全不知道如何继续。
我宁愿不创建临时文件或调用单独的 bash 脚本,因为这看起来比我希望的更混乱。
shell here document 指向命令的标准输入。
以下是如何将 command's stdin 设置为 generateConfig 的结果:
cmd := exec.Command("kubectl", "apply", "-f", "-")
cmd.Stdin = strings.NewReader(generateConfig("5000"))
if err := cmd.Run(); err != nil {
// handle error
}