我的 Kubernetes 入口有以下内容:
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: alb
...
...
# -- Defines which ingress controller will implement the resource
ingressClassName: ""
我对“kubernetes.io/ingress.class”和“ingressClassName”之间的区别有点困惑。
我相信“kubernetes.io/ingress.class”需要与 AWS ALB 入口控制器中定义的 ingressClass 匹配。
但是,那么我对“ingressClassName”的作用感到困惑吗?因为这似乎是同一件事。
如有任何澄清,我们将不胜感激。
实际上,两者指的是同一件事,但
kubernetes.io/ingress.class
从 Kubernetes v1.22+ 开始已弃用。并且ingressClassName
是在1.18
中引入的,所以如果您使用的是更高版本,您可以ingressClassName
在 Kubernetes 1.18 中添加
资源和IngressClass
字段之前,Ingress 类是通过 Ingress 上的ingressClassName
注解来指定的。该注释从未正式定义,但受到 Ingress 控制器的广泛支持。kubernetes.io/ingress.class
Ingresses 上较新的
字段是该注释的替代品,但不是直接等效的。虽然注释通常用于引用应实现 Ingress 的 Ingress 控制器的名称,该字段是对包含其他 Ingress 配置的 IngressClass 资源的引用,ingressClassName
你的例子是
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: alb
其等价值为
className: "nginx"
ingress:
enabled: true
className: "alb" -> ingressClassName
如果你检查
ingress
模板,就会像这样
ingressClassName: {{ .Values.ingress.className }}