环境:

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运行起来
    在这里插入图片描述
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐