我有两个入口控制器(用于公共/内部流量),我希望所有端点都使用公共入口,但/ metrics应该是内部的,都应使用同一主机。
例如
example.com/ -> public ingress
example.com/metrics -> internal ingress
这是我尝试过的:
内部进入
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
和公共入口
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
当我访问example.com/metrics时,内部入口当前被忽略(它改用公共入口)。
如果我更改内部入口以使用与公共入口控制器相同的入口控制器,并将服务端口更改为81(例如),这将提供一个错误(这是预期的),这表明两个不同的入口是正在使用。但是,一旦我使用两个不同的入口控制器,那么一个入口的规则就不会被采用。
如何配置入口以达到所需的结果?
答案 0 :(得分:1)
在运行多个ingress-nginx控制器时,只有其中一个控制器使用默认的@media screen and (min-width: 992px) {
body {
background-color: blue;
color: white;
}
}
@media screen and (max-width: 992px) {
body {
background-color: olive;
color: white;
}
}
值(请参阅--ingress-class
中的IsValid
方法)时,它才会处理未设置的类注释。该类注释成为必需。
如果将internal/ingress/annotations/class/main.go
设置为默认值--ingress-class
,则控制器将监视没有类注释的Ingress和将注释类设置为nginx
的Ingress 。为nginx
使用非默认值,以确保控制器仅满足特定的Ingress类。
在您的情况下,可以结合使用注释--ingress-class
和标志kubernetes.io/ingress.class: "EXTERNAL|INTERNAL"
来过滤nginx入口控制器应选择哪些入口规则。