Kubernetes 入口“kubernetes.io/ingress.class”与“ingressClassName”

问题描述 投票:0回答:2

我的 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 kubernetes-ingress
2个回答
7
投票

实际上,两者指的是同一件事,但

kubernetes.io/ingress.class
从 Kubernetes v1.22+ 开始已弃用。并且
ingressClassName
是在
1.18
中引入的,所以如果您使用的是更高版本,您可以
ingressClassName

在 Kubernetes 1.18 中添加

IngressClass
资源和
ingressClassName
字段之前,Ingress 类是通过 Ingress 上的
kubernetes.io/ingress.class
注解来指定的。该注释从未正式定义,但受到 Ingress 控制器的广泛支持。

Ingresses 上较新的

ingressClassName
字段是该注释的替代品,但不是直接等效的。虽然注释通常用于引用应实现 Ingress 的 Ingress 控制器的名称,该字段是对包含其他 Ingress 配置的 IngressClass 资源的引用

ingress-deprecated-annotation

你的例子是

  ingress:
    enabled: true
    annotations: 
      kubernetes.io/ingress.class: alb

其等价值为

className: "nginx"

  ingress:
    enabled: true
    className: "alb" -> ingressClassName

如果你检查

ingress
模板,就会像这样

  ingressClassName: {{ .Values.ingress.className }}

0
投票

kubernetes.io/ingress.class
已弃用,但仍在 GKE 中使用

© www.soinside.com 2019 - 2024. All rights reserved.