是否可以使用路线规则进行流量路由,如下图所示?流量路由需要在流量进入群集后立即发生。
我们一直在摆弄他们,但是一旦我们有两条路线规则并且在其中一条规则中使用了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进行设置吗?
答案 0 :(得分:1)
更新:似乎Kubernetes Ingress不支持正则表达式,请参阅https://github.com/kubernetes/ingress-nginx/issues/1360。 所以下面的答案是行不通的。
我会创建三种不同的服务:products
,settings
和customers
并使用Kubernetes Ingress fanout。我会使用你的正则表达式的路径。我会首先尝试使用普通的Kubernetes Ingress,不需要kubernetes.io/ingress.class: "istio"
注释。如果它可以工作,我会添加Istio注释并验证它也可以作为Istio Ingress。