使用Helm部署Ingress Nginx失败:Webhook服务找不到求助
解决Helm依赖部署ingress-nginx时的Webhook服务找不到问题
方案一:移除服务名的aloco前缀
Helm默认会给依赖Chart的资源添加主Chart名称作为前缀,可通过配置依赖Chart的fullnameOverride参数覆盖默认命名,让ingress-nginx的服务名称恢复为原生名称:
方法1:修改主Chart的values.yaml
在主Chart的values.yaml中添加以下配置:
ingress-nginx: # 覆盖控制器服务的全名 fullnameOverride: "ingress-nginx-controller" admissionWebhooks: patch: # 覆盖准入服务的全名 fullnameOverride: "ingress-nginx-controller-admission"
之后重新执行Helm升级:
helm upgrade --install aloco .
方法2:部署时通过--set参数指定
无需修改配置文件,直接在Helm命令中传入参数:
helm upgrade --install aloco . \ --set ingress-nginx.fullnameOverride=ingress-nginx-controller \ --set ingress-nginx.admissionWebhooks.patch.fullnameOverride=ingress-nginx-controller-admission
执行后,服务名称会变为ingress-nginx-controller和ingress-nginx-controller-admission,与Webhook期望的地址匹配。
方案二:修改Webhook配置指向带前缀的服务
直接修改ingress-nginx创建的ValidatingWebhookConfiguration,让它指向带aloco前缀的准入服务:
- 编辑Webhook配置:
kubectl edit validatingwebhookconfigurations validate.nginx.ingress.kubernetes.io
- 找到
clientConfig.service字段,修改name和namespace为实际值:
clientConfig: service: name: aloco-ingress-nginx-controller-admission namespace: default path: /networking/v1/ingresses port: 443
- 保存退出后,Webhook会自动使用新的服务地址,此时可重新执行Helm升级。
两种方案对比
- 方案一:符合Helm依赖管理规范,后续升级不会再次出现同名问题,推荐使用。
- 方案二:属于临时修改,若后续Helm升级ingress-nginx,Webhook配置可能被覆盖,需重新调整。
内容的提问来源于stack exchange,提问作者Vitalii
相关产品推荐
相关产品推荐

