小编xbf*_*516的帖子

使用同一主机的多个入口控制器

我有两个入口控制器(用于公共/内部流量),我希望所有端点都使用公共入口,但 /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(作为示例),则会出现错误(这是预期的),这表明正在使用两个不同的入口。然而,一旦我使用两个不同的入口控制器,那么一个入口的规则就不会被采用。

如何配置我的入口以达到我想要的结果?

kubernetes kubernetes-ingress nginx-ingress

6
推荐指数
1
解决办法
1万
查看次数