K8s:GKE中的多个nginx-ingress-controller入口规则

时间:2019-04-03 12:03:57

标签: nginx kubernetes nginx-ingress

我有一个域*.foo.com的全部进入规则,然后我有一个域a.foo.com的特定规则。根据文档,a.foo.com的入口规则必须优先于带有通配符的规则(因为比通配符更好的匹配)。但是,这没有发生。如何明确设置优先级?我在做什么错了?

这是我的通用入口规则:

$ kubectl describe ing foo
Name:             foo
Namespace:        foo
Address:          x.x.x.x
Default backend:  default-http-backend:80 (x.x.x.x:8080)
TLS:
  foo.com terminates *.foo.com
Rules:
  Host             Path  Backends
  ----             ----  --------
  *.foo.com
                   /   foo:8888 (<none>)

这是特定于域的规则:

$ kubectl describe ing foo-a
Name:             foo-a
Namespace:        foo
Address:          x.x.x.x
Default backend:  default-http-backend:80 (x.x.x.x:8080)
TLS:
  foo.com terminates a.foo.com
Rules:
  Host                                Path  Backends
  ----                                ----  --------
  a.foo.com
                                      /hello   foo-a:8080 (<none>)

1 个答案:

答案 0 :(得分:1)

您将需要将每个nginx-ingress控制器配置为具有不同的ingress-class名称。然后在入口定义中,应指定kubernetes.io/ingress.class: "my-ingress"指向要用于该特定入口的入口控制器。

设置详细信息包含在[nginx-ingress文档]中。(https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/

希望这会有所帮助!