使用Istio入口和路由规则的多个前端

时间:2018-03-09 14:33:20

标签: kubernetes istio kubernetes-ingress

是否可以使用路线规则进行流量路由,如下图所示?流量路由需要在流量进入群集后立即发生。

enter image description here

我们一直在摆弄他们,但是一旦我们有两条路线规则并且在其中一条规则中使用了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进行设置吗?

1 个答案:

答案 0 :(得分:1)

更新:似乎Kubernetes Ingress不支持正则表达式,请参阅https://github.com/kubernetes/ingress-nginx/issues/1360所以下面的答案是行不通的。

我会创建三种不同的服务:productssettingscustomers并使用Kubernetes Ingress fanout。我会使用你的正则表达式的路径。我会首先尝试使用普通的Kubernetes Ingress,不需要kubernetes.io/ingress.class: "istio"注释。如果它可以工作,我会添加Istio注释并验证它也可以作为Istio Ingress。