查看了kubesphere源码,在每次进行应用更新操作时,不仅校验helmreleases.application.kubesphere.io资源的状态,还会通过Helm Chart中的状态进行校准:
func (c *helmWrapper) Upgrade(chartName, chartData, values string) error {
sts, err := c.Status()
if err != nil {
return err
}
if sts.Info.Status == "deployed" {
return c.writeAction(chartName, chartData, values, true)
} else {
err = errors.New("cannot upgrade release %s/%s, current state is %s", c.Namespace, c.ReleaseName, sts.Info.Status)
return err
}
}
因此需要先将Helm Chart 对应的 release 修改正确,具体方式为:
恢复方式比较trick且繁琐,希望官方能够尽快提供rollingback等功能。