我使用以下代码,该代码可以工作并安装头盔图表。我得到了一个图表列表,它安装每个图表(通过循环)并等待(,见下文)图表启动并运行(使用头盔的标志),然后安装下一个图表,问题是需要花费大量时间来等待每个图表都正常运行,然后继续下一个图表, 有没有办法并行安装所有设备,并在最后(所有图表安装)验证它是否有效(就像等待的工作方式,但对于图表列表)。upgradeAction.Wait = truewait=true
代码如下:
mpfile, err := ioutil.TempFile(kp, kcp)
if err != nil {
log.Error(err, "error")
}
defer os.Remove(tmpfile.Name())
if _, err := tmpfile.Write(cfg); err != nil {
return err
}
if err := tmpfile.Close(); err != nil {
return err
}
kcfgFilePath := tmpfile.Name()
settings := cli.New()
ac := new(action.Configuration)
clientGetter := genericclioptions.NewConfigFlags(false)
clientGetter.KubeConfig = &kcfgFilePath
for _, chartInstallation := range charts {
chart, err := loader.Load(chartInstallation.Path)
if err != nil {
return err
}
releaseName := releaseName + "-" + chartInstallation.Name
if err := ac.Init(clientGetter, settings.Namespace(), os.Getenv("HELM_DRIVER"), func(format string, v ...interface{}) {
}); err != nil {
return err
}
releasePresent := true
statusAction := action.NewStatus(ac)
status, err := statusAction.Run(releaseName)
if err != nil {
if strings.Contains(err.Error(), driver.ErrReleaseNotFound.Error()) {
releasePresent = false
} else {
return err
}
}
if !releasePresent {
// install chart
installAction := action.NewInstall(ac)
installAction.CreateNamespace = true
installAction.Namespace = chartInstallation.Namespace
installAction.ReleaseName = releaseName
_, err := installAction.Run(chart, nil)
if err != nil {
return err
}
log.Info("chart installed: ", "releaseName", releaseName)
}
如果我把它改成,它开始安装所有的图表,而不等待每一个健康检查,但是不确定如何在所有图表安装结束时验证它upgradeAction.Wait = false
人到中年有点甜
手掌心
随时随地看视频慕课网APP
相关分类