Open buaa10061123 opened 1 year ago
查了下源码,看起来是因为pkg/helm/sync.go里,直接设置了 client.DisableOpenAPIValidation = true 导致annotation为空时,没有报错直接进行了下发;这里为什么要禁用校验呢?
查了下源码,看起来是因为pkg/helm/sync.go里,直接设置了 client.DisableOpenAPIValidation = true 导致annotation为空时,没有报错直接进行了下发;这里为什么要禁用校验呢?
谢谢你提出的问题。 实际上captain的初衷是希望在k8s的环境中,基于CRD + controller的模式,尽可能的尝试将chart部署/更新到集群中。 因此会将一些helm的参数设置为默认,例如你提到的这个参数,设置了一个格式错误的annotation,它被丢弃了,我认为这个问题可以忽略,不需要阻碍应用的继续部署。
作为用户来说,我期望的是使用helm controller的行为,跟使用helm cli的行为是一样的。也就是说很多参数的默认值应该设置为helm lib里的默认值,否则可能会造成困惑
作为用户来说,我期望的是使用helm controller的行为,跟使用helm cli的行为是一样的。也就是说很多参数的默认值应该设置为helm lib里的默认值,否则可能会造成困惑
我们也在考虑,接下来将helm支持的一些参数作为配置暴露出来,可以通过helmrequest修改这些参数以满足不同的chart部署需求。
当某个CR的Annotation在渲染后为空值时,Captain会正常下发HR,并且会丢失掉所有Annotation;而原生Helm在这种情况下是不会下发的,会在下发时直接报错Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: error validating "": error validating data: unknown object type "nil" in xxxxxx