Kubernetes 使用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"

是否可以使用下图所述的路由规则进行交通路由?流量路由需要在流量进入集群后立即进行

我们一直在摆弄它们,但一旦我们有了两条路由规则并在其中一条规则中使用了uri正则表达式,我们就会遇到麻烦

我们的想法是这样配置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入口发生了什么。似乎正则表达式不适用于入口,将更新答案。