k8s helm ingress-nginx Error: template: ingress-nginx/templates/controller-role “update-status“
k8s helm ingress-nginx 报错信息:Error: template: ingress-nginx/templates/controller-role.yaml:48:9: executing "ingress-nginx/templates/controller-role.yaml" at : error calling ne: invalid type fo
·
环境:
k8s,使用helm包管理器安装ingress-nginx时,安装文件出错
- helm 版本:Version:“v3.2.3”
- k8s 版本:Kubernetes v1.23.6
- ingress-nginx
- chart version:4.9.0
- app version:1.9.5
问题描述
前面都按网上的教程做,没有什么大问题
最后一步执行安装命令
helm install ingress-nginx ./ingress-nginx -n ingress-nginx
命令执行失败,报错
Error: template: ingress-nginx/templates/controller-role.yaml:48:9:
executing "ingress-nginx/templates/controller-role.yaml" at
<ne (index .Values.controller.extraArgs "update-status") "false">: error calling ne: invalid type for comparison
原因分析:
问题可能出现在对.Values.controller.extraArgs[“update-status”] 的比较上,其中 .Values.controller.extraArgs 是一个值的集合,而 “update-status” 则是要比较的键。而比较的目的是将其与字符串 “false” 进行比较。
简单地说,就是value.yaml文件中有一个值缺少或者设置不对,.Values.controller.extraArgs[“update-status”] ,就是这个
解决方案:
前言:我在网上貌似找不到相应的解答,所以我也就硬着头皮改value.yaml,下面是我尝试的方法,而且ingress-nginx确实成功运行起来了,但我不确定我的修改到底会造成什么后果,我暂时没搞懂背后的具体原理,仅作为参考
- 首先找到value.yaml文件,value.yaml就在 ingress-nginx 的包中
- 编辑value.yaml,根据报错信息(Values.controller.extraArgs[“update-status”])与yaml文件的结构找到位置 ,即value文件 controller下的extraArgs的位置
小技巧,先使用编辑器查找功能找到 controller,再使用查找功能找到 extraArgs
# 如果事先没有修改value.yaml文件
extraArgs: {}
我尝试将其修改为如下,详情看上图
extraArgs:
update-status: "true" # 有兴趣的也可以改成false试一下,我就没再实验的
- 至于为什么这样修改,我的想法是,报错信息说这里的 update-status 与某个值比较失败(invalid type for comparison),但文件里面又没有这个值,我又找不到别的解决方法,我干脆就直接在这里加上一个值 update-status: “true”,再次执行安装指令
helm install ingress-nginx ./ingress-nginx -n ingress-nginx
- 安装成功
- 等待一段时间,等待ingress-nginx运行起来
更多推荐
已为社区贡献1条内容
所有评论(0)