Ingress Nginx Controller ingress-class-by-name 参数
今天在 ingress-nginx-controller 的 helm chart 中看到一个参数 ingressClassByName: false
, 问了一下自己这是啥意思, 不知道!
去查一下它用这个参数干了啥吧。
|
|
可以看出就是使用了 --ingress-class-by-name
参数, 果断去查一下官方文档
--ingress-class-by-name
- Define if Ingress Controller should watch for Ingress Class by Name together with Controller Class. (default false).
嗯, 当时看这句话没看懂, 现在看其实就是 按照 ingressClass 资源对象的名称决定是否要监控(处理)此类的 ingress
如果还是懵, 请继续向下看!
google + chatgpt了很久也没明白是什么意思, 网上也基本搜不到, 浪费了很长时间, 没办法了, 较上劲了, 看源码吧!
首先去看下什么时候加的这个参数, 根据提交信息找到当时的PR, 源码地址
发现了PR, 意思大概是 nginx controller 按照 ingressClass 资源对象的 .spec.controller 属性是否与controller的controller-class参数相同决定是否监控(处理)此类的 ingress, 但是有些用户希望按照ingressClass 资源对象的名称来决定。
其实核心代码就几行, 可以简单看下
总结:
没有使用 ingress-class-by-name 参数
会判断 ingressClass 对象的 spec.controller 属性是否和当前 controller 的 controller-class 参数相同。
如果相同就会处理属于这个 ingress class 的 ingress 对象, 不同则反之。
使用 ingress-class-by-name 参数
会判断 ingressClass 对象的名称是否和当前 controller 的 ingress-class 参数相同。
如果相同就会处理属于这个 ingress class 的 ingress 对象。
不同则和没有使用 ingress-class-by-name 参数的逻辑一样, 使用 controller 字段的内容判断, 是否监听这个ingressClass