-
如何查看当前已经通过Istio配置好的规则?
使用
istioctl get routerules -o yaml
或kubectl get routerules -o yaml
可以查看规则。 -
我创建了一个权重路由规则,想把流量分配到某个服务的两个版本上,但无法看到预期行为。
对于目前的Envoy sidecar实现,100次以上的请求才可能是能被观测到的理想分布。
-
创建路由规则后为什么部分服务不可用了?
这是目前Envoy sidecar实现的一个已知问题。在创建规则2秒以后,服务就应当可用。
-
可以不设置路由规则直接使用标准Ingress规格吗?
主机、TLS和基于扩展路径匹配的简单ingress规格,都可以开箱即用,而无需路由规则。但需要注意的是,ingress资源所用的路径不能包含
.
字符。举个例子,下列ingress资源匹配example.com主机上的/helloworld请求。
cat <<EOF | kubectl create -f - apiVersion: extensions/v1beta1 kind: Ingress metadata: name: simple-ingress annotations: kubernetes.io/ingress.class: istio spec: rules: - host: example.com http: paths: - path: /helloworld backend: serviceName: myservice servicePort: grpc EOF
但是下列规则并不能工作,因为在路径中使用了正则表达式,并使用了
ingress.kubernetes.io
注释。cat <<EOF | kubectl create -f - apiVersion: extensions/v1beta1 kind: Ingress metadata: name: this-will-not-work annotations: kubernetes.io/ingress.class: istio # Ingress annotations other than ingress class will not be honored ingress.kubernetes.io/rewrite-target: / spec: rules: - host: example.com http: paths: - path: /hello(.*?)world/ backend: serviceName: myservice servicePort: grpc EOF