Kubernetes入口服务注解

vx6bjr1n  于 2022-09-20  发布在  Kubernetes
关注(0)|答案(2)|浏览(210)

我正在按照一些K8S文档设置入口服务,但我无法理解以下注解:

kubernetes.ip/ingress.class:

nginx.ingress.kubernetes.io/rewrite-target:

你知道这些注解是做什么用的吗?

先谢谢你。

plupiseo

plupiseo1#

1.正式弃用kubernetes.io/ingress.class注解:
在Kubernetes 1.18中添加IngressClass资源之前,通常使用Inress上的kubernetes.io/ingress.class注解来指定类似的Inress类概念。尽管该注解从未正式定义过,但它得到了Inress控制器的广泛支持,现在应该被认为是正式弃用的。

而应使用ingressClassName

Ingresses上较新的ingressClassName字段是该注解的替代,但不是直接等效项。虽然注解通常用于引用应该实现Inress的入口控制器的名称,但该字段是对IngressClass资源的引用,该IngressClass资源包含附加的入口配置,包括入口控制器的名称。

1.重写注解如下:
在某些场景中,后端服务中公开的URL与Inress规则中指定的路径不同。在不重写的情况下,任何请求都将返回404。将注解nginx.ingress.kubernetes.io/rewrite-target设置为服务预期的路径。

如果应用程序根位于不同的路径中并且需要重定向,请设置注解nginx.ingress.kubernetes.io/app-root以重定向对/的请求。

有关更详细的示例,我强烈建议您查看source。它确切地展示了重写是如何工作的。

tzdcorbm

tzdcorbm2#

由于Kubernetes1.18+,kubernetes.io/ingress.class注解已弃用。您必须创建IngressClass,如下所示:

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: alb-ingress-class
spec:
  controller: ingress.k8s.aws/alb

然后在Ingress声明中引用它:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: ...
  name: my-fabulous-ingress
  annotations:
    ...
  labels:
    ...
spec:
  ingressClassName: "alb-ingress-class"
  rules:
    ...

重要提示:请务必在**Ingress之前创建IngressClass**(因为它被Ingress引用)

注意:如果在同一清单中,将IngressClass块放在Ingress块之上就足够了。

更多信息:
https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/
https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/guide/ingress/ingress_class/

相关问题