强文本i安装了一个带有argocd的kubernetes集群,并根据https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/ -> kubernetes/ ingress nginx配置了argocd入口。
但是,除非我设置了
kubernetes.io/ingress.class: nginx至
kubernetes.io/ingress.class: private更换前的ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argocd-server-ingress
namespace: argocd
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
tls:
- hosts:
- argocd.my.example.domain
secretName: argocd-int
rules:
- host: argocd.my.example.domain
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: argocd-server
port:
number: 443我对库伯内特斯相当陌生,所以我想知道这两者之间有什么区别?当我将ingress.yaml与另一个项目进行比较时,我碰巧发现了这种差异,但没有找到任何解释。
发布于 2022-08-26 11:32:37
kubernetes.io/ingress.class主要用于将入口指向特定的入口控制器。
很容易理解,如果您运行的是像Nginx这样的多个入侵控制器,而另一个是在单个K8s集群中运行的Apache。
安装入口控制器时,有一个字段可以设置类的名称,该字段在 ingress 中进一步用作注释kubernetes.io/ingress.class: private,以便入口由特定的入口控制器(后端)管理,并遵循规则集。
入侵级
插件可以由不同的控制器实现,通常具有不同的配置。每个宏都应该指定一个类,它是对包含额外配置的IngressClass资源的引用,包括实现该类的控制器的名称。
阅读更多关于入口类的信息:https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class
场景
人们运行具有类名nginx-internal和 Nginx 的多个nginx入口控制器,从而创建入口,通过指定类到入口规则来转发和管理集群中的流量路由。
Nginx-internal类有一个示例规则来附加一个标头,如果流量通过该类入口流。
例如,考虑一下Nginx类的公共用途,这样它将允许后端或有限的头的所有标题,但是它检查Auth,只允许使用这个类的几个白名单中的IP的流量。
因此,使用ingressclass,您可以运行由多个入口控制器支持的具有不同规则集的多个入口服务器。
如果有人想了解更多关于如何更新类名和运行多个入口控制器的信息,请访问:https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/
https://stackoverflow.com/questions/73500300
复制相似问题