去安装图表,检查应用程序是否已启动并运行

我有以下代码,我能够在目标集群中创建一个头盔图。当你安装一些图表直到应用程序(在图表内)可用时,需要时间,如何检查通过helm图表安装的应用程序是否启动并运行?有没有办法用舵手客户端做到这一点(我们使用的是舵机3.5.2)


tmpfile, 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)

    }

天涯尽头无女友
浏览 95回答 1
1回答

慕田峪9158850

您需要 (或 ) 使用 --wait 标志:helm installupgrade--wait:等到所有 Pod 都处于就绪状态、PVC 已绑定、部署具有处于就绪状态的最小(所需减号)Pod 和服务具有 IP 地址(如果是 LoadBalancer,则为 Ingress),然后再将发布标记为成功。它将等待一直到 [...]maxUnavailable--timeout确保您的窗格具有活动性和就绪性检查。只有在这些检查通过后,使用该版本才会成功返回。--wait
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go