Kubernetes 使用Istio入口和路由规则的多个前端
是否可以使用下图所述的路由规则进行交通路由?流量路由需要在流量进入集群后立即进行 我们一直在摆弄它们,但一旦我们有了两条路由规则并在其中一条规则中使用了uri正则表达式,我们就会遇到麻烦 我们的想法是这样配置istio入口Kubernetes 使用Istio入口和路由规则的多个前端,kubernetes,istio,kubernetes-ingress,Kubernetes,Istio,Kubernetes Ingress,是否可以使用下图所述的路由规则进行交通路由?流量路由需要在流量进入集群后立即进行 我们一直在摆弄它们,但一旦我们有了两条路由规则并在其中一条规则中使用了uri正则表达式,我们就会遇到麻烦 我们的想法是这样配置istio入口 # Ingress apiVersion: extensions/v1beta1 kind: Ingress metadata: name: gateway annotations: kubernetes.io/ingress.class: "istio"
# 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是否可以进行此设置?更新:Kubernetes Ingress似乎不支持正则表达式,请参阅所以下面的答案不起作用。
我将创建三种不同的服务:
产品
、设置
和客户
,并使用Kubernetes Ingress。我会用你的正则表达式来表示路径。我将首先尝试使用一个普通的Kubernetes Ingress,而不使用Kubernetes.io/Ingress.class:“istio”
注释。如果可以,我将添加Istio注释并验证它是否也可以作为Istio入口。可以将Istio入口
与路由规则
结合使用。此配置是否存在任何问题?在我看来是有效的。一个问题是uri正则表达式route roule不起作用。我只能得到一个前缀uri规则来工作,这并不能解决我们的问题,即在此之前有project key url参数。很遗憾,您在浏览器中尝试的uri是什么,结果是什么?当我转到/foo/products时,您还可以查看入口吊舱日志,我得到一个404。[2018-03-09T15:38:02.936Z]“GET/foo/products HTTP/1.1”404…是的,这也是我们一直在考虑的一个选项,但我们找不到任何关于使用正则表达式路径规则的文档。嗯,我搜索了它,它可能不起作用-这里有一个针对Kubernetes的问题。我需要检查Istio入口发生了什么。似乎正则表达式不适用于入口,将更新答案。