如何在Kubernetes中使用ingress-nginx chart部署多个Nginx Ingress控制器
报错原因
新版官方ingress-nginx chart的配置参数与废弃的stable/nginx-ingress存在差异,你的操作存在两个核心问题:
- 命令参数语法错误:你编写的安装命令中引号位置错误,将两个
--set参数包裹在同一对引号内,导致参数无法被正常解析 - IngressClass资源冲突:IngressClass是集群全局资源,你两次安装都使用了默认的IngressClass配置,第一个实例已经创建了名为
nginx的IngressClass,第二个实例尝试创建同名资源触发所有权校验报错
正确部署方式
每个Ingress控制器实例需要配置独立的IngressClass名称,使用对应新版参数执行安装即可:
- 第一个实例(first-nginx命名空间)执行命令:
helm install nginx-ingress ingress-nginx/ingress-nginx \ --namespace first-nginx \ --set controller.ingressClass.name=nginx-first \ --set controller.ingressClassResource.name=nginx-first \ --set controller.service.loadBalancerIP={first-IP-address}
- 第二个实例(second-nginx命名空间)执行命令:
helm install nginx-ingress-2 ingress-nginx/ingress-nginx \ --namespace second-nginx \ --set controller.ingressClass.name=nginx-second \ --set controller.ingressClassResource.name=nginx-second \ --set controller.service.loadBalancerIP={second-IP-address}
后续使用说明
创建Ingress资源时,需要在配置中指定ingressClassName字段为对应控制器的IngressClass名称,即可将Ingress规则绑定到对应实例,例如要绑定第一个控制器,Ingress配置添加:
spec: ingressClassName: nginx-first # 其余Ingress配置
内容的提问来源于stack exchange,提问作者floormind
相关产品推荐
相关产品推荐

