54

我想为集群上的 helm 版本更新值配置。

就像是

helm update -f new_values.yml nginx-controller

4

6 回答 6

80
helm upgrade -f ingress-controller/values.yml nginx-ingress stable/nginx-ingress

或更一般地说:

helm upgrade -f new-values.yml {release name} {package name or path} --version {fixed-version}

上面的命令完成了这项工作。

除非您使用--version {fixed-version}参数手动指定版本,upgrade否则还会更新图表版本。您可以使用 找到当前图表版本helm ls

文档:https ://helm.sh/docs/helm/#helm-upgrade

于 2018-02-27T12:39:15.980 回答
20

编辑 2020-04-03:

--recreate-pods --wait不再推荐。正如 Jorden 指出的那样,一种方法是添加校验和注释,这意味着如果有任何文件更改,将重新启动 pod。请参阅https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments以供参考。

原始答案

为了补充@stan-bondi 的答案,您可以这样做:

helm upgrade --recreate-pods --wait -f new_values.yaml nginx-controller nginx-controller

当您刚刚更改不会被检测为发布本身更改的 configMap 或机密时,通常需要这样做。

于 2018-09-24T17:06:07.950 回答
14

这就是我用新值更新当前图表的方式,而不升级图表版本:

helm upgrade --reuse-values -f values.yaml {release-name} {release-path} --version {fixed-version}

例如:

helm upgrade --reuse-values -f prometheus/values.yaml prometheus-operator stable/prometheus-operator --version 5.7.0 --namespace monitoring

我使用已安装图表的固定版本,并添加 --reuse-values 标志以确保我保留以前使用的值。

于 2019-05-13T13:02:22.977 回答
2

Deployment(或StatefulSet)yaml 文件中,如果您正在使用ConfigMap,或者Secret您可以添加如下校验和:

kind: Deployment
...
spec:
  template:
    metadata:
      annotations:
        checksum/config-env: {{ include (print $.Template.BasePath "/configmap-env.yaml") . | sha256sum }}

...

这将检测 configMap 中的更改,而该更改不会被检测为版本本身的更改。

于 2020-02-11T13:39:05.697 回答
2

我只是将安装更改为升级,这对我有用。

helm upgrade \
  airflow \
  airflow-stable/airflow \
  --version 7.16.0 \
  --namespace airflow \
  --values airflow.config.yaml

如果在此之后仍然给您带来麻烦,您可以像这样回收命名空间中的所有 pod

kubectl delete pods -n airflow --all
于 2021-01-20T05:03:47.140 回答
1

你可以做:

helm upgrade -f new_values.yaml nginx-controller nginx-controller

这将更新图表的修订版本,可以使用以下方式查看:

掌舵

或更具体地说:

helm 获取 nginx 控制器

对于 helm chart 升级,请查看文档中的此链接:https ://docs.helm.sh/helm/#helm-upgrade

于 2018-02-22T13:38:00.197 回答