【发布时间】:2019-11-30 02:23:26
【问题描述】:
我正在尝试通过客户端 go for k8 调用更新部署。但是我很难从 deployment.yaml 文件中更新更改 任何等效于 kubectl 的代码示例都通过 client-go API 应用 -f deployment.yaml
【问题讨论】:
-
欢迎来到 SO。请您展示您已经尝试过的内容。
标签: kubernetes client-go
我正在尝试通过客户端 go for k8 调用更新部署。但是我很难从 deployment.yaml 文件中更新更改 任何等效于 kubectl 的代码示例都通过 client-go API 应用 -f deployment.yaml
【问题讨论】:
标签: kubernetes client-go
此示例程序演示了管理Deployment 资源的基本操作,例如
Create、List、Update和Delete。
此代码可用here 和Go client for Kubernetes. 的整个文档。
或者您可以编写自己的函数来部署 yaml 作为参数。
func cellDeploy(pathToFileName string) error {
cmd := exec.Command("kubectl", "apply", "-f", pathToFileName)
stdoutReader, _ := cmd.StdoutPipe()
stdoutScanner := bufio.NewScanner(stdoutReader)
go func() {
for stdoutScanner.Scan() {
fmt.Println(stdoutScanner.Text())
}
}()
stderrReader, _ := cmd.StderrPipe()
stderrScanner := bufio.NewScanner(stderrReader)
go func() {
for stderrScanner.Scan() {
fmt.Println(stderrScanner.Text())
}
}()
err := cmd.Start()
if err != nil {
fmt.Printf("Error : %v \n", err)
os.Exit(1)
}
err = cmd.Wait()
if err != nil {
fmt.Printf("Error: %v \n", err)
os.Exit(1)
}
return nil
}
【讨论】: