Helm 只更新一个属性

Nin*_*a S 2 kubernetes kubernetes-helm

我使用 helm 通过以下命令成功安装组件

helm template install/kubernetes/helm/istio --name istio --namespace istio-system  \ --set tracing.enabled=true --set servicegraph.enabled=true \ --set grafana.enabled=true | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

现在我只想更改一个属性,例如

--set tracing.enabled=false
Run Code Online (Sandbox Code Playgroud)

我只使用我需要修改的字段尝试以下操作

helm template update/kubernetes/helm/istio --name istio --namespace istio-system  \ --set tracing.enabled=flase  | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

没有成功,我错过了什么吗?

Dav*_*aze 8

helm template是完全无状态的——它读取 Helm 图表的配置和 YAML 文件,并写出应用所有模板产生的 YAML。它不知道您之前使用过不同的选项运行过它。

当前版本的 Helm 有一个名为 Tiller 的集群端组件,可以像这样跟踪状态,并且 Istio 文档确实有使用 Tiller 的具体说明。由于此处保留了状态,因此您可以进行更新,例如

helm upgrade istio \
  install/kubernetes/helm/istio \
  --reuse-values \
  --set tracing.enabled=false
Run Code Online (Sandbox Code Playgroud)

另一个有效选项是将安装时选项保留在 YAML 文件中

tracing:
  enabled: true
servicegraph:
  enabled: true
grafana:
  enabled: true
Run Code Online (Sandbox Code Playgroud)

然后你可以使用 Helm 的-f标志传递这些选项

helm template install/kubernetes/helm/istio \
  --name istio \
  -f istio-config.yaml
Run Code Online (Sandbox Code Playgroud)

此选项也适用于helm installhelm upgrade,相当于传递--set您指定的所有选项。