xbf*_*516 6 kubernetes kubernetes-ingress nginx-ingress
我有两个入口控制器(用于公共/内部流量),我希望所有端点都使用公共入口,但 /metrics 除外,它应该是内部的,全部使用同一主机。
例如
example.com/ -> public ingress
example.com/metrics -> internal ingress
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
内部入口
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-metrics-ingress
annotations:
kubernetes.io/ingress.class: ingress-internal
spec:
rules:
- host: example.com
http:
paths:
- path: /metrics
backend:
serviceName: example-servicename
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
和公众进入
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: example.com
http:
paths:
- path:
backend:
serviceName: example-servicename
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
当我访问 example.com/metrics 时,当前会忽略内部入口(它使用公共入口)。
如果我将内部入口更改为使用与公共入口相同的入口控制器,并将服务端口更改为 81(作为示例),则会出现错误(这是预期的),这表明正在使用两个不同的入口。然而,一旦我使用两个不同的入口控制器,那么一个入口的规则就不会被采用。
如何配置我的入口以达到我想要的结果?
当运行多个 ingress-nginx 控制器时,如果其中一个控制器使用默认 --ingress-class
值(请参阅 IsValid
中的方法 internal/ingress/annotations/class/main.go
),它将仅处理未设置的类注释,否则需要类注释。
如果 --ingress-class
设置为默认值 nginx
,控制器将监控没有类注释的 Ingress 和 注释类设置为 的 Ingress nginx
。使用非默认值 --ingress-class
, 以确保控制器仅满足特定类别的 Ingresses。
kubernetes.io/ingress.class: "EXTERNAL|INTERNAL"
在您的情况下,使用注释和标志的组合--ingress-class=EXTERNAL|INTERNAL
允许您过滤 nginx 入口控制器应选择哪些入口规则。
看一下:multiple-ingress、ingress-nginx-traffic。
归档时间: |
|
查看次数: |
12692 次 |
最近记录: |