AWS ALB Ingress能否指向不同命名空间的后端服务
配置有效性判定
这份Ingress配置无法正常生效,存在多处不符合Kubernetes Ingress原生规范、AWS Load Balancer Controller适配要求的问题,具体问题明细:
- API版本不被当前控制器支持
配置使用的extensions/v1beta1属于已被Kubernetes彻底弃用的Ingress API版本,AWS Load Balancer Controller从v2.0大版本开始就停止对该beta版本API的适配,当前所有正式发布的控制器版本,仅会处理networking.k8s.io/v1稳定版的Ingress资源,旧API提交的资源会被控制器直接跳过,不会生成任何ALB相关的云资源配置。 - 跨命名空间引用服务的写法不符合原生规范
Kubernetes原生Ingress spec定义的serviceName字段,检索后端服务时默认仅从Ingress资源自身所在的命名空间(本例中为default)匹配对应名称的Service,不会识别kubernetes-dashboard.kubernetes-dashboard、otherservice.otherns这类带命名空间后缀的“伪全限定名”写法,控制器会在校验阶段直接抛出“后端服务不存在”的错误。 - 路径转发规则配置无法被ALB识别
配置里写的path: /*不符合ALB控制器的路径匹配规则,根路径转发场景下正确的路径值应为/,同时在新版Ingress spec里必须为每个path显式声明pathType: Prefix,否则规则无法正确下发到ALB的监听器配置中。
如需实现双域名转发到对应命名空间服务的需求,需要对配置做三类调整:
- 将apiVersion替换为
networking.k8s.io/v1,适配当前控制器的API要求- 在IngressClassParams里提前配置可信任的跨命名空间服务白名单,再通过新版Ingress backend语法引用跨命名空间的Service资源,不能靠在serviceName字段拼接命名空间实现跨ns查找
- 将所有path配置从
/*调整为/,补充pathType: Prefix声明
内容的提问来源于stack exchange,提问作者Kay
相关产品推荐
相关产品推荐

