我有一个值文件values-production.yaml
,其注释如下:
# some other comments
# another comments
image: xxxx
然后,我使用命令helm install -n=test --values=values-production.yaml some-chart
在群集上部署应用程序。但是,当我使用命令helm get values test
时,结果如下:
image: xxx
没有任何评论。我的评论在哪里?如何保留评论?
我的头盔版本: 客户端:v2.11.0 伺服器:v2.11.0
答案 0 :(得分:2)
这是不可能的,因为helm install
不会照原样上传您的values-production.yaml
文件。相反,它将构造一个对象,该对象表示来自各种默认值和输入的所有值,然后将该对象转换为文件并将其发布到服务器。在转换为对象时,所有注释都将丢失。
helm install
命令的实现方式的核心是here:
func (i *installCmd) run() error {
// omitting some code
// note below rawVals is the output of the vals function
rawVals, err := vals(i.valueFiles, i.values, i.stringValues, i.fileValues, i.certFile, i.keyFile, i.caFile)
// omitting some code
// note below the client asks the server to install the chart, passing values
// via rawVals constructed above
res, err := i.client.InstallReleaseFromChart(
chartRequested,
i.namespace,
helm.ValueOverrides(rawVals),
helm.ReleaseName(i.name),
helm.InstallDryRun(i.dryRun),
helm.InstallReuseName(i.replace),
helm.InstallDisableHooks(i.disableHooks),
helm.InstallDisableCRDHook(i.disableCRDHook),
helm.InstallSubNotes(i.subNotes),
helm.InstallTimeout(i.timeout),
helm.InstallWait(i.wait),
helm.InstallDescription(i.description))
// more code omitted
}
和here是vals
的工作-请注意,值文件中的数据将进入base
对象,并且该东西最终被序列化为YAML并由{返回{1}}:
vals
Helm不能用于文件共享,如果func vals(valueFiles valueFiles, values []string, stringValues []string, fileValues []string, CertFile, KeyFile, CAFile string) ([]byte, error) {
base := map[string]interface{}{}
// omitting code that populates base with all the values from valuesFiles, etc.
return yaml.Marshal(base)
}
中有想要存储,检索和共享的文本对Helm而言在语义上没有意义(例如注释),那么您我将不得不考虑其他解决方案。不确定用例是什么,但是可以考虑使用一些Blobstore服务,DropBox等。