升级New Relic Logging Helm Chart出现‘failed to download’错误的原因及解决
问题背景
我在Kubernetes集群中运行New Relic Logging Helm Chart,执行helm list -A -n kube-system的输出如下:
NAME NAMESPACE. REVISION. UPDATED. newrelic-logging kube-system 1 2021-06-23 18:54:54.383769 +0200 CEST STATUS. CHART. APP VERSION deployed newrelic-logging-1.4.7 1.4.6
尝试修改该Chart的配置值时,执行了两次helm upgrade命令均报错:
- 命令:
helm upgrade newrelic-logging newrelic-logging-1.4.7 -f values.yaml -n kube-system
报错:Error: failed to download "newrelic-logging-1.4.7" - 命令:
helm upgrade newrelic-logging-1.4.7 newrelic-logging --set updatedVal=0 -n kube-system
报错:Error: failed to download "newrelic-logging"
已执行helm repo update且无报错,但不清楚Chart的初始部署方式,且当前无法停止重部署,求问错误原因及解决办法。
错误原因
两次命令都违反了helm upgrade的正确格式规则:
Helm upgrade的标准格式是:helm upgrade <RELEASE_NAME> <CHART_SOURCE> [参数]
<RELEASE_NAME>:已部署的实例名称(对应helm list输出里的NAME列值,这里是newrelic-logging)<CHART_SOURCE>:Chart的合法来源,可以是「仓库名/Chart名」、本地Chart目录或本地Chart压缩包路径
具体错误点:
- 第一个命令把
<CHART_SOURCE>写成了newrelic-logging-1.4.7:Helm会将其当作独立的Chart名称去仓库查找,但仓库中Chart的正式名称是newrelic-logging,带版本号的名称不存在,因此触发下载失败。 - 第二个命令犯了两个错误:
- 把
<RELEASE_NAME>写成了newrelic-logging-1.4.7,与实际部署的实例名称不符; - 把
<CHART_SOURCE>写成了newrelic-logging,未指定仓库前缀,Helm无法定位到正确的远程Chart源,导致下载失败。
- 把
解决方法
方法1:通过远程仓库升级(推荐)
先确认New Relic Helm仓库已正确添加(未添加则先执行):
helm repo add newrelic https://helm-charts.newrelic.com helm repo update
然后执行正确的升级命令:
- 若要指定版本+使用自定义配置文件:
helm upgrade newrelic-logging newrelic/newrelic-logging --version 1.4.7 -f values.yaml -n kube-system
- 若仅修改配置值、不升级版本:
helm upgrade newrelic-logging newrelic/newrelic-logging --set updatedVal=0 -n kube-system
方法2:通过本地Chart包升级
如果无法访问远程仓库,先下载对应版本的Chart包到本地:
helm pull newrelic/newrelic-logging --version 1.4.7
再用本地包路径执行升级:
helm upgrade newrelic-logging ./newrelic-logging-1.4.7.tgz -f values.yaml -n kube-system
处理持续重部署的问题
如果当前有失败的升级任务在循环重试,先回滚到之前的正常版本:
helm rollback newrelic-logging 1 -n kube-system
回滚完成后,再执行上述正确的升级命令即可。
内容的提问来源于stack exchange,提问作者i'i'i'i'i'i'i'i'i'i'i'i
相关产品推荐
相关产品推荐

