【发布时间】:2018-08-02 07:01:36
【问题描述】:
我想为集群上的 helm 版本更新值配置。
有点像
helm update -f new_values.yml nginx-controller
【问题讨论】:
标签: kubernetes kubernetes-helm kubernetes-ingress
我想为集群上的 helm 版本更新值配置。
有点像
helm update -f new_values.yml nginx-controller
【问题讨论】:
标签: kubernetes kubernetes-helm kubernetes-ingress
你可以这样做:
helm upgrade -f new_values.yaml nginx-controller nginx-controller
这将更新图表的修订版本,可以使用以下命令查看:
掌舵
或更具体地:
helm 获取 nginx 控制器
对于舵图升级,请查看文档中的此链接:https://docs.helm.sh/helm/#helm-upgrade
【讨论】:
helm upgrade -f ingress-controller/helm-values.yml nginx-ingress ./some/path 的所有 helm 示例中,但您可以在最后一个参数中使用远程 helm 包名称,例如 helm upgrade -f ingress-controller/helm-values.yml nginx-ingress stable/nginx-ingress 和这也将升级到最新图表。如果我只想更新值并让 helm 重新编译模板并应用它们怎么办?
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 找到当前图表版本。
【讨论】:
new-values.yml 文件中包含原始图表中没有的新键?我正在尝试将 pod antiAffinity 块添加到现有(不是我的)图表中的 pod。
➜ helm list -A NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION my-prometheus-operator default 1 2020-07-07 20:31:28.019196 +0530 IST deployed prometheus-operator-8.15.11 0.38.1 vvp vvp 1 2020-07-08 14:30:30.330573 +0530 IST deployed ververica-platform-4.1.1 2.1.1 ➜ helm upgrade -f values-min.yaml vvp ververica-platform-4.1.1 Error: failed to download "ververica-platform-4.1.1" (hint: running helm repo update may help) 还是无法升级
helm upgrade 时,ConfigMap 的内容将被清空。之后重新创建 ConfigMap。
编辑 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 或机密时,通常需要这样做,而这些更改不会被检测为发布本身的更改。
【讨论】:
这就是我用新值更新当前图表的方式,而不升级图表版本:
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 标志以确保我保留以前使用的值。
【讨论】:
在Deployment(或StatefulSet) yaml 文件中,如果您使用的是ConfigMap 或Secret,您可以添加如下校验和:
kind: Deployment
...
spec:
template:
metadata:
annotations:
checksum/config-env: {{ include (print $.Template.BasePath "/configmap-env.yaml") . | sha256sum }}
...
这将检测 configMap 中的更改,而该更改不会被检测为版本本身的更改。
【讨论】:
我刚刚将安装更改为升级,这对我有用。
helm upgrade \
airflow \
airflow-stable/airflow \
--version 7.16.0 \
--namespace airflow \
--values airflow.config.yaml
如果在此之后仍然给您带来麻烦,您可以像这样回收命名空间中的所有 pod
kubectl delete pods -n airflow --all
【讨论】: