【发布时间】:2018-03-09 14:33:20
【问题描述】:
是否可以使用下图描述的路由规则进行流量路由?流量路由需要在流量进入集群后立即进行。
我们一直在摆弄它们,但一旦我们有两个路由规则并在其中一个规则中使用了 uri 正则表达式,我们总是会碰壁。
我们的想法是像这样配置 istio ingress
# Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gateway
annotations:
kubernetes.io/ingress.class: "istio"
spec:
backend:
serviceName: frontend
servicePort: 8080
然后根据uri头配置分流的路由规则。以下是我们如何配置产品路由规则的示例:
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
name: products-rule
spec:
destination:
name: frontend
precedence: 2
match:
request:
headers:
uri:
regex: "^/(?:.*?)/?products(?:/.*)?$"
route:
- labels:
fe-app: products
这种设置可以用 istio 实现吗?
【问题讨论】:
-
可以将
istio-ingress与route-rule结合使用。您在使用此配置时遇到任何问题吗?在我看来是有效的。 -
一个问题是 uri 正则表达式路由规则不起作用。我只能让前缀 uri 规则起作用,这并不能解决我们在此之前拥有项目密钥 url 参数的问题。
-
您在浏览器中尝试的 URI 是什么,结果是什么?您还可以查看 ingress pod 日志
-
当我转到 /foo/products 时,我得到一个 404。[2018-03-09T15:38:02.936Z] "GET /foo/products HTTP/1.1" 404 ...
标签: kubernetes istio kubernetes-ingress